@customize-agent/server 4.59.2 → 4.60.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 (235) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +52 -31
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +5 -2
  5. package/.next/routes-manifest.json +22 -0
  6. package/.next/server/chunks/1001.js +2 -56
  7. package/.next/server/chunks/1243.js +3 -0
  8. package/.next/server/chunks/1928.js +1 -1
  9. package/.next/server/chunks/1936.js +2 -2
  10. package/.next/server/chunks/2328.js +6 -0
  11. package/.next/server/chunks/2434.js +4 -4
  12. package/.next/server/chunks/3806.js +1 -0
  13. package/.next/server/chunks/4974.js +2 -0
  14. package/.next/server/chunks/5304.js +2 -0
  15. package/.next/server/chunks/5746.js +5 -0
  16. package/.next/server/chunks/6321.js +1 -3
  17. package/.next/server/chunks/7848.js +141 -0
  18. package/.next/server/chunks/8204.js +1 -1
  19. package/.next/server/chunks/9666.js +141 -0
  20. package/.next/server/instrumentation.js +1 -0
  21. package/.next/server/instrumentation.js.nft.json +1 -0
  22. package/.next/server/middleware-build-manifest.js +1 -1
  23. package/.next/server/pages/404.html +1 -1
  24. package/.next/server/pages/500.html +1 -1
  25. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  26. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  27. package/.next/server/pages/api/assets/generated.js +1 -1
  28. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  29. package/.next/server/pages/api/config/embedding/healthCheck.js +2 -1
  30. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  31. package/.next/server/pages/api/config/embedding.js +2 -1
  32. package/.next/server/pages/api/config/embedding.js.nft.json +1 -1
  33. package/.next/server/pages/api/config/healthCheck.js +2 -2
  34. package/.next/server/pages/api/config/healthCheck.js.nft.json +1 -1
  35. package/.next/server/pages/api/config/models.js +2 -1
  36. package/.next/server/pages/api/config/models.js.nft.json +1 -1
  37. package/.next/server/pages/api/config/providers/[provider].js +2 -1
  38. package/.next/server/pages/api/config/providers/[provider].js.nft.json +1 -1
  39. package/.next/server/pages/api/config/providers.js +2 -2
  40. package/.next/server/pages/api/config/providers.js.nft.json +1 -1
  41. package/.next/server/pages/api/config/web-access.js +2 -1
  42. package/.next/server/pages/api/config/web-access.js.nft.json +1 -1
  43. package/.next/server/pages/api/documents/canvas/[id].js +1 -2
  44. package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -1
  45. package/.next/server/pages/api/documents/export.js +11 -9
  46. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  47. package/.next/server/pages/api/documents/generate/preview.js +1 -2
  48. package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -1
  49. package/.next/server/pages/api/documents/generate.js +1 -2
  50. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  51. package/.next/server/pages/api/documents/generated/[id]/events.js +2 -3
  52. package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -1
  53. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js +1 -1
  54. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -1
  55. package/.next/server/pages/api/documents/generated/[id]/instruction.js +2 -0
  56. package/.next/server/pages/api/documents/generated/[id]/instruction.js.nft.json +1 -0
  57. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js +1 -2
  58. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -1
  59. package/.next/server/pages/api/documents/generated/[id]/nodes.js +1 -2
  60. package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -1
  61. package/.next/server/pages/api/documents/generated/[id]/pause.js +1 -2
  62. package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -1
  63. package/.next/server/pages/api/documents/generated/[id]/preview.js +1 -2
  64. package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -1
  65. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +1 -1
  66. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -1
  67. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js +1 -1
  68. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -1
  69. package/.next/server/pages/api/documents/generated/[id]/repair.js +1 -1
  70. package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -1
  71. package/.next/server/pages/api/documents/generated/[id]/report.js +1 -0
  72. package/.next/server/pages/api/documents/generated/[id]/report.js.nft.json +1 -0
  73. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js +1 -2
  74. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -1
  75. package/.next/server/pages/api/documents/generated/[id].js +1 -2
  76. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  77. package/.next/server/pages/api/documents/generated.js +1 -1
  78. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  79. package/.next/server/pages/api/health.js +1 -1
  80. package/.next/server/pages/api/jobs/[id].js +2 -5
  81. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  82. package/.next/server/pages/api/kb/categories.js +1 -4
  83. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  84. package/.next/server/pages/api/kb/duplicates.js +1 -4
  85. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  86. package/.next/server/pages/api/kb/features.js +2 -1
  87. package/.next/server/pages/api/kb/features.js.nft.json +1 -1
  88. package/.next/server/pages/api/kb/files/detail.js +1 -6
  89. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  90. package/.next/server/pages/api/kb/files/export.js +1 -5
  91. package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
  92. package/.next/server/pages/api/kb/files/open.js +1 -4
  93. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  94. package/.next/server/pages/api/kb/files/preview-pdf-page.js +1 -4
  95. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  96. package/.next/server/pages/api/kb/files/reindex.js +2 -1
  97. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  98. package/.next/server/pages/api/kb/files/search.js +1 -5
  99. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  100. package/.next/server/pages/api/kb/files/source-preview.js +1 -0
  101. package/.next/server/pages/api/kb/files/source-preview.js.nft.json +1 -0
  102. package/.next/server/pages/api/kb/files.js +2 -6
  103. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  104. package/.next/server/pages/api/kb/ignore.js +1 -4
  105. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  106. package/.next/server/pages/api/kb/material-groups.js +1 -2
  107. package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -1
  108. package/.next/server/pages/api/kb/operations.js +2 -5
  109. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  110. package/.next/server/pages/api/kb/reindex.js +2 -1
  111. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  112. package/.next/server/pages/api/kb/stats.js +1 -4
  113. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  114. package/.next/server/pages/api/kb/tags.js +1 -4
  115. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  116. package/.next/server/pages/api/kb/upload/complete.js +2 -1
  117. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  118. package/.next/server/pages/api/kb/upload.js +2 -1
  119. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  120. package/.next/server/pages/api/prompt/chat.js +5 -11
  121. package/.next/server/pages/api/prompt/chat.js.nft.json +1 -1
  122. package/.next/server/pages/api/prompt.js +2 -1
  123. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  124. package/.next/server/pages/api/skills/[id].js +1 -1
  125. package/.next/server/pages/api/skills/[id].js.nft.json +1 -1
  126. package/.next/server/pages/api/skills/validate.js +1 -1
  127. package/.next/server/pages/api/skills/validate.js.nft.json +1 -1
  128. package/.next/server/pages/api/skills.js +1 -1
  129. package/.next/server/pages/api/skills.js.nft.json +1 -1
  130. package/.next/server/pages/api/system/data-health.js +2 -2
  131. package/.next/server/pages/api/system/data-health.js.nft.json +1 -1
  132. package/.next/server/pages/api/system/logs.js +2 -2
  133. package/.next/server/pages/api/system/logs.js.nft.json +1 -1
  134. package/.next/server/pages/api/system/reset.js +1 -0
  135. package/.next/server/pages/api/{kb/intelligence.js.nft.json → system/reset.js.nft.json} +1 -1
  136. package/.next/server/pages/api/system/stats.js +2 -1
  137. package/.next/server/pages/api/system/stats.js.nft.json +1 -1
  138. package/.next/server/pages/canvas/[id].html +1 -1
  139. package/.next/server/pages/canvas.html +1 -1
  140. package/.next/server/pages/documents.html +1 -1
  141. package/.next/server/pages/guide.html +1 -1
  142. package/.next/server/pages/index.html +1 -1
  143. package/.next/server/pages/knowledge/file-detail.html +1 -1
  144. package/.next/server/pages/knowledge/files.html +1 -1
  145. package/.next/server/pages/knowledge/manage.html +1 -1
  146. package/.next/server/pages/knowledge/source-preview.html +1 -0
  147. package/.next/server/pages/knowledge/source-preview.js.nft.json +1 -0
  148. package/.next/server/pages/knowledge.html +1 -1
  149. package/.next/server/pages/models.html +1 -1
  150. package/.next/server/pages/overview.html +1 -1
  151. package/.next/server/pages/prompt.html +1 -1
  152. package/.next/server/pages/settings.html +1 -1
  153. package/.next/server/pages/skills.html +1 -1
  154. package/.next/server/pages/system/logs.html +1 -1
  155. package/.next/server/pages-manifest.json +36 -37
  156. package/.next/static/77d815e00c04639e13f00085615df788b0e214c81a14c8f0ba89cbbe491ff7c3/_buildManifest.js +1 -0
  157. package/.next/static/chunks/278-31fbe7e1b733a9b7.js +1 -0
  158. package/.next/static/chunks/{426-90638907336adcb8.js → 426-22c4cedb04b0d45d.js} +1 -1
  159. package/.next/static/chunks/511-75b881093a3e908b.js +1 -0
  160. package/.next/static/chunks/530-d9f0418ec7ab040f.js +1 -0
  161. package/.next/static/chunks/665-9607db8f8b43e52e.js +1 -0
  162. package/.next/static/chunks/795-48065c56c3b80339.js +1 -0
  163. package/.next/static/chunks/823-ff35afb174f7998b.js +1 -0
  164. package/.next/static/chunks/835-d29f4cc7a3679606.js +1 -0
  165. package/.next/static/chunks/864-b06700e1a4e573f2.js +6 -0
  166. package/.next/static/chunks/873-16d052cdd3768758.js +1 -0
  167. package/.next/static/chunks/964-7e9fe2d80a53aeee.js +78 -0
  168. package/.next/static/chunks/992-8032f477230baaaf.js +1 -0
  169. package/.next/static/chunks/pages/{_app-c560816f0a8a0815.js → _app-c11b5e8072f49bcc.js} +20 -20
  170. package/.next/static/chunks/pages/canvas/[id]-37bee3f7b816ed18.js +1 -0
  171. package/.next/static/chunks/pages/canvas-97971ae159337676.js +1 -0
  172. package/.next/static/chunks/pages/guide-a8eecc6c02b5bb9c.js +1 -0
  173. package/.next/static/chunks/pages/knowledge/file-detail-f89e6044f752277c.js +1 -0
  174. package/.next/static/chunks/pages/knowledge/source-preview-4a303fadb123430a.js +1 -0
  175. package/.next/static/chunks/pages/knowledge-a65ec687334ffed0.js +1 -0
  176. package/.next/static/chunks/pages/models-3e486e49cca91e5a.js +1 -0
  177. package/.next/static/chunks/pages/prompt-b8af2cef904e3e19.js +1 -0
  178. package/.next/static/chunks/pages/settings-81dffd92939c1d36.js +1 -0
  179. package/.next/static/chunks/pages/skills-77ba363270239bbf.js +1 -0
  180. package/.next/static/chunks/pages/system/logs-1f54b6c8791daa77.js +1 -0
  181. package/.next/static/css/1a59bfb0aa677e69.css +1 -0
  182. package/README.md +48 -45
  183. package/messages/en-US.json +76 -65
  184. package/messages/zh-CN.json +76 -65
  185. package/next.config.ts +5 -0
  186. package/package.json +7 -9
  187. package/public/fonts/NotoSansCJKsc-Regular.otf +0 -0
  188. package/public/fonts/OFL-Noto-CJK.txt +142 -0
  189. package/public/fonts/font-manifest.json +8 -0
  190. package/scripts/build-identity.cjs +67 -0
  191. package/scripts/capture-baseline.mjs +100 -290
  192. package/scripts/check-workspace-deps.cjs +141 -0
  193. package/scripts/half-built-scan.allow.json +142 -0
  194. package/scripts/half-built-scan.baseline.json +206 -0
  195. package/scripts/half-built-scan.mjs +275 -55
  196. package/scripts/kb-fingerprint-worker.cjs +28 -0
  197. package/scripts/kb-index-worker.cjs +27 -20
  198. package/scripts/kb-worker-ipc.cjs +34 -0
  199. package/scripts/purge-next-artifacts.cjs +70 -0
  200. package/scripts/verify-next-static.js +2 -2
  201. package/.next/server/chunks/299.js +0 -50
  202. package/.next/server/chunks/4435.js +0 -350
  203. package/.next/server/chunks/6087.js +0 -3
  204. package/.next/server/pages/api/jobs.js +0 -5
  205. package/.next/server/pages/api/jobs.js.nft.json +0 -1
  206. package/.next/server/pages/api/kb/evaluate.js +0 -10
  207. package/.next/server/pages/api/kb/evaluate.js.nft.json +0 -1
  208. package/.next/server/pages/api/kb/files/tree.js +0 -5
  209. package/.next/server/pages/api/kb/files/tree.js.nft.json +0 -1
  210. package/.next/server/pages/api/kb/intelligence.js +0 -1
  211. package/.next/server/pages/api/kb/search.js +0 -4
  212. package/.next/server/pages/api/kb/search.js.nft.json +0 -1
  213. package/.next/server/pages/api/kb/upload/progress.js +0 -5
  214. package/.next/server/pages/api/kb/upload/progress.js.nft.json +0 -1
  215. package/.next/static/2MjosIoMmZUcFnY_P02ZD/_buildManifest.js +0 -1
  216. package/.next/static/chunks/243-03eba51d5d737e98.js +0 -1
  217. package/.next/static/chunks/289-136ebb30e0f6723a.js +0 -78
  218. package/.next/static/chunks/422-46f07037c58d2309.js +0 -1
  219. package/.next/static/chunks/445-d12731f107978b10.js +0 -6
  220. package/.next/static/chunks/506-93f730bc149d0dce.js +0 -1
  221. package/.next/static/chunks/530-df2ce692cf0fa512.js +0 -1
  222. package/.next/static/chunks/795-81a3e3973fc43791.js +0 -1
  223. package/.next/static/chunks/850-0f48354694fc6b3e.js +0 -1
  224. package/.next/static/chunks/pages/canvas/[id]-515edd3e72acaf82.js +0 -1
  225. package/.next/static/chunks/pages/canvas-323d44fe56d685a7.js +0 -1
  226. package/.next/static/chunks/pages/guide-7367305082617e3c.js +0 -1
  227. package/.next/static/chunks/pages/knowledge/file-detail-aee7c15541d1d130.js +0 -1
  228. package/.next/static/chunks/pages/knowledge-ca8ad5501faed486.js +0 -1
  229. package/.next/static/chunks/pages/models-8b96ba85131d5408.js +0 -1
  230. package/.next/static/chunks/pages/prompt-dd9a9f9105216e2b.js +0 -1
  231. package/.next/static/chunks/pages/settings-0a7709bf039a2a4d.js +0 -1
  232. package/.next/static/chunks/pages/skills-3d77213c3e9ef0b5.js +0 -1
  233. package/.next/static/chunks/pages/system/logs-9deb1217739490af.js +0 -1
  234. package/.next/static/css/85c434f8fd3a17ae.css +0 -1
  235. /package/.next/static/{2MjosIoMmZUcFnY_P02ZD → 77d815e00c04639e13f00085615df788b0e214c81a14c8f0ba89cbbe491ff7c3}/_ssgManifest.js +0 -0
@@ -1,56 +1,2 @@
1
- "use strict";exports.id=1001,exports.ids=[1001],exports.modules={18274:(a,b,c)=>{c.d(b,{AM:()=>e,LT:()=>i,Rz:()=>n,WL:()=>o,_W:()=>d,aX:()=>h,c5:()=>m,s2:()=>j,sv:()=>f,yw:()=>g});let d=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m2|m3|m³|m²|㎡|平方米|m|km|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)(?![\w\u00B2\u00B3])|(?<![\d.])\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu,e=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|φ\s*\d+|Φ\s*\d+|GB\s*\d+|JGJ\s*\d+/iu,f=/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|IEC|台|套|个|项|批|次|份|人|㎡|日历天|万元|元|型号|规格|数量|单位/iu,g=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+|\d+\s*[×xX]\s*\d+/iu,h=/\d+(?:\.\d+)?\s*(?:m³|m3|m²|㎡|mm|cm|m\/s|m|km|MPa|kN|kN\/m²|kPa|℃|%|d|h|min|MΩ|t|次\/天)|[MC]\d{1,3}(?:\.\d+)?|[<>≤≥]\s*\d+(?:\.\d+)?\s*(?:mm|MPa|%|d)|间距[≤<]?\s*\d+|偏差[≤<]?\s*\d+|坡度\s*\d+(?:\.\d+)?(?::\d+|%)|压实度\s*[≥>]?\s*\d+|坍落度|闭水试验|静载试验|拉拔试验|拉拔检测|探伤|试验压力|锚固长度|搭接长度|保护层厚度|养护时间|饱满度|垂直度|平整度|含水率|(?:地径|胸径|苗高|蓬径|冠丛高|株高|株距|行距|种植深度|覆土厚度|土球直径)\s*[≥≤<>=]?\s*[DΦφd]?\s*\d+(?:\.\d+)?|(?:养护期|养护周期)\s*(?:为|不少于|不低于)?\s*[一二三四五六七八九十两\d]+(?:个)?(?:月|年)|(?:成活率|保存率|苗木覆盖率)\s*[≥≤<>=]?\s*\d+(?:\.\d+)?\s*%|(?:防护挑网|安全网|防护网|围挡|警戒(?:区|线|距离)|防护栏杆).{0,12}(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m|(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m.{0,12}(?:防护挑网|安全网|防护网|围挡|警戒|防护栏杆)/giu,i=/\d[A-Z][A-Z0-9a-z]*\b|[A-Z]{1,2}\d{2,3}\b|\d+(?:\.\d+)?\s*(?:kW|kVA|KVA|KW)\b|IP\d{2}/gu,j=/\d+(?:\.\d+)?\s*(?:m²|㎡|m3|m³|mm|cm|m|km|kg|t|MPa|kPa|℃|%|日历天|天|层|台|套|个|项|次|份|人|小时)/giu,k="mm|cm|m2|m3|m\xb3|m\xb2|㎡|平方米|m|km|kg|g|t|吨|l|ml|mpa|kpa|kn|kw|kv|℃|%|台|套|个|项|批|次|份|人|h|d|min|天|周|月|年|万元|元",l=`(?:[1-9]\\d*\\.\\d+(?:${k})?|(?:[1-9]\\d*|0\\.\\d+)\\s*(?:${k}))`,m=RegExp(`^[A-Za-zΦφΔ][\\w./-]*\\d${l}$`,"iu"),n=RegExp(`^\\d+${l}$`,"u"),o=/(?:DN|De|HRB|HPB|Φ|φ)/iu},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}},31129:(a,b,c)=>{c.d(b,{$R:()=>i,F$:()=>l,Hp:()=>j,bs:()=>m,gJ:()=>k});var d=c(73024),e=c(48161),f=c(76760),g=c(70208);function h(){return f.join(process.env.CUSTOMIZE_AGENT_HOME?f.join(process.env.CUSTOMIZE_AGENT_HOME,".customize-agent"):f.join(e.homedir(),".customize-agent"),"section-fingerprints.json")}function i(){let a=h();if(!d.existsSync(a))return{version:1,entries:[]};try{let b=JSON.parse(d.readFileSync(a,"utf8")),c=Array.isArray(b?.entries)?b.entries.filter(a=>!!a&&"object"==typeof a&&"string"==typeof a.documentId):[];return{version:1,entries:c}}catch{return{version:1,entries:[]}}}function j(a){try{let b=i();for(b.entries=b.entries.filter(b=>b.documentId!==a.documentId),b.entries.push(a);b.entries.length>200;)b.entries.shift();let c=h();d.mkdirSync(f.dirname(c),{recursive:!0}),d.writeFileSync(c,JSON.stringify(b,null,2),"utf8")}catch(a){console.error(`[fingerprint] 指纹池写入失败(不阻断生成):${a instanceof Error?a.message:String(a)}`)}}function k(a,b){let c=String(a||"").trim(),d=String(b||"").trim();if(!c||!d)return!1;if(c===d)return!0;let e=(0,g.nz)(c).replace(/\s+/gu,""),f=(0,g.nz)(d).replace(/\s+/gu,"");if(!e||!f)return!1;if(e===f)return!0;let h=new Set(f);if([...new Set(e)].filter(a=>h.has(a)).length<3)return!1;let i=function(a,b){let c=0,d=Array(b.length+1).fill(0);for(let e=1;e<=a.length;e+=1){let f=0;for(let g=1;g<=b.length;g+=1){let h=d[g];d[g]=a[e-1]===b[g-1]?f+1:0,d[g]>c&&(c=d[g]),f=h}}return c}(e,f);return!(i<3)&&i/Math.min(e.length,f.length)>=.4}function l(a,b,c={}){let d=[],e=[];for(let a of b.entries)if(!c.excludeDocumentId||a.documentId!==c.excludeDocumentId)for(let b of[...a.h3||[],...a.h4||[]])"string"==typeof b&&b.trim()&&e.push({title:b,documentId:a.documentId});if(0===e.length)return d;for(let b of a){if(!b||!String(b).trim())continue;let a=e.find(a=>k(b,a.title));a&&d.push({title:b,collidedWith:a.title,documentId:a.documentId})}return d}function m(a){let b=[],c=[];for(let d of String(a||"").split(/\r?\n/u)){let a=d.trim(),e=/^(#{3,4})\s+(.+)$/u.exec(a);if(!e)continue;let f=e[2].replace(/#+\s*$/u,"").trim();f&&(3===e[1].length?b:c).push(f)}return{h3:b,h4:c}}},31920:(a,b,c)=>{c.d(b,{Nf:()=>g,St:()=>A,W:()=>h,eI:()=>z,rA:()=>j,vG:()=>o});var d=c(95294);let e=/[,。;:、·||,;:()()【】《》[\]{}<>「」'"“”\s]/gu,f=/^\s*[\d.]+\s*(?:[A-Za-z%℃²³]+|平方米|立方米|平方|立方|米|天|年|月|日|周|小时|分钟|元|万元|台|套|个|项|批|次|人|份|页|处|座|根|块|组|件|孔|盏|樘|扇|片)*\s*$/u;function g(a){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\|/u.test(b))return!1;if(/^(?:答|答复|回复|答疑)\s*[::]/u.test(b))return!0;if(b.length<30)return!1;for(let a of b.split(e)){if(a.length<25)continue;let b=(a.match(/[0-9]/gu)||[]).length,c=(a.match(/[+\-*/×@%·..,≤≥~~$]/gu)||[]).length;if(!((a.match(/[一-龥]/gu)||[]).length/a.length>.3)&&(b+c)/a.length>=.45)return!0}let c=b.split(/[、,,;;]/u).map(a=>a.trim()).filter(Boolean);return!!(c.length>=15)&&!!(c.filter(a=>f.test(a)).length/c.length>=.6)||!1}function h(a){return a?a.split(/\r?\n/u).map(a=>g(a)?"":a).join("\n").replace(/\n{3,}/gu,"\n\n"):a}let i=/(?:现澄清为如下|澄清为如下|澄清如下)[::][^。;\n]*/gu;function j(a){if(!a)return{text:a,removed:0};let b=0,c=a.replace(i,()=>(b+=1,"")),e=(0,d.r1)(c);return c=e.text,b+=e.removed,{text:c=c.replace(/[::,,;;]\s*(?=[。;;])/gu,""),removed:b}}let k=/[^。;\n]{0,30}(?:澄清|答疑|补遗)(?:文件)?[^。;\n]{0,10}(?:明确|载明|规定|说明)[^。;\n]{0,60}/gu,l=/[^。;\n]{0,20}原[^。;\n]{0,24}?(?:现|变更为|调整为|修改为)[^。;\n]{0,24}/gu,m=/[^。;\n,,]{0,20}(?:招标|原招标|原合同|原计划)[^。;\n]{0,20}?(?:现|已|均|将)?(?:澄清|变更|调整|修改|更正)为[^。;\n,,]{0,24}[,,]?/gu,n=/(?:经|根据)[^。;\n,,]{0,8}(?:澄清|答疑|补遗)(?:文件)?[^。;\n]{0,16}?(?:调整为|变更为|修改为|更正为)[^。;\n,,]{0,24}[,,]?/gu;function o(a){if(!a)return{text:a,removed:0};let b=0,c=String(a).replace(k,()=>(b+=1,""));return{text:(c=(c=(c=c.replace(l,a=>/原因|原则|原始|原本|原状|原地|原材料/.test(a)?a:(b+=1,""))).replace(m,()=>(b+=1,""))).replace(n,()=>(b+=1,""))).replace(/[,,;;]\s*(?=[。;])/gu,""),removed:b}}let p="(?:《[^》]{2,40}》|<[^<>]{2,40}>)",q=/(?:法|条例|办法|规定|规则|决定|细则|条文|标准|规范|规程|导则|准则|通则|技术要求|技术条件)$/u,r=/^\s*[((]?\s*[A-Z]{2,6}(?:\s*\/\s*[A-Z]{1,6})?\s*\d/u,s=[`(?:具体)?(?:做法|详见|参见|见|按|依据|参照)[^,,、;;。!?\\n]{0,6}(?:[,,]\\s*(?:具体)?(?:做法|详见|参见|见|依据|参照))?[^,,、;;。!?\\n]{0,8}?(${p})(?:[((][^))]{0,24}[))])?(?:[0-9A-Za-z//.\\-]{1,16})?(?:页|张)?`],t=[`(?:具体)?(?:做法|详见|参见|见|按|依据|参照)[^,,、;;\\n]{0,12}?(${p})[^,,、;;\\n]{0,12}`,`(?:参见|详见|参照|按|依照)[^,,、;;\\n]{0,6}?(?:(${p}))?[^,,、;;\\n]{0,6}?(?:[皖烷京沪苏浙粤鲁豫鄂湘川渝陕冀晋蒙辽吉黑闽赣桂黔滇甘青宁新藏]\\s?\\d{4}|\\d{2})\\s?[A-Z]{1,2}\\s?\\d{2,4}(?:[//]\\d{1,3})?[^,,、;;\\n]{0,10}`],u=[...t,`(?:详见|参见|见)[^,,、;;\\n]{0,16}?(?:大样图|详图|节点图|工艺图|做法表)`],v=[`按(?:设计)?(?:施工)?图纸(?:控制|计量|要求|施工|确定|执行|进行|处理|设置|选用|计算|调整)?`,`以(?:设计)?图纸为准`,`(?:资料|图纸|清单|设计文件)(?:中)?未(?:提供|明确|给出|注明)[^,,、;;\\n]{0,12}(?:参数|数据|做法|要求|规格)?`,`(?:具体(?:参数|做法|数值))?待(?:补充|确认|核实|明确)`],w=s.map(a=>RegExp(a,"u"));function x(a,b){return!!q.test(a.slice(1,-1))||r.test(b)}function y(a){if(!a)return{text:a,hits:[]};let b=[],c=[];for(let d of String(a).split(/(?<=[。;])/u)){if(!d.trim()){c.push(d);continue}let a=function(a){let b=a,c=[];for(let a of w)b=b.replace(RegExp(a.source,"gu"),(a,b)=>{if(void 0!==b){let c=a.slice(a.lastIndexOf(b)+b.length);if(x(b,c))return a}return c.push({sample:a.trim(),family:"atlas"}),""});return{text:b,hits:c}}(d);b.push(...a.hits);let e=a.text.split(/([,,、;;])/u),f=[];for(let a=0;a<e.length;a+=2){let c=e[a]??"",d=c.trim()?function(a){for(let b of t)for(let c of a.matchAll(RegExp(b,"gu"))){let a=c[1];if(void 0===a)return"atlas";let b=c[0].slice(c[0].lastIndexOf(a)+a.length);if(!x(a,b))return"atlas"}return u.slice(t.length).some(b=>RegExp(b,"u").test(a))?"atlas":v.some(b=>RegExp(b,"u").test(a))?"drawing":null}(c):null;if(d){b.push({sample:c.trim().slice(0,60),family:d});continue}f.push(c);let g=e[a+1];g&&a+2<e.length&&f.push(g)}let g=f.join("").replace(/^[,,、]+/u,"").replace(/[,,、]+$/u,"");g.replace(/[。;;\s]/gu,"")&&c.push(g)}return{text:c.join("").replace(/[,,、;;]{2,}/gu,",").replace(/[,,、;;]\s*(?=[。;])/gu,"").replace(/\n{3,}/gu,"\n\n"),hits:b}}function z(a){let b=y(a);return{text:b.text,removed:b.hits.length}}function A(a){return y(a).hits.filter(a=>"atlas"===a.family).map(a=>a.sample)}},36366:(a,b,c)=>{c.d(b,{TD:()=>h,a1:()=>o,u:()=>n,y$:()=>l});var d=c(73024),e=c(48161),f=c(76760),g=c(22157);let h=.85,i=[{name:"工序主线",prompt:"以施工先后工序为主线组织内容,小节按施工流程推进顺序展开"},{name:"专业系统",prompt:"以专业系统构成为主线,按各专业分系统独立成节"},{name:"空间区段",prompt:"以施工区段、单体与平面分区为主线,按空间单元组织小节"},{name:"资源要素",prompt:"以人材机等生产要素配置为主线,按资源要素组织小节"},{name:"目标管控",prompt:"以质量、安全、工期等管控目标为主线,按目标维度组织小节"},{name:"接口协同",prompt:"以专业接口与协同配合为主线,按接口关系与穿插顺序组织小节"}],j=[{name:"直述事务",prompt:"小节标题采用惯例事务名词直述(如「编制说明与工程概况」)"},{name:"目标牵引",prompt:"小节标题以目标与结果词收尾(如「工期目标与进度保障」)"},{name:"流程管控",prompt:"小节标题突出流程与衔接(如「施工流程与工序衔接」)"},{name:"要素配置",prompt:"小节标题突出要素与资源配置(如「劳动力配置与组织」)"},{name:"系统专业",prompt:"小节标题突出系统构成与专业对象(如「测量控制网建立」)"}];function k(a){return`${Math.floor(a/j.length)}-${a%j.length}`}function l(a,b=[]){let c=i.length*j.length,d=Number.parseInt((0,g.c6)(String(a||"default-document")).slice(0,8),16)%c,e=new Set(b.filter(Boolean)),f=d;for(let a=0;a<c;a+=1){let b=(d+a)%c;if(!e.has(k(b))){f=b;break}}let h=i[Math.floor(f/j.length)],m=j[f%j.length];return{id:k(f),perspective:h.name,style:m.name,prompt:`本次文档系统性差异化设定(全文一以贯之,除非与模板锁定小节冲突):
2
- - 组织主线:${h.prompt}。
3
- - 命名风格:${m.prompt}。
4
- 同一文档内不得混用多种命名风格。`}}function m(){let a=process.env.CUSTOMIZE_AGENT_HOME?f.join(process.env.CUSTOMIZE_AGENT_HOME,".customize-agent"):f.join(e.homedir(),".customize-agent");return f.join(a,"diversity-history.json")}function n(a){try{let b=m();if(!d.existsSync(b))return[];let c=JSON.parse(d.readFileSync(b,"utf8")),e=c?.history?.[a];return Array.isArray(e)?e.filter(a=>"string"==typeof a):[]}catch{return[]}}function o(a,b){try{let c=m();d.mkdirSync(f.dirname(c),{recursive:!0});let e={version:1,history:{}};if(d.existsSync(c))try{let a=JSON.parse(d.readFileSync(c,"utf8"));a&&"object"==typeof a&&a.history&&"object"==typeof a.history&&(e={version:1,history:a.history})}catch{}let g=(e.history[a]||[]).filter(a=>a!==b);e.history[a]=[b,...g].slice(0,12),d.writeFileSync(c,JSON.stringify(e,null,2),"utf8")}catch(a){console.error(`[diversity] 画像历史写入失败(不阻断生成):${a instanceof Error?a.message:String(a)}`)}}},38115:(a,b,c)=>{c.d(b,{G8:()=>n,JG:()=>i,SX:()=>l,UW:()=>j,qL:()=>m});var d=c(99956),e=c(70208),f=c(40299),g=c(36366),h=c(31129);function i(a){return(0,e.nz)(String(a||"")).replace(/[\s()()::.。;;,,、\-—·]/gu,"")}function j(a,b){let c=String(a||"").trim(),d=String(b||"").trim();if(!c)return d;if(!d)return c;let e=Math.min(c.length,d.length);for(let a=e;a>0;a-=1)if(c.slice(-a)===d.slice(0,a))return`${c.slice(0,-a)}${d}`;return`${c}${d}`}let k=["一","二","三","四","五","六","七","八","九","十"];function l(a){let b=a.map(a=>i(a.title)),c=new Map;for(let a of b)c.set(a,(c.get(a)||0)+1);let d=new Set,f=[];for(let g=0;g<a.length;g+=1){let h=a[g],l=String(h.title||"").trim();if((c.get(b[g])||0)>1){let a=String(h.owner||"").trim(),b=i(a);b&&!i(l).startsWith(b)&&(l=j(a,(0,e.nz)(l)))}let m=l,n=1;for(;d.has(i(m));)n+=1,m=`${l}(${k[n-1]||n})`;d.add(i(m)),f.push(m)}return f}function m(a){let b=(0,e.nz)(String(a||"")).replace(/\s+/gu,"");return!!(b.length<4||/^(.{2,5})\1$/u.test(b)||/(.)\1/u.test(b))}async function n(a){let b,c=a.blocks.map(a=>a.title),j=a.fingerprintPool?(0,h.F$)(c,a.fingerprintPool,{excludeDocumentId:a.excludeDocumentId}):[],k=c.filter(a=>m(a)),l=[...new Set([...j.map(a=>a.title),...k])];if(0===l.length)return{titles:c,renamed:0,summary:null};try{let c=await (0,d.bb)([(0,f.y4)("你是施工组织设计目录命名审查专家。"),"输入某章的小节标题清单与点名需改名的标题(与历史文档撞名或命名退化),只输出改名映射。","改名规则:只改点名标题,不改未点名标题;新标题必须仍是同一专业对象或同一工程内容的具体表述,不得改变小节实质;16 个汉字以内;不得仅通过添加“工作/内容/相关/方案”等尾词规避撞名,必须实质性更换措辞;不得与本章其他小节标题用词高度相似(防章内撞名)。",a.profile?a.profile.prompt:"","只返回 JSON。"].filter(Boolean).join("\n"),[`章标题:${a.chapterTitle}`,`本章小节清单:
5
- ${a.blocks.map(a=>`- ${a.title}${a.pointTitles.length?`(要点:${a.pointTitles.slice(0,3).join("、")})`:""}`).join("\n")}`,`需要改名的标题:${l.join("、")}`,j.length?`历史撞名对照(本次 ↔ 历史文档):
6
- ${j.map(a=>`「${a.title}」↔「${a.collidedWith}」`).join("\n")}`:"",k.length?`命名退化(重复/残片)标题:${k.join("、")}`:"",'JSON 格式:{"renames":{"原标题":"新标题"}}(只包含需要改名的标题)'].filter(Boolean).join("\n\n"),{maxTokens:800,temperature:g.TD,signal:a.signal,diagnostics:a.diagnostics});b=c?.renames&&"object"==typeof c.renames?c.renames:{}}catch(b){return console.error(`[naming] 定名轮调用失败(保留原命名):${a.chapterTitle},${b instanceof Error?b.message:String(b)}`),{titles:c,renamed:0,summary:null}}let n=0;for(let[d,f]of Object.entries(b)){let b=i(d);if(!b)continue;let g=c.flatMap((a,c)=>i(a)===b?[c]:[]);if(0===g.length||!l.some(a=>i(a)===b))continue;let j=(0,e.nz)(String(f||""));if(!(!j||j.length>24||m(j)||c.some((a,b)=>!g.includes(b)&&(0,h.gJ)(a,j)))&&(!a.fingerprintPool||!((0,h.F$)([j],a.fingerprintPool,{excludeDocumentId:a.excludeDocumentId}).length>0))){for(let a of g)c[a]=j;n+=1}}return 0===n?{titles:c,renamed:0,summary:null}:{titles:c,renamed:n,summary:`命名定名轮:改名 ${n} 个(撞名 ${j.length} 个/退化 ${k.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,{C:()=>d,O:()=>e})},54451:(a,b,c)=>{c.d(b,{$X:()=>n,D:()=>y,II:()=>x,Iw:()=>A,Kj:()=>p,Nz:()=>s,Su:()=>j,Tl:()=>l,Z9:()=>z,dn:()=>w,kI:()=>k,mI:()=>q,nY:()=>t,p$:()=>o});var d=c(16698);let e=Object.freeze({maxTurnsPerBlock:4,maxToolCallsPerBlock:12,maxCallsPerChapter:120,maxCallsPerDocument:800,maxTokensPerDocument:3e6,maxWallClockPerChapterMs:9e5,noImprovementRounds:2}),f=0;function g(){return{budget:{...e},documentCalls:0,documentTokens:0,cacheHitTokens:0,cacheMissTokens:0,documentCostUsd:0,unpricedCalls:0,stops:[],id:f+=1}}let h=new WeakMap,i=g();function j(a){if(!a)return i;let b=h.get(a);return b||(b=g(),h.set(a,b)),b}function k(a,b,c=process.env){return a.budgetAssembled||(a.budgetAssembled=!0,a.budget=l(c),void 0!==b&&(a.costCeilingUsd=b)),a}function l(a=process.env){let b=(b,c)=>{let d=Number(a[b]);return Number.isFinite(d)&&d>=1?Math.floor(d):c};return{maxTurnsPerBlock:b("AGENT_MAX_TURNS_PER_BLOCK",e.maxTurnsPerBlock),maxToolCallsPerBlock:b("AGENT_MAX_TOOL_CALLS_PER_BLOCK",e.maxToolCallsPerBlock),maxCallsPerChapter:b("AGENT_MAX_CALLS_PER_CHAPTER",e.maxCallsPerChapter),maxCallsPerDocument:b("AGENT_MAX_CALLS_PER_DOCUMENT",e.maxCallsPerDocument),maxTokensPerDocument:b("AGENT_MAX_TOKENS_PER_DOCUMENT",e.maxTokensPerDocument),maxWallClockPerChapterMs:b("AGENT_CHAPTER_TIMEOUT_MS",e.maxWallClockPerChapterMs),noImprovementRounds:b("AGENT_NO_IMPROVEMENT_ROUNDS",e.noImprovementRounds)}}let m=new d.AsyncLocalStorage;function n(a,b){var c;let d=j(a.instance);(c={budget:a.budget,costCeilingUsd:a.costCeilingUsd}).budget&&(d.budget={...d.budget,...c.budget},d.budgetAssembled=!0),void 0!==c.costCeilingUsd&&(d.costCeilingUsd=c.costCeilingUsd,d.budgetAssembled=!0);let e={id:a.chapterId,calls:0,tokens:0,startedAt:a.now??Date.now(),refusals:0,meterId:d.id,lastProgressAt:a.now??Date.now()};return m.run({meter:d,record:e},b)}function o(a=Date.now()){let b=m.getStore()?.record;b&&(b.lastProgressAt=a)}function p(){return m.getStore()?.record}function q(){return m.getStore()?.meter}function r(a,b,c=Date.now()){if(!a)return;if(a.stop)return a.stop;if(a.calls>=b.maxCallsPerChapter)return{kind:"chapter-calls",scope:"chapter",escalation:"unfixable",observed:a.calls,limit:b.maxCallsPerChapter,message:`章预算耗尽(本章 LLM 调用 ${a.calls}/${b.maxCallsPerChapter}):本章停止续写,已产出块保留`};let d=c-(a.lastProgressAt??a.startedAt);if(d>=b.maxWallClockPerChapterMs)return{kind:"chapter-wall-clock",scope:"chapter",escalation:"unfixable",observed:Math.round(d),limit:b.maxWallClockPerChapterMs,message:`章内停滞超时(${Math.round(d/1e3)}s 无进展,上限 ${Math.round(b.maxWallClockPerChapterMs/1e3)}s;本章总耗时 ${Math.round((c-a.startedAt)/1e3)}s):本章停止续写,已产出块保留`}}function s(a=process.env){let b=a.AGENT_BUDGET_CACHE_HIT_WEIGHT;if(void 0===b||""===b.trim())return 1;let c=Number(b);return!Number.isFinite(c)||c<0||c>1?1:c}function t(a){return a.documentStop?a.documentStop:a.documentCalls>=a.budget.maxCallsPerDocument?{kind:"document-calls",scope:"document",escalation:"C",observed:a.documentCalls,limit:a.budget.maxCallsPerDocument,message:`文档预算耗尽(全文 LLM 调用 ${a.documentCalls}/${a.budget.maxCallsPerDocument}):停止生成;已完成的块与章保留交付,未完成的按缺章进交付复核清单`}:a.documentTokens>=a.budget.maxTokensPerDocument?{kind:"document-tokens",scope:"document",escalation:"C",observed:a.documentTokens,limit:a.budget.maxTokensPerDocument,message:`文档 token 预算耗尽(${a.documentTokens}/${a.budget.maxTokensPerDocument}${function(a){let b=a.cacheHitTokens+a.cacheMissTokens;return b<=0?"":`,其中输入 ${a.cacheHitTokens.toLocaleString()}/${b.toLocaleString()} 为缓存命中(${(100*a.cacheHitTokens/b).toFixed(1)}%;本仓价格表无缓存价目来源,预算按全价计)`}(a)}):停止生成;已完成的块与章保留交付,未完成的按缺章进交付复核清单`}:void 0!==a.costCeilingUsd&&a.documentCostUsd>a.costCeilingUsd?{kind:"cost-ceiling",scope:"document",escalation:"C",observed:a.documentCostUsd,limit:a.costCeilingUsd,message:`单文档成本上限触发($${a.documentCostUsd.toFixed(4)} > $${a.costCeilingUsd}):C 级升级并停止生成;已完成的块与章保留交付,未完成的按缺章进交付复核清单`}:void 0}function u(a){let b=p();return b&&b.meterId===a.id?b:void 0}function v(a,b){a.stops.some(a=>a.kind===b.kind)||a.stops.push(b)}function w(a,b){let c=Number.isFinite(b.tokens)&&(b.tokens||0)>0?Math.floor(b.tokens):0;a.documentCalls+=1,a.documentTokens+=c,Number.isFinite(b.cacheHitTokens)&&(b.cacheHitTokens||0)>0&&(a.cacheHitTokens+=Math.floor(b.cacheHitTokens)),Number.isFinite(b.cacheMissTokens)&&(b.cacheMissTokens||0)>0&&(a.cacheMissTokens+=Math.floor(b.cacheMissTokens)),void 0!==b.costUsd&&(a.documentCostUsd+=b.costUsd),!1===b.priced&&(a.unpricedCalls+=1);let d=u(a);d&&(d.calls+=1,d.tokens+=c);let e=t(a)??r(d,a.budget,b.now);return e&&(v(a,e),"chapter"===e.scope&&d?d.stop=d.stop??e:a.documentStop=a.documentStop??e),e}function x(a,b=Date.now()){if(a===i)return;let c=u(a),d=t(a)??r(c,a.budget,b);if(d)return"chapter"===d.scope&&c?c.stop=c.stop??d:a.documentStop=a.documentStop??d,v(a,d),d}function y(a){let b=u(a);b&&(b.refusals+=1)}function z(a,b=Date.now()){return u(a)?.stop??r(u(a),a.budget,b)}function A(a){return u(a)?.refusals??0}},70933:(a,b,c)=>{c.d(b,{A1:()=>A,Pc:()=>y,QO:()=>x,QR:()=>v,R7:()=>F,eE:()=>m,ks:()=>E,oW:()=>o});var d=c(76760),e=c(77598),f=c(58965),g=c(18274),h=c(91977),i=c(51144),j=c(80572),k=c(31920);function l(a,b=0){let c="drawing"===a.processingType||a.roleId?.includes("drawing")?"视觉资料":"table"===a.processingType||a.roleId?.includes("bill")?"表格资料":"rule"===a.processingType||a.roleId?.includes("tender")?"规则资料":"文本资料";return`${c}片段${b+1}${a.sectionTitle?`(${a.sectionTitle.replace(f.tK,"")})`:""}`}function m(a){return(0,k.W)([...a].filter(a=>{let b=a.charCodeAt(0);return 9===b||10===b||13===b||b>=32}).join("").replace(f.VX,"").replace(f.tK,"").replace(/\b(?:Model|Layout\d*|Entity|Handle|ObjectId|ByLayer|Continuous)\b/giu,"").replace(/[\t ]{2,}/gu," ").replace(/\n{3,}/gu,"\n\n").trim())}function n(a){let b=m(a),c=Math.max(1,b.length),d=(b.match(/[\u4e00-\u9fa5]/gu)||[]).length,e=(b.match(/\d/gu)||[]).length,f=(b.match(/项目|任务|质量|安全|周期|验收|材料|设备|表格|数据|参数|规范|标准|流程|资源|风险/gu)||[]).length,g=(b.match(/CAD|AcDb|Polyline|ByLayer|ObjectId|Handle|Model|Layout|图层|页码|第\s*\d+\s*页|打印|版权所有|^[\s\W\d_]+$/gimu)||[]).length,h=(b.match(/(?:序号|项目名称|事项|单位|数量|单价|金额|备注)/gu)||[]).length,i=Math.min(1,d/c*.7+Math.min(.3,(e+3*f)/120)),j=Math.min(1,.18*g+.04*Math.max(0,h-8)+.35*(d/c<.25));return{noiseScore:j,factDensity:i,shouldUse:b.length>=30&&j<.72&&i>.08}}function o(a){let b=[...new Set(m(a).split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>{let b=/计划工期|合同工期|工期|合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价|建设地点|建设规模|质量标准/u.test(a);if(!b&&/综合单价|合价|报价明细|投标报价|税率|增值税|利润|预留金|暂列金额|结算/u.test(a))return!1;let c=g.yw.test(a),d=/(?:GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO|IEC)\s*[\w./-]*\d/u.test(a),e=/项目|工程|工期|合同|估算|价格|地点|规模|清单|图纸|设计|规格|型号|数量|单位|材料|设备|管|线|电缆|混凝土|钢筋|砌体|门窗|防水|标准|规范|验收|做法|参数|尺寸|标高|厚度|强度|等级|系统|安装/u.test(a);return b||c||d||e&&/\d/u.test(a)&&a.length<=260}))].map(a=>(function(a){if(a.length<=160)return a;let b=a.match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|(?:计划工期|合同工期|合同估算价|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准)[^。;;,,]{0,40}|(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\w./-]*\d/gu);return b&&b.length>0?[...new Set(b)].join(";"):a.slice(0,160)})(a)).filter(Boolean);return(0,i.C)([...new Set(b)],a=>(0,i.O)(a),{},"key-fact-lines").selected.join("\n")}let p=/项目名称|工程名称|项目编号|招标项目编号|标段编号|招标人|建设单位|发包人|建设地点|工程地点|建设规模|建筑面积|招标范围|计划工期|合同工期|总工期|周期要求|质量标准|质量目标|安全目标|安全生产|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程估算价|结构形式|层数|建筑高度|基础形式|抗震设防|绿色建筑等级|装配率|支护形式|质保期|质量保修|投标有效期/u;function q(a){let b=a.processingType||"";return"table"===b||b.includes("bill")||"structured_data"===b||!!a.roleId?.includes("bill")}function r(a){return a.length>200?`${a.slice(0,200)}…`:a}let s=[{re:/基坑底标高|换填底标高|整平标高|开挖深度|放坡系数|支护形式|坡率/u,value:20},{re:/标高/u,value:10},{re:/[±+]\s*0[.,]0{2,}/u,value:8},{re:/[±+-]\s*\d+\.\d{2,}/u,value:3}];function t(a,b){return"drawing"===a.processingType||".dwg"===d.extname(a.filePath).toLowerCase()||/资料类型:\s*cad/iu.test(b)}function u(a,b){let c=Math.max(400,Math.floor(b)),d=m(a);if(d.length<=c)return d;let e=d.split("\n"),f=e.map((a,b)=>{let c=0;for(let{re:b,value:d}of s)if(b.test(a)){c=d;break}return{line:a,index:b,value:c}}).filter(a=>a.value>0);if(!f.length)return d.slice(0,c);f.sort((a,b)=>b.value-a.value||a.index-b.index);let g=d.slice(0,Math.min(300,Math.max(80,Math.floor(.22*c)))).trimEnd(),h=`(超长证据参数窗口提取:${f.length} 行参数命中,尾部关键参数已前置展示)`,i=c-g.length-h.length-4,j=[],k=new Set,l=Math.max(50,Math.floor(.15*c));for(let{line:a,index:b}of f){if(i<=30)break;if(k.has(b))continue;let c=b>0&&/图纸节点:/u.test(e[b-1])?e[b-1].slice(0,l):"",d=[c,a].filter(Boolean).join("\n"),f=d.length>i?d.slice(0,i):d;j.push(f),i-=f.length+1,k.add(b),c&&k.add(b-1)}let n=j.length?j.join("\n"):d.slice(0,i+g.length),o=`${g}
7
- ${h}
8
- ${n}`;return o.length>c?o.slice(0,c):o}function v(a,b={},c){let f=Number.isFinite(b.maxItems)&&b.maxItems>0?Math.floor(b.maxItems):void 0,g=Number.isFinite(b.maxChars)&&b.maxChars>0?Math.floor(b.maxChars):void 0,h=function(a,b,c){let f=new Set,g=a.map(a=>{let b=function(a,b){let c=d.extname(a).toLowerCase(),e=m(b).split("\n").map(a=>a.trim()).filter(a=>a&&!/^第\s*\d+\s*页\s*(?:共\s*\d+\s*页)?$/u.test(a)).join("\n"),f=n(e);if(e.length>20&&f.shouldUse)return e;let g=o(e);return g.length>20?`资料参数行摘要:
9
- ${g}`:e.length>80&&f.noiseScore<.9?e:[".pdf",".doc",".docx",".xls",".xlsx",".png",".jpg",".jpeg",".webp",".dwg"].includes(c)?`该资料为${c.replace(".","").toUpperCase()}格式附件,仅作为内部事实提取依据;正式正文不得引用文件名。`:e}(a.filePath,a.content),c=n(b);return{item:{...a,content:b,score:a.score*(1+c.factDensity)*(1-.45*c.noiseScore)},quality:c}}),h=[],i=[],j=[];for(let a of g){var k,l;(k=a.item,l=a.item.content,a.quality.shouldUse||/附件,仅作为内部事实提取依据/u.test(l)||t(k,l)&&l.split("\n").some(a=>s.some(({re:b})=>b.test(a))))?(h.push(a),!a.quality.shouldUse&&t(a.item,a.item.content)&&j.push(a.item.filePath)):i.push(a)}j.length&&console.warn(`[evidence] drawing 类证据按图纸参数判据放行(散文噪声判据不适用):${j.slice(0,5).join("、")}${j.length>5?` 等 ${j.length} 条`:""}`);let p=Math.min(3,a.length),q=Number.isFinite(b)&&b>0?Math.ceil(b):void 0,r=h.sort((a,b)=>b.item.score-a.item.score).filter(a=>{let b=function(a){let b=a.content.replace(/\s+/gu," ").trim();return`${a.filePath}:${a.sectionTitle||""}:${(0,e.createHash)("sha1").update(b).digest("hex")}`}(a.item);return!f.has(b)&&(f.add(b),!0)}),u=q?r.slice(0,q):r;if(c){let b=g.reduce((a,b)=>a+b.quality.noiseScore,0),d=g.reduce((a,b)=>a+b.quality.factDensity,0);c.evidence.raw+=a.length,c.evidence.used+=u.length,c.evidence.filteredNoise+=Math.max(0,g.length-h.length),c.evidence.avgNoiseScore=g.length?Number((b/g.length).toFixed(3)):0,c.evidence.avgFactDensity=g.length?Number((d/g.length).toFixed(3)):0}return h.length<p&&console.warn(`[evidence] 质量门通过条目不足(${h.length}/${p},未过门 ${i.length} 条,共 ${a.length} 条):按通过条目成池(不外溢未过门条目),短缺见诊断 filteredNoise`,i.slice(0,3).map(a=>a.item.filePath)),u.map(a=>a.item)}(a,void 0,c),i=b.preservePinned?h.filter(a=>"pinned-evidence"===a.source||"bound-file"===a.source||"required-fact-evidence"===a.source):[],j=h.filter(a=>!i.includes(a)),k=[],l=0,p=(a,b=!1)=>{if(f&&k.length>=f)return;let c=m(a.content);g&&c.length>4e3&&(c=u(c,Math.min(12e3,g)));let d=l+c.length;g&&k.length>0&&d>g||(k.push({...a,content:c}),l=d)};for(let a of i)p(a,!0);for(let a of j)p(a);return c&&(c.evidence.budgetDropped+=Math.max(0,h.length-k.length)),k}function w(a,b){if(a.filePath!==b.filePath)return a.filePath<b.filePath?-1:1;let c=a.sectionTitle||"",d=b.sectionTitle||"";return c!==d?c<d?-1:1:a.content.length!==b.content.length?a.content.length-b.content.length:a.content!==b.content?a.content<b.content?-1:1:0}function x(a,b){let c=[...b].sort(w),e=new Map;for(let b of c){let c=function(a,b){let c=d.extname(a).toLowerCase();return"drawing"===b||/地图|map|drawing|design/iu.test(a)?"map":[".png",".jpg",".jpeg",".webp"].includes(c)?"image":"table"===b?"table":[".xls",".xlsx",".csv"].includes(c)?"spreadsheet":[".pdf",".doc",".docx"].includes(c)?"document":c&&![".md",".txt"].includes(c)?"attachment":"text"}(b.filePath,b.processingType),f=e.get(b.filePath)||{filePath:b.filePath,kind:c,roleId:b.roleId,processingType:b.processingType,score:b.score,semanticTitle:function(a,b){let c=d.basename(a).replace(/\.[^.]+$/u,"");return"map"===b?c.replace(/^地图-/u,"").replace(/-完整地图$/u,"完整地图"):"image"===b?c.replace(/-/gu," "):"spreadsheet"===b?`${c}(结构化表格)`:"document"===b?`${c}(文档附件)`:c}(b.filePath,c),contentUse:"map"===c?"作为视觉/地图证据,用于说明空间关系、区域划分、点位、路线或布局。":"image"===c?"作为图片证据,用于视觉说明、参考图或章节配图。":"spreadsheet"===c||"table"===c?"作为表格/数据证据,用于字段对比、明细、数量和结构化结论。":"document"===c?"作为 PDF/Word 文档证据,用于提取规范、事实、说明、约束和附件来源。":"attachment"===c?"作为附件证据,用于提供补充来源、文件级约束或可追溯引用。":"作为文本证据,用于事实抽取、章节论据和来源引用。",relatedFacts:[],relatedChapters:[],snippets:[]};f.score=Math.max(f.score,b.score),f.relatedFacts=[...new Set([...f.relatedFacts,...function(a,b){let c=`${a.filePath}
10
- ${a.content}`;return[...new Set([...b?.requiredFacts||[],"表格数据","规范要求","基础事实","附件资料","视觉资料","图片资料"].filter(b=>(0,h.Lk)(a,b)||c.includes(b)))]}(b,a)])],f.relatedChapters=[...new Set([...f.relatedChapters,a.title])];let g=b.content.replace(/\s+/gu," ");g&&!f.snippets.includes(g)&&f.snippets.push(g),e.set(b.filePath,f)}let f=[...e.values()].sort((a,b)=>b.score-a.score),g={map:[],image:[],table:[],document:[],spreadsheet:[],text:[],attachment:[]};for(let a of f)g[a.kind].push(a);let i=[`绑定材料包:文本片段 ${c.length} 条、结构化材料 ${f.length} 个。`,`材料类型分布:文本 ${g.text.length}、文档 ${g.document.length}、表格/数据 ${g.spreadsheet.length+g.table.length}、图片 ${g.image.length}、视觉/地图 ${g.map.length}、其他 ${g.attachment.length}。`,"正文必须只写材料中的事实、参数、数量、做法和要求,不得出现文件名、来源清单或后台证据描述。"].filter(Boolean).join("\n");return{chapterId:a.id,textEvidence:c,resources:f,byKind:g,summary:i}}function y(a,b=8e3,c=24e3){let d=Number.isFinite(a)&&a>0?Math.ceil(a):1200,e=(0,j.z)().evidenceBudgetCeiling,f=Number.isFinite(e)&&e>0?Math.floor(e):c,g=(0,j.z)().evidenceBudgetRatio;return Math.min(Math.max(b,Math.min(f,Math.ceil(d*(Number.isFinite(g)&&g>0?g:8)))),Number.isFinite(e)&&e>0?1/0:12e3)}function z(a,b,c,d){let e=b.trim();if(!e)return;let f=Number.isFinite(d)&&0===d;if(null==d||!f&&c.chars+e.length<=d){a.push(e),c.chars+=e.length;return}c.omitted+=1}function A(a,b){let c=`${a.sectionTitle||""}
11
- ${a.content}`,d=a.score;for(let e of(g.sv.test(c)&&(d+=8),/计划工期|合同工期|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准|招标范围/u.test(c)&&(d+=10),b))e&&(c.includes(e)||(0,h.Lk)(a,e))&&(d+=6);return/GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO/iu.test(c)&&(d+=3),d}function B(a,b,c,d,e=6){let f={chars:0,omitted:0},g=[],h=new Set,i=new Map,j=[...a].sort((a,b)=>d(b)-d(a));for(let a of j){if(i.has(a.filePath))continue;let d=g.length;z(g,c(a,g.length),f,b),g.length>d&&(i.set(a.filePath,1),h.add(a))}for(let a of j){if(h.has(a))continue;let d=i.get(a.filePath)||0;if(e>0&&d>=e)continue;let j=g.length;z(g,c(a,g.length),f,b),g.length>j&&(i.set(a.filePath,d+1),h.add(a))}return{lines:g,omittedItems:j.filter(a=>!h.has(a)),omitted:f.omitted}}function C(a,b,c=300){let d,e=m("content"in a?a.content:a.snippets[0]||"").replace(/\s+/gu," ").trim();return d=e.length>c?e.length>4e3?u(e,c):(()=>{let a=Math.floor(.7*c),b=c-a-1;return`${e.slice(0,a)}…${e.slice(-b)}`})():e,`- [${b}] ${l(a)}${d?`|${d}`:""}`}function D(a,b,c,d=!1,e,g=!1,h=!1){let k=g&&e?a.textEvidence.filter(a=>e(a)>0):[],n=[...new Set((k.length>0?k:a.textEvidence).flatMap(a=>o(a.content).split("\n").filter(Boolean)))],s=d?[]:n.filter(a=>p.test(a)).map(r),t=n.filter(a=>!p.test(a)),v=d?[...t].sort((a,b)=>(0,i.O)(b)-(0,i.O)(a)).slice(0,24):t,w=b?Math.floor(.6*b):void 0,x=s,y=0;if(w&&x.join("\n").length>w){let a=(0,i.C)(x,a=>(0,i.O)(a),{maxChars:w},"t0-fact-lines");y=a.dropped.length,x=a.selected}let z=x.length?`【关键事实层——来自绑定材料的数值、参数与标准编号,正文必须原样落位,不得改写、不得编造层内没有的数值】
12
- ${x.map(a=>`- ${a}`).join("\n")}${y>0?`
13
- (事实行总量超出预算上限,已按重要性保留前 ${x.length} 行)`:""}`:"",E=b?b-z.length:void 0;void 0!==E&&void 0!==b&&E<Math.min(2e3,b)&&(E=Math.min(2e3,b));let F=g&&e?a.resources.filter(b=>b.snippets.some(c=>e({chapterId:a.chapterId,filePath:b.filePath,score:b.score,content:c})>0)):a.resources,G=B(F.length>0?F:a.resources,E?Math.floor(.35*E):void 0,(a,b)=>[`- 资料:${l(a,b)}`,` 资料类型:${a.kind}`,` 正文用途:${a.contentUse}`,a.relatedFacts.length?` 可用事实方向:${a.relatedFacts.join("、")}`:"",a.snippets.length?` 可用内容:${a.snippets.map(m).filter(Boolean).join(" / ")}`:""].filter(Boolean).join("\n"),a=>a.score),H=g&&e?a.textEvidence.filter(a=>e(a)>0):a.textEvidence,I=g&&0===H.length?a.textEvidence:H,J=I.filter(a=>q(a)),K=I.filter(a=>!q(a)),L=E?Math.floor(.65*E):void 0,M="",N=L;if(v.length>0){let a=(0,i.C)(v,a=>(0,i.O)(a),{maxChars:L},"t0-demoted-fact-lines");a.selected.length>0&&(M=`工艺参数与规范事实行(按相关度排序):
14
- ${a.selected.map(a=>`- ${a}`).join("\n")}${a.dropped.length>0?`
15
- (另有 ${a.dropped.length} 行因预算省略,完整事实仍参与检索与质量校验)`:""}`,void 0!==N&&(N=Math.max(0,N-M.length)))}let O="",P=[];if(J.length>0){let a=B(J,void 0!==N?Math.min(4e3,N):4e3,(a,b)=>{let c=m(a.content),d=c.length>3e3?u(c,3e3):c;return`${l(a,b)}
16
- 类型:${a.processingType||"table"}
17
- 章节/片段:${a.sectionTitle?.replace(f.tK,"")||"资料片段"}
18
- 内容(清单/表格行数据:条目名、特征、工程量与单位必须逐项照抄原值,不得改写、不得编造):
19
- ${d}`},a=>A(a,c)+(e?e(a):0),0);P=a.omittedItems,a.lines.length&&(O=`表格/清单原文:
20
- ${a.lines.join("\n\n---\n\n")}`,void 0!==N&&(N=Math.max(0,N-O.length)))}let Q=B(K,N,(a,b)=>{let c=m(a.content),d=c.length>1200?u(c,1200):c;return`${l(a,b)}
21
- 类型:${a.processingType||"reference"}
22
- 章节/片段:${a.sectionTitle?.replace(f.tK,"")||"资料片段"}
23
- 内容:
24
- ${d}`},a=>A(a,c)+(e?e(a):0)),R=[];G.lines.length&&R.push(`结构化资料:
25
- ${G.lines.join("\n")}`),M&&R.push(M),O&&R.push(O),Q.lines.length&&R.push(`文本/附件片段:
26
- ${Q.lines.join("\n\n---\n\n")}`);let S=R.join("\n\n"),T=[...G.omittedItems,...P,...Q.omittedItems],U=(0,j.z)().evidenceCatalogMaxLines||40,V=Number.isFinite(U)&&U>0?Math.floor(U):40,W=h?[]:T,X=W.slice(0,V).map((a,b)=>C(a,b)),Y=W.slice(V),Z=[],$=0;for(let[a,b]of Y.entries()){let c=l(b,a);if($+c.length+1>1200)break;Z.push(c),$+=c.length+1}let _=Y.length>0?`- 另有 ${Y.length} 条未注入(完整片段仍参与后续检索与质量校验)${Z.length>0?`;其中来源可列部分:${Z.join("、")}${Z.length<Y.length?` 等 ${Y.length} 条`:""}`:""}`:"",aa=X.length?`【证据目录——未全文注入的片段压缩摘要(按重要性保留前 ${X.length} 条${T.length>X.length?`,另有 ${T.length-X.length} 条未注入`:""};正文可引用摘要内事实,不得编造摘要外的细节;完整片段仍参与后续检索与质量校验)】
27
- ${[...X,_].filter(Boolean).join("\n")}`:"",ab=T.reduce((a,b)=>a+("content"in b?b.content.length:(b.snippets[0]||"").length),0),ac={t0Chars:z.length,t1Chars:S.length,t2Lines:X.length,t2Chars:aa.length,omittedChars:ab,omittedCount:T.length};return{t0Text:z,t1Text:S,t2Text:aa,omittedNote:ac.omittedCount>0?`提示:完整证据池仍保留 ${a.textEvidence.length} 条文本片段、${a.resources.length} 个结构化材料;本次已注入关键事实层 ${ac.t0Chars} 字(数值参数全量)与高相关片段 ${ac.t1Chars} 字,另有 ${ac.omittedCount} 条片段(${ac.omittedChars} 字)仅以目录索引呈现,将在章节/小节相关检索和质量校验中继续参与。`:"",stats:ac}}function E(a,b={}){let c=D(a,Number.isFinite(b.maxChars)&&b.maxChars>0?Math.ceil(b.maxChars):void 0,b.requiredFacts||[],!!b.skipT0,b.rankBoost,!!b.onlyRankBoosted,!!b.skipT2Catalog);if(b.diagnostics){let a=b.diagnostics.evidence;a.t0Chars+=c.stats.t0Chars,a.t1Chars+=c.stats.t1Chars,a.t2Lines+=c.stats.t2Lines,a.omittedChars+=c.stats.omittedChars}return[a.summary,c.t0Text,c.t1Text,c.t2Text,c.omittedNote].filter(Boolean).join("\n\n")}function F(a,b,c){let d=Number.isFinite(c)&&c>0?Math.floor(c):8e3,e=D(a,Math.floor(.5*d),b,!1),f=Math.max(1500,d-e.t0Text.length),g=B(a.textEvidence,f,(a,b)=>{let c=m(a.content),d=c.length>300?`${c.slice(0,300)}…`:c;return`- [${b}] ${l(a)}|${d}`},a=>A(a,b)),h=g.lines.length?`【章级证据摘要池——全章证据要点概览(正文事实必须以关键事实层与绑定材料为准,摘要仅供定位材料方向)】
28
- ${g.lines.join("\n")}`:"",i=g.omittedItems.slice(0,40).map((a,b)=>C(a,b,60)),j=i.length?`【证据目录——未进摘要池的片段索引(正文写作不使用目录内容;完整片段仍参与后续检索与质量校验)】
29
- ${i.join("\n")}`:"";return[e.t0Text,h,j].filter(Boolean).join("\n\n")}},71001:(a,b,c)=>{c.d(b,{EN:()=>m,Kg:()=>F,My:()=>B,SP:()=>D,av:()=>n,c_:()=>y,eB:()=>t,el:()=>z,k2:()=>C,kw:()=>q,tQ:()=>p});var d=c(78217),e=c(70933),f=c(99956),g=c(70208),h=c(40299),i=c(54185),j=c(38115),k=c(31129),l=c(36366);function m(a){return a.replace(/(.*?)(.{2,4})\2$/u,"$1$2")}function n(a,b){let c=`${a} ${b}`,d=[/项目主要施工内容/u.test(c)?"每个施工工作包(#### 工作包名)必须逐包覆盖三方面要素:①作业对象与工程量(本项目部位、规模、系统边界,工程量数值与工程量清单汇总值一致)、②工序顺序(先后清晰,至少 1 处不少于 4 个环节的工序顺序表达)、③施工方法(工具机具、工艺参数、验收闭环);只写流程不写概况、或只列方法不写流程的工作包会被退回重写;每个专业工程单独一个小节,不得把所有专业工程合并;不得以表格代替叙述(正文表格须来自系统表格计划,不得自设),严禁出现“分部小计/本页小计/合计/按实/暂估/综合单价/措施项目费/规费/税金”等清单计价表内部口径词(“措施项目”作为专业工程类别名称可用,不得与“清单/计价/费”连用)。":"",/劳动力/u.test(a)&&/资源配置/u.test(b)?"本节是劳动力章内的资源配置计划:只写劳动力资源,不得写机械设备、材料物资(由物资/机械章承担)——必须展开①工种结构与人数(钢筋工/木工/瓦工/普工等各工种人数,来自绑定资料,无资料时按本项目工程量与总工期推导并写明推导依据)②分阶段劳动力投入计划(施工准备/主体/收尾各阶段进退场人数与班组数,可用表格)③作业面/施工段配员与班组划分④劳动力来源、组织与工资保障措施。每个数值必须可溯源(资料事实或推导说明),禁止只写“合理配置劳动力”“满足施工需要”等空泛表述。":"",/工程特点|施工条件|重难点|难点/u.test(c)?"必须写出本工程的重难点分析:每条重难点按“名称+形成原因(归因)+影响范围+专项措施+量化控制目标(数值+单位,如控制率%/偏差mm/频次每日1次)”展开,可附「重难点识别表」(表头:重难点|形成原因|影响范围|专项措施|责任岗位,数据行至少3条,每条必须写形成原因);禁止只写“本项目存在XX难点”而不写原因与对策。":"",/概况|工程|项目/u.test(c)?"必须落入项目名称、范围、地点、规模、工期、质量目标等资料事实;说明编制边界。":"",/部署|总体|组织/u.test(c)?"必须说明施工组织逻辑、施工段/专业接口、资源进场和管理闭环。":"",/进度|工期/u.test(c)?"必须围绕总工期、关键线路、资源保障、穿插施工和纠偏机制展开。":"",/质量/u.test(c)?"必须覆盖材料验收复验、过程检查、隐蔽验收、整改复验和质量资料归档。":"",/安全|文明|风险|危大/u.test(c)?"必须覆盖风险识别、人员设备、临电消防、现场文明、检查整改和应急响应。":"",/资源|材料|设备|劳动力/u.test(c)?"必须说明资源配置依据、进场验收、保管调配,并与工期和质量目标一致。":"",/劳务|农民工|用工|工资|工伤/u.test(c)?"劳务用工/工资类内容必须写入政策合规硬项:按规定为全体作业人员办理工伤保险(保险费用由企业承担并计入投标报价,进场前完成参保并留存缴费凭证);农民工工资实行专用账户与总包代发、按月足额支付,写清实名制用工与进场登记。不得只写“依法用工”“按时发放工资”等无落实细节的表述。":"",/施工|工艺|技术|方案/u.test(c)?"必须写清施工准备、工艺流程、关键控制点、验收要求和资料依据;每个分项工程方案必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定资料或行业通用规范值,不得编造;纯设备配置型内容必须写型号、规格、容量、数量参数。工序顺序表达:工艺流程必须有明确的工序顺序表达(系统已为各小节指定表达方式;相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),每个含方法叙述的三级小节方法段正文至少 1 处不少于 4 个环节的工序顺序表达,不得只在单独的流程行出现。":"",/流程|顺序|工序|穿插|闭环|整改|演练|转运|三检|隐蔽|排查/u.test(c)?"流程/顺序型叙述必须有明确的工序顺序表达(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),每条序列不少于 3 个环节,把纯文字流程描述改写成分步清晰、衔接自然的表达,正文中至少 2 处工序顺序表达。":""].filter(Boolean),e=d.find(a=>a.includes("工序顺序表达"));return["【小节专业任务卡】",`任务对象:${b}`,...d.length?d:["必须结合本项目资料明确事实说明对象范围、实施方法、控制要点、验收要求和资料闭环,避免泛化套话。"],...e?["工序顺序表达是硬性内容要求:正文成稿必须实际出现工序顺序表达(系统已为各小节指定表达方式;相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),评审将核验,未达标会被退回重写。"]:[],"禁止套话:不得使用“本小节围绕……展开”“结合绑定项目资料、施工组织安排和现场实施条件”“交底覆盖率按100%控制”等模板化开篇;不得只写“加强管理、严格把控、确保质量”式口号;每个三级小节必须写与本节标题对应的专属内容,不得与其他小节内容相同或近似;每个句子必须携带至少一个信息载体(数值、部位、材料、工序、岗位、时限其一),无信息载体的空泛句不得出现——判断标准是句中不含数值、部位、材料、工序、岗位、时限、记录中的任何一项,而不是句中不含某个固定说法。"].join("\n")}function o(a){let b=(0,g.nz)(a).replace(/\s+/gu,"");return!!(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b))||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)/u.test(b)}function p(a,b){let c=(0,g.nz)(a),d=(0,g.nz)(b);if(c.length<4||c.length>60||c===d||o(c)||/^(?:目标与范围|资料依据|实施内容|质量控制|概述|总体要求)$/u.test(c)||(0,i.cq)(c)||/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(c)||/如需|应由|大模型|提示词|上下文|动态规划|OUTLINE|章节生成|按照.*明确指定|需求和资料|JSON|小节标题/u.test(c)||/(.)\1/u.test(c)||(0,j.qL)(c)||(0,g.Fe)(c))return!0;let e=d.match(/[\p{L}\p{N}]{2,6}$/u)?.[0]||"";return!(!(e.length>=2&&/^.{2,8}\p{L}$/u.test(c)&&c.endsWith(e.slice(-1)))||c.includes(e))}function q(a,b){let c=(0,g.nz)(a).replace(/[\s()()::.。;;,,、-]/gu,""),d=(0,g.nz)(b).replace(/[\s()()::.。;;,,、-]/gu,"");return!!c&&!!d&&(c===d||c.includes(d)||d.includes(c))}function r(a){return/判断是否涉及|若涉及|若不涉及|如果涉及|如果不涉及|不涉及.*如实说明|根据项目所在地气候特征|根据计划施工周期|根据.*施工周期|按需|视情况|可设置|专项小节/u.test(a)}function s(a,b=""){let c=r(b);return Array.from(new Set(a.map(g.nz).filter(a=>!(a.length<2||a.length>30||o(a)||/必须|强制|排序|设置|输出|独立|之后|之前|小节|其他必要/u.test(a)||c&&/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(a)))))}function t(a){let b=a.replace(/\\n/gu,"\n").replace(/\r/gu,"");if(!/(?:除文字表述外)?可附下列图表|图表及格式要求附后|附下列图表|附表.{0,12}附后/u.test(b))return{titles:[],attachedAtEnd:!1};let c=[],d=new Set;for(let a of b.matchAll(/附表\s*([一二三四五六七八九十\d]{1,3})\s*[::]?\s*([^\n。;;::]{2,40}(?:表|图))/gu)){let b=(a[1]||"").trim(),e=(a[2]||"").replace(/\s+/gu," ").replace(/([\u3400-\u9fff\u3000-\u303f\uff00-\uffef])[ \u3000]+(?=[\u3400-\u9fff\u3000-\u303f\uff00-\uffef])/gu,"$1").trim();b&&e&&!(e.length<3)&&(d.has(b)||(d.add(b),c.push(`附表${b} ${e}`)))}return{titles:c,attachedAtEnd:c.length>=2}}function u(a){return a.split(/[、,,//]/u).map(a=>a.trim().replace(/["“”'‘’《》<>]/gu,"")).filter(a=>a.length>=2&&a.length<=24&&!/[。;;::]/u.test(a))}function v(a){let b=new Set;for(let c of[/(?:关键词|核心要点|必含关键词|必须包含的关键词)[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须)包含(?:以下|如下)?(?:关键词|核心词|术语)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of u(d[1]||""))/表格|章节|小节|正文|目录|封面/u.test(a)||b.add(a);return[...b].slice(0,24)}function w(a){let b=new Set;for(let c of[/(?:禁用词|禁止词|不得使用词|禁用表达|禁止表达)[::]\s*([^。;;\n]+)/gu,/(?:禁止|不得|严禁|杜绝)出现(?:以下|如下)?(?:词语|用词|表达|话术)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of u(d[1]||""))b.add(a);return[...b].slice(0,40)}function x(a,b){return a.split(/[。;;\n]/u).map(a=>a.trim()).filter(a=>a.length>=4&&b.test(a)).slice(0,24)}function y(a){let b=a.attributedPrompts||[],c=[a.promptTexts,a.requirement||""].filter(Boolean).join("\n\n").replace(/\\n/gu,"\n"),e=function(a){let b=a.replace(/\\n/gu,"\n"),c=new Set;for(let a of(/全文必须输出[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||/必须输出(?:的)?表格[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||"").split(/[、,,]/u)){let b=/([\p{Script=Han}A-Za-z0-9()()]{2,30}表)$/u.exec(a.trim())?.[1];b&&b.length>=4&&b.length<=30&&c.add(b)}/项目基本信息表/u.test(b)&&c.add("项目基本信息表");let d=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"];/杜绝(?:套话|空话)|禁止(?:套话|空话)|不得(?:套话|空话)|严禁(?:套话|空话)/u.test(b)&&d.push("高度重视","重中之重"),/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(b)&&d.push("报价明细表");let e=A(b,"封面"),f=A(b,"目录");return{coverPolicy:e,tocPolicy:f,forbidCover:"forbidden"===e,forbidToc:"forbidden"===f,forbiddenTerms:[...new Set(d)],preferredTerms:[{from:"高度重视",to:"严格落实"},{from:"重中之重",to:"关键控制事项"}],requiredTables:[...c],requiredKeywords:v(b),forbiddenPatterns:w(b)}}(c),f=[...new Set([...e.requiredTables,...function(a){let b=new Set;for(let c of[/(?:必须|应当|需要|全文必须|至少)输出(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须|至少)包含(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:表格清单|表格要求)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of(d[1]||"").split(/[、,,//及和与]/u)){let c=/([\p{Script=Han}A-Za-z0-9()()《》<>]{2,40}表)/u.exec(a.trim())?.[1];c&&b.add(c.replace(/[<>《》]/gu,""))}for(let c of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,40}表)(?:必须|应当|需要|不得缺失|不可缺失)/gu))b.add(c[1]);return/项目基本信息表/u.test(a)&&b.add("项目基本信息表"),[...b]}(c)])],g=t(c),h=v(c),i=w(c),j=function(a){let b=[],c=(/<OUTLINE>([\s\S]*?)<\/OUTLINE>/u.exec(a)?.[1]||"").split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),d=c.some(a=>/^\s*\d+\s*[.、.]\s*(?!\s*\d)/u.test(a));for(let a of c){if(d&&/^\s*\d+\s*[.、.]\s*\d+/u.test(a))continue;let c=a.replace(/^\s*(?:\d+(?:[.、.]\d+)*[.、.]?|[-*])\s*/u,"").trim();c.length>=2&&c.length<=80&&!o(c)&&b.push(c)}return[...new Set(b)]}(c),k=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"],l=/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(c)?["报价明细表"]:[],m=[],n=function(a){let b=(0,d.py)(a);if(b.targetChars&&b.targetChars>0)return b.targetChars;let c=/(?:不少于|至少|最低|必须生成不少于)\s*(\d+(?:\.\d+)?)\s*(万)?\s*字/u.exec(a);if(!c)return;let e=Number(c[1]);if(Number.isFinite(e)&&!(e<=0))return Math.floor(e*(c[2]?1e4:1))}(c),p=(a.template?.chapters||[]).map(a=>({chapterTitle:a.title,mustInclude:x(c,RegExp(`${a.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}|${a.title.slice(0,6).replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}`,"u")).slice(0,8),mustNotInclude:x(c,/禁止|不得|严禁|杜绝/u).filter(b=>b.includes(a.title)).slice(0,8)})).filter(a=>a.mustInclude.length>0||a.mustNotInclude.length>0),q=(a.sourcePrompts||[]).map(a=>({promptName:a.name,focusAreas:x(a.content,/重点|关注|围绕|响应|体系|措施|质量|安全|工期|资源/u).slice(0,8),mustDo:x(a.content,/必须|应当|需要|确保|严格/u).slice(0,10),mustNotDo:x(a.content,/禁止|不得|严禁|杜绝/u).slice(0,10)})).filter(a=>a.focusAreas.length>0||a.mustDo.length>0||a.mustNotDo.length>0),r=[e.coverPolicy&&"unspecified"!==e.coverPolicy?`已识别封面规则:${"required"===e.coverPolicy?"要求生成":"禁止生成"}`:"",e.tocPolicy&&"unspecified"!==e.tocPolicy?`已识别目录规则:${"required"===e.tocPolicy?"要求生成":"禁止生成"}`:"",j.length?`已识别一级章节固定规则 ${j.length} 条`:"",m.length?`已识别禁用主体表达:${m.join("、")}`:"",e.forbiddenTerms.length?`已识别禁用词 ${e.forbiddenTerms.length} 个`:"",f.length?`已识别必需表格:${f.join("、")}`:"",g.titles.length?`已识别招标附表清单(文末附列):${g.titles.join("、")}`:"",h.length?`已识别必含关键词:${h.join("、")}`:"",i.length?`已识别禁止出现内容:${i.join("、")}`:"",n?`已识别目标字数要求:${n} 字`:"",q.length?`已抽取提示词执行规则 ${q.length} 组`:""].filter(Boolean),s=[],u={},y=(a,c,d,e)=>{let f=function(a,b,c){for(let d of a)if(d.content.includes(b))return{promptId:d.promptId,name:d.name,pattern:c};return{promptId:"system:generation-control",name:"generation-control",pattern:c}}(b,d,e);u[a]||(u[a]=[]),u[a].length<24&&u[a].push({...f,matchedText:d}),s.length<60&&s.push({rule:c,source:f,matchedText:d})};for(let a of(e.coverPolicy&&"unspecified"!==e.coverPolicy&&y("coverPolicy",`已识别封面规则:${e.coverPolicy}`,"封面",/封面|cover/u.source),e.tocPolicy&&"unspecified"!==e.tocPolicy&&y("tocPolicy",`已识别目录规则:${e.tocPolicy}`,"目录",/目录|toc/u.source),f))y("requiredTables",`必需表格:${a}`,a,/全文必须输出|必须输出表格|项目基本信息表/u.source);for(let a of h)y("requiredKeywords",`必含关键词:${a}`,a,/必须包含|必须含|应包含|需要包含/u.source);for(let a of i)y("forbiddenPatterns",`禁止内容:${a}`,a,/禁止|不得|严禁|杜绝/u.source);for(let a of j)y("exactHeadings",`固定章节:${a}`,a,/第[一二三四五六七八九十百千\d]+章/u.source);return n&&y("minWords",`最低字数:${n}`,String(n),/\d{3,}\s*字/u.source),{...e,requiredTables:f,requiredKeywords:h,forbiddenPatterns:i,appendixTableTitles:g.titles.length>0?g.titles:void 0,appendixAttachedAtEnd:g.attachedAtEnd||void 0,sourceHash:function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(16)}(c),exactHeadings:j,forbidExtraHeadings:/不得合并|不得删除|不得改名|不得新增|严格按.*章节名称|一级章节.*不得/u.test(c)||j.length>0,requiredSubjects:/我公司/u.test(c)?["我公司","项目部"]:[],forbiddenSubjects:m,backendTerms:k,commercialTerms:l,forbiddenTerms:[...new Set([...e.forbiddenTerms,...k,...l,...m])],forbidFabrication:/不得编造|严禁编造|不得擅自|资料未明确|系统暂未|事实真实性/u.test(c),requireEvidenceForQuantities:/量化|参数|数值|具体数据|具体参数|工程实体参数|资料中明确|不得空泛|不能空泛|泛泛而谈/u.test(c),preferProjectFacts:/事实优先|项目事实|真实性高于/u.test(c),minWords:n,minChars:n,chapterRules:p,promptRules:q,executionSummary:r,ruleSources:Object.keys(u).length>0?u:void 0,extractionTrace:s.length>0?s:void 0}}function z(a){let b=[`运行时规则版本:${a.sourceHash}`,"required"===a.coverPolicy?"用户要求输出封面时必须保留封面;未要求时不得由系统擅自决定。":"","required"===a.tocPolicy?"用户要求输出目录时必须保留目录,并确保目录只来自最终合法正文标题。":"",a.forbidCover?"用户明确禁止输出封面。":"",a.forbidToc?"用户明确禁止输出目录、目录说明或导航页。":"",a.exactHeadings.length?`一级章节必须严格使用:${a.exactHeadings.join(";")}`:"",a.forbidExtraHeadings?"不得新增、删除、合并或改名一级章节。":"",a.requiredSubjects.length?`正文主体优先使用:${a.requiredSubjects.join("、")}`:"",a.forbiddenSubjects.length?`禁止主体表达:${a.forbiddenSubjects.join("、")}`:"",a.forbidFabrication?"不得编造系统暂未从知识库确认的项目事实、工程实体参数、人名、联系方式或品牌;应通过扩大检索、事实补抽或落位修复解决。":"",a.requireEvidenceForQuantities?"涉及数量、工期、质量标准目标、规格型号等项目专属参数时必须以绑定资料中的明确事实为准;通用标准规范编号与法规名称可依据现行有效版本直接引用。":"",a.commercialTerms.length?`禁止输出商务敏感内容:${a.commercialTerms.join("、")}`:"",a.backendTerms.length?`禁止输出系统内部话术:${a.backendTerms.join("、")}`:"",a.requiredTables.length?`必须输出以下正式 Markdown 表格:${a.requiredTables.join("、")}。表格必须包含表名、表头、分隔线和数据行。`:"",a.requiredKeywords?.length?`正文必须覆盖以下关键词或要点:${a.requiredKeywords.join("、")}。`:"",a.forbiddenPatterns?.length?`正文禁止出现以下内容:${a.forbiddenPatterns.join("、")}。`:""].filter(Boolean);return`以下规则由系统运行时从用户绑定指令中自动抽取,不作为用户可编辑内容。生成、检查和修复必须共同遵守:
30
- ${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}`}function A(a,b){let c=RegExp(`(?:生成|包含|输出|需要|保留|设置|编制|制作)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:必须|应当|需要|保留|生成|输出|包含)`,"u").test(a);return RegExp(`(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)`,"u").test(a)?"forbidden":c?"required":"unspecified"}function B(a,b){let c=a.replace(/\\n/gu,"\n"),d=new Map,e=[...c.matchAll(/第([一二两三四五六七八九十\d]+)章[^\n。;;]{0,80}(?:强制|必须|挂靠|小节|排序|最先|之后|之前)/gu)];for(let a of e){let b=function(a){let b={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if(/^\d+$/u.test(a))return Number(a);if(void 0!==b[a])return b[a];if("十"===a)return 10;let c=/^(?:(一|二|两|三|四|五|六|七|八|九)?)十(?:(一|二|两|三|四|五|六|七|八|九))?$/u.exec(a);if(c)return 10*(c[1]?b[c[1]]:1)+(c[2]?b[c[2]]:0)}(a[1]);if(!b)continue;let f=Math.max(0,a.index||0),g=e.find(a=>(a.index||0)>f)?.index,h=c.slice(f,Math.min(c.length,g??f+1400));if(r(h)&&!/(强制小节|必须小节|以下小节设置和排序|必须设置独立的|必须包含独立的)/u.test(h))continue;let i=function(a){let b=/(?:以下小节设置和排序|强制小节|必须小节)[::]\s*([\s\S]*?)(?:\n\s*#{2,6}\s|\n\s*第[一二两三四五六七八九十\d]+章|$)/u.exec(a)?.[1];if(b){let c=s([...b.matchAll(/(?:^|\n)\s*\d+[..、]\s*([^——\-—::。;;\n]{2,30})(?:[——\-—::]|,|,|。|;|;|\n|$)/gu)].map(a=>a[1]),a);if(c.length>0)return c}let c=[];for(let b of a.matchAll(/第[一二两三四五六七八九十\d]+章[^。;;\n]{0,50}(?:强制)?(?:包含|设置|输出|排序|挂靠)[^::。;;\n]{0,20}[::]\s*([^。;;\n]{2,120})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);for(let b of a.matchAll(/[“"]([^”"]{2,30})[”"]\s*(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,30})(?:——|—|-|:|:)\s*(?:独立的)?(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/(?:必须|应当|需|需要|包含|设置|输出)[^。;;\n]{0,30}(?:独立的)?(?:二级)?小节[::]\s*([^。;;\n]{2,80})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);return s(c,a)}(h);if(0===i.length)continue;let j=d.get(b)||{blocks:[],titles:[]};for(let a of(j.blocks.push(h),i))j.titles.some(b=>q(b,a))||j.titles.push(a);d.set(b,j)}return[...d.entries()].map(([a,c])=>{let d=b?.[a-1];return{chapterIndex:a-1,chapterTitle:d?.title,source:c.blocks[0]?.split("\n").find(a=>a.trim())?.trim().slice(0,120),requiredSections:c.titles.map((a,b)=>({title:a,order:b+1,required:!0,source:c.blocks[0]?.slice(0,240)}))}})}function C(a=[],b){let c=[];for(let d of a){let a=m((0,g.nz)(d));!(!a||p(a,b))&&(c.some(b=>q(b,a))||c.push(a))}return c}async function D(a){let b,c=C(a.lockedSections||[],a.chapter.title),d=(0,e.ks)((0,e.QO)(a.chapter,a.evidence),{maxChars:(0,e.Pc)(a.targetWords,5e3,12e3),diagnostics:a.diagnostics}),i=function(a,b,c,d){let e=a.title,f=/质量|安全|工期|进度|物资|材料|机械|设备|劳动力|危大|专项|文明|总平面|施工方法|施工方案/u.test(e),g=b>=14e3?6:b>=8e3?5:b>=5e3||b>=3e3?4:3;f&&(g=Math.max(g,4));let h=new Set((c.map(a=>`${a.sectionTitle||""}
31
- ${a.content}`).join("\n").slice(0,3e4).match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+/giu)||[]).map(a=>a.replace(/\s+/gu,""))).size;return h>=20?g=Math.max(g,5):h>=10&&(g=Math.max(g,4)),Math.max(g,d)}(a.chapter,a.targetWords,a.evidence,c.length),j=Math.max(i,Math.min(7,a.targetWords>=8e3?7:6)),k=0===a.chapterIndex||/编制说明|工程概况|项目概况/u.test(a.chapter.title),n=async()=>{let b=await (0,f.bb)([(0,h.y4)("你是专业文档结构规划专家。"),"只根据用户提示词、章节标题和真实绑定资料规划本章二级小节。","施工组织、技术措施、资源配置、质量、安全、工期、材料、设备、劳动力、危大工程等核心章节必须拆成足够的专业工作面,不得只输出两个泛化小节。","危大工程判定、危险性分级、专家论证要求等危大内容只允许落位在危大工程专项章节或基坑支护相关小节,其他章节不得规划危大清单/危大判定类小节,避免分级结论散落多处产生口径矛盾;危大清单表格只列资料参数确认达到判定阈值的类别,不得列入正文声明“本工程无/未涉及”的类别,防止清单与排除声明自相矛盾。","小节标题必须直接属于本章主题域:例如“人材机保障/资源配置”章只允许劳动力、材料、机械设备、周转类标题;不得规划本章主题域之外的内容小节。",c.length?`本章锁定二级小节(提示词强制要求/模板或 OUTLINE 已提供,必须按此顺序置于小节清单最前,不得删除、改名或重排):${c.join("、")}`:"",k?"本章是全文第一章:若规划出“编制说明与工程概况”类小节,必须置于小节清单第一位,不得排在任何其他小节之后。":"",a.diversity?.directive||"","只返回 JSON。"].filter(Boolean).join("\n"),[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.chapter.purpose&&!p(a.chapter.purpose,a.chapter.title)?`章节目的:${a.chapter.purpose}`:"",a.requirement?`用户要求:${a.requirement}`:"",a.projectContext?`上下文:
32
- ${a.projectContext}`:"",a.projectGraphSummary?`本项目专业工程与资源图谱:
33
- ${a.projectGraphSummary}`:"",a.boqCoverageSummary?`本工程工程量清单分部分项全景(下列专有分项必须逐项规划对应施工小节,不得只规划道路、铺装、绿化等大类而遗漏清单独有分项):
34
- ${a.boqCoverageSummary}`:"",a.roleContext,a.diversity?.avoidSections?.length?`以下小节标题已在历史文档中使用,本次命名必须避开相同或高度近似的表达(等价内容换角度、换词面,不得只调整语序或添加“工作/内容”尾词):
35
- ${a.diversity.avoidSections.slice(0,60).map(a=>`- ${a}`).join("\n")}`:"",a.promptTexts?`配置写作主控提示词:
36
- ${a.promptTexts}`:"",d?`真实绑定资料:
37
- ${d}`:"",`请输出 ${i}-${j} 个适合直接成稿的二级小节标题。标题必须具体、业务相关、能承载真实资料;每个标题控制在 16 个汉字以内,避免多个小节表达同一内容。`,"forbidden"===a.bodyTablePolicy?"本标书为暗标(招标编制要求:正文内不允许出现表格与框图):tables 必须返回空数组;计划、清单、台账类内容一律规划为纯文字叙述型小节,不得规划表格型小节。":"如本章需要输出管理表格或清单(投入计划表、控制要点表、验收清单、管控台账、检查记录表等),必须在 tables 中逐表给出表名与表头字段(字段名必须具体、可填);不需要表格时 tables 返回空数组。",'JSON 格式:{"sections":["小节标题1","小节标题2"],"tables":[{"title":"表名","fields":["字段1","字段2"]}]}'].filter(Boolean).join("\n\n"),{maxTokens:2400,temperature:l.TD,signal:a.signal,diagnostics:a.diagnostics}),e=[];for(let c of b?.sections||[]){let b=m((0,g.nz)(String(c)));!(!b||p(b,a.chapter.title))&&(e.some(a=>q(a,b))||e.push(b))}let n=[...c];for(let a of e)n.some(b=>q(b,a))||n.push(a);let o=function(a){let b=new Set,c=[];for(let d of a){let a=(0,g.nz)(d).replace(/[\s()()::.。;;,,、\-—]/gu,"");!a||b.has(a)||(b.add(a),c.push(d))}return c}(n),r=[];for(let c of"forbidden"===a.bodyTablePolicy?[]:b?.tables||[]){let b=m((0,g.nz)(String(c?.title||"")));!(!b||p(b,a.chapter.title))&&(r.some(a=>q(a.title,b))||r.push({title:b,fields:(c?.fields||[]).map(a=>String(a).trim()).filter(Boolean).slice(0,12)}))}return{sections:o,tables:r}};try{b=await n()}catch(b){if(c.length>0)return console.error(`[plan] 小节规划 LLM 调用失败(保留锁定小节 ${c.length} 个继续):${a.chapter.title},${b instanceof Error?b.message:String(b)}`),{sections:c,tables:[]};throw b}let o=b.sections;if(k){let a=o.findIndex(a=>/编制说明|工程概况|项目概况/u.test(a));a>0&&(o=[o[a],...o.slice(0,a),...o.slice(a+1)])}let r=a.diversity?.overlapCheck?a.diversity.overlapCheck(o):[];if(0===r.length)return{...b,sections:o};let s=await E({chapter:a.chapter,sections:o,collisions:r,locked:c,overlapCheck:a.diversity?.overlapCheck,signal:a.signal,diagnostics:a.diagnostics}),t=a.diversity?.overlapCheck?a.diversity.overlapCheck(s.sections).length:0;return t>0&&console.warn(`[plan] 局部改名后仍存在历史撞名(接受,不阻断):${a.chapter.title},${t} 处`),s.renamed>0&&console.info(`[plan] 撞名局部改名:${a.chapter.title},${s.renamed} 个标题已替换候选名`),{...b,sections:s.sections,diversity:{retried:!0,remainingCollisions:t}}}async function E(a){let b,c=[...a.sections],d=a.collisions.filter(b=>!a.locked.some(a=>q(a,b.title))).map(a=>a.title);if(0===d.length)return{sections:c,renamed:0};try{let e=await (0,f.bb)([(0,h.y4)("你是施工组织设计目录命名审查专家。"),"输入某章的小节标题清单与需改名的标题(与历史文档撞名),只输出改名映射。\n改名规则:只改点名标题,不改未点名标题;新标题必须仍是同一专业对象或同一工程内容的具体表述,不得改变小节实质;16 个汉字以内;不得仅通过添加“工作/内容/相关/方案”等尾词规避撞名,必须实质性更换措辞;不得与本章其他小节标题用词高度相似(防章内撞名)。\n只返回 JSON。"].join("\n"),`章标题:${(0,g.GQ)(a.chapter.title)}
38
-
39
- 本章小节清单:
40
- ${c.map(a=>`- ${a}`).join("\n")}
41
-
42
- 需要改名的标题:${d.join("、")}
43
-
44
- 历史撞名对照(本次 ↔ 历史文档):
45
- ${a.collisions.map(a=>`「${a.title}」↔「${a.collidedWith}」`).join("\n")}
46
-
47
- JSON 格式:{"renames":{"原标题":"新标题"}}(只包含需要改名的标题)`,{maxTokens:600,temperature:l.TD,signal:a.signal,diagnostics:a.diagnostics});b=e?.renames&&"object"==typeof e.renames?e.renames:{}}catch(b){return console.warn(`[plan] 撞名局部改名调用失败(保留原名):${a.chapter.title},${b instanceof Error?b.message:String(b)}`),{sections:c,renamed:0}}let e=0;for(let[f,h]of Object.entries(b)){let b=(0,j.JG)(f);if(!b||!d.some(a=>(0,j.JG)(a)===b))continue;let i=c.findIndex(a=>(0,j.JG)(a)===b);if(i<0)continue;let l=(0,g.nz)(String(h||""));!(!l||l.length>24||(0,j.qL)(l)||p(l,a.chapter.title)||c.some((a,b)=>b!==i&&(0,k.gJ)(a,l)))&&(a.overlapCheck&&a.overlapCheck([l]).length>0||(c[i]=l,e+=1))}return{sections:c,renamed:e}}function F(a){let b=y({promptTexts:a}),c=B(a).filter(a=>a.requiredSections.length>0).map(a=>`第${(a.chapterIndex??0)+1}章${a.chapterTitle?`(${a.chapterTitle})`:""}强制小节(按序锁定):${a.requiredSections.slice().sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title).join("、")}`);return{recognized:b.executionSummary.length>0||c.length>0,summary:[...b.executionSummary,...c],requiredTables:b.requiredTables,requiredKeywords:b.requiredKeywords||[],forbiddenPatterns:b.forbiddenPatterns||[],exactHeadings:b.exactHeadings||[],minWords:b.minWords,coverPolicy:b.coverPolicy||"unspecified",tocPolicy:b.tocPolicy||"unspecified"}}},80572:(a,b,c)=>{let d;c.d(b,{z:()=>f});let e=["chapterConcurrency","sectionConcurrency","sectionGroupConcurrency","sectionGroupSize","sectionGroupTaskConcurrency","plannedBlockConcurrency","tableFixConcurrency","llmMaxConcurrency","llmMaxInFlightLlmCalls","prefixWarmupCacheCapacity","writingTaskConcurrency","projectGraphDomainConcurrency","writingTaskMaxWords","blockEvidenceChars","chapterPoolChars","evidenceBudgetRatio","evidenceBudgetCeiling","evidenceCatalogMaxLines","factCoverageCap","factExtractionMaxChars","factExtractionMaxItems","outlineEvidenceChars","persistEvidenceMaxItems","persistEvidenceItemChars","repairEvidenceChars","capacityFeasibilityRecalibration","blueprintBlockQuantityCap","blueprintBlockMaterialCap","blueprintBlockSliceCap"];function f(){let a=process.env.DOCUMENT_TUNING_PROFILE;if(d&&d.raw===a)return d.parsed;let b={};if(a)try{let c=JSON.parse(a);for(let a of e){let d=c[a];if("number"==typeof d)b[a]=d;else if("string"==typeof d&&""!==d.trim()){let c=Number(d);Number.isFinite(c)&&(b[a]=c)}}}catch(a){console.warn(`[tuningProfile] DOCUMENT_TUNING_PROFILE 解析失败,按全默认处理:${String(a)}`)}return d={raw:a,parsed:b},b}},91977:(a,b,c)=>{c.d(b,{I2:()=>g,Lk:()=>e,Uy:()=>f});var d=c(70208);function e(a,b){let c=`${a.filePath}
48
- ${a.content}`;return(function(a){let b=a.replace(/要求|计划|目标|标准|内容|信息|事实|依据|参数|范围|要点/gu,"");return[a,b].filter(Boolean)})(b).some(a=>c.includes(a))}function f(a,b){let c=(0,d._9)(a,b).flatMap(a=>a.requiredFacts).map(a=>({id:a,name:a,required:!0,sourceRoleIds:[],extractionHint:""})),e=b?.factFields.map(a=>({id:a.id,name:a.name,required:a.required,sourceRoleIds:a.sourceRoleIds||[],extractionHint:a.extractionHint||""}))||[],f=new Map;for(let a of[...c,...e])f.set(a.id,{...f.get(a.id)||a,...a,required:a.required||f.get(a.id)?.required||!1});return[...f.values()]}function g(a,b){return(!b.sourceRoleIds?.length||!!(a.roleId&&b.sourceRoleIds.includes(a.roleId)))&&e(a,b.name)}},95294:(a,b,c)=>{c.d(b,{MO:()=>R,OK:()=>S,hH:()=>s,r1:()=>Q,sP:()=>y,uW:()=>d});let d=/(?:确保|保证|达到|满足|符合|不低于|不超过|不得|禁止|严禁|必须|应当|须|应按|执行|遵守|落实|实施|采用|提供|提交|出具|配备|设置|建立|安装|配置|负责|完成|参加|组织|验收|检测|检验|控制|管理|保护|防止|杜绝|承诺|响应|要求|规定|标准|等级|目标|措施|方案|制度|计划|工期|质量|安全)/u,e=/^[((]?[一二三四五六七八九十百\d]{1,3}[、..))]\s*[^\n]{2,60}(?:\.{4,}|…{3,})\s*\d{0,4}\s*$/u,f="专用章|出图|设计研究总院|工程设计(?:甲|乙|丙)级|资质证书|证书编号",g=RegExp(f,"u"),h=RegExp(f,"gu"),i=/R\d{1,4}C\d{1,4}/u,j=/CHECKE|SUBITEM|子项名称/u,k=/^[\d..、()()\s//-]{1,16}$/u,l=/不得|严禁|禁止|必须|应当|应按|确保|保证|满足|符合|须|负责|承诺/u,m=/(?:回复|答复|答疑|答|澄清|释义)\s*[::]/u,n=/请(?:各|潜在|投标人|承包人|供应商|中标人)|(?:投标人|承包人|供应商|中标人)(?:应|须|需|负责)/u,o=/请(?:明确|澄清|复核|确认|补充|说明|解释|答复|核实|明示|告知|指示)/u,p=/[??]\s*[。.))]?$/u,q=/如何(?:确定|理解|考虑|处理|计取|计算|设置)|怎么(?:确定|理解|处理)|代表什么|什么意思|以何为准|按哪个|按照哪个|哪个为准|多少米|按照多少|按多少|是否需要|是否可以|能否/u,r=/(?:必须|应当|不得|严禁|禁止|应按|负责|确保|保证|应|须)/u;function s(a){let b=String(a||"").replace(/\s+/gu,"");if(!(b.length<3||b.length>100||m.test(b))&&!n.test(b)){if(o.test(b))return"request";if(p.test(b))return"question_tail";if(!r.test(b)&&q.test(b))return"interrogative"}}let t=/拉框|右键退出|按下shift键|异形区域|选择窗格|图片压缩|重设样式|编辑网图|标注分类|透明色效果|环绕旋转|下移选择/u,u=/[WHLwhl]\s*[::]?\s*\d{3,4}\s*[*×]\s*[WHLwhl]\s*[::]?\s*\d{3,4}/u,v=/\d\s*[mM]{4,}/u,w=/\d+(?:\.\d+)?\s*(?:mm|MM|㎜|毫米)\s*厚/u,x=/[,。;,;::]/u;function y(a){let b=String(a||"").replace(/\s+/gu,"");if(!(b.length<3)){if(t.test(b))return"ui_text";if(u.test(b))return"door_schedule";if(v.test(b))return"unit_echo";if(b.length<=70&&w.test(b)&&!x.test(b)&&!d.test(b))return"material_row"}}let z=/^\d{5,}[\u4e00-\u9fa5]/u,A=/^[1-9]\d?(?:\.\d{1,2}){2,}[^\d\s]{0,4}$/u,B=/^0{3,}[A-Za-z]?$/u,C=/^[1-9]\d?(?:\.\d{1,2}){1,3}[一-龥]{1,4}$/u,D=/(?:米|厘米|毫米|公里|吨|公斤|千克|平方|立方|天|年|月|日|小时|分钟|个|项|套|台|次|份|人|元|万元|度|伏|安|瓦|帕|吨位)$/u,E=/^\d{4}[A-Za-z]{1,8}\d{4,}\.\d+$/u,F=/第页共页|^第?\d*页共\d*页$/u,G=/^(?![MC]\d)(?![Mm][BbSs]?\d)(?![Ll][Cc]?\d)(?![Aa]\d)(?![Dd][Pp]\d)[A-Za-z]{1,4}\d{0,3}\.\d{1,3}$/u,H=/(签章)|\(签章\)|年月日|[::]\s*[//]\s*$/u,I=/^(?:\d{4}年|\d{1,2}月)$/u,J=/\d{4}\.\d{1,2}\.\d{3,}/u,K=/\d{3,}\s*以上/gu,L=/[。;;\n]/u,M=/[A-Za-z]{3,}|[A-Za-z]{1,3}\d{2,}|\d{6,}/u,N=/[,。;,;]/u,O=/([一-龥]{2,6})\1/gu,P=/^(?:世世代代|子子孙孙|日日夜夜|风风雨雨|时时刻刻|分分秒秒|形形色色|林林总总|家家户户|前前后后)$/u;function Q(a){let b=0;return{text:String(a||"").replace(RegExp(O.source,"gu"),a=>P.test(a)?a:(b+=1,"")),removed:b}}function R(a){let b=String(a||""),c=b.replace(/\s+/gu,"");if(c.length<3)return;let f=d.test(c);return i.test(c)?"sheet_coordinate":j.test(c)&&(!f||/CHECKE|SUBITEM/u.test(c))||function(a){let b=a.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean);return!(b.length<3)&&!(b.filter(a=>a.replace(/\s+/gu,"").length<=8).length<2)&&!!b.some(a=>k.test(a))&&!b.some(a=>a.length>=12&&l.test(a))}(b)?"table_fragment":y(b)?"ocr_table_residue":(c.match(h)||[]).length>=1&&!f?"drawing_signature":z.test(c)||C.test(c)&&!D.test(c)||E.test(c)?"numeric_smear":F.test(c)?"table_fragment":A.test(c)||B.test(c)||G.test(c)?"numeric_smear":function(a){let b=[];for(let c of String(a||"").matchAll(RegExp(O.source,"gu")))P.test(c[0])||b.push(c[0]);return b}(c).length>0?"duplicated_label":H.test(c)||J.test(c)?"table_fragment":I.test(c)?"date_fragment":e.test(c)?"toc_line":function(a){let b=0;for(let c of String(a||"").split(L)){let a=(c.match(RegExp(K.source,"gu"))||[]).length;a>b&&(b=a)}return b}(c)>=3?"penalty_table":s(b)?"clarification_query":c.length>60&&!N.test(c)&&M.test(c)?"listing_smear":void 0}let S=[e,g,h,i,j,z,A,C,D,E,F,B,G,H,I,J,M,N,K,L,3,100,m,n,o,p,q,r,t,u,v,70,w,x,12,l,3,8,k]},99956:(a,b,c)=>{let d,e;c.d(b,{rI:()=>_,bb:()=>ag,_v:()=>$,Qf:()=>G,CX:()=>Y,Sq:()=>R,nz:()=>T,TO:()=>W,t5:()=>H,Jx:()=>ab});var f=c(95393),g=c(54451),h=c(73024),i=c(76760),j=c(22157);function k(){let a=process.env.AGENT_CASSETTE_DIR;return a||i.join(process.cwd(),"apps","server","test","fixtures","llm")}function l(a){let b="number"==typeof a.stablePrefixChars&&a.stablePrefixChars>0&&a.stablePrefixChars<=a.prompt.length?a.stablePrefixChars:a.prompt.length;return(0,j.c6)(["writer-prompt-v1",a.model,JSON.stringify(a.params),a.system,a.prompt.slice(0,b)].join("\0"))}function m(a){return i.join(k(),`${a}.json`)}class n extends Error{constructor(a,b){super(`cassette 未命中(${b}):key=${a}。回放模式下未录制即测试失败,不静默回落到真调用。用 AGENT_RECORD=1 重跑以录制,产物落在 ${m(a)}。`),this.key=a,this.mode=b,this.name="CassetteMissError"}}async function o(a){let b="1"===process.env.AGENT_REPLAY?"replay":"1"===process.env.AGENT_RECORD?"record":"off";if("off"===b)return a.invoke();if("replay"===b){let c=function(a){try{let b=JSON.parse(h.readFileSync(m(a),"utf8"));return b?.v===1?b:void 0}catch{return}}(a.key);if(!c)throw new n(a.key,b);return c.response}let c=await a.invoke();try{h.mkdirSync(k(),{recursive:!0});let b={v:1,key:a.key,model:a.model,params:a.params,response:c,recordedAt:Date.now()};h.writeFileSync(m(a.key),JSON.stringify(b,null,2))}catch(a){console.error(`[cassette] 录制落盘失败(不影响生成):${a instanceof Error?a.message:String(a)}`)}return c}c(48161);let p=Object.freeze({"deepseek-chat:chat":{inputPerM:.27,outputPerM:1.1,cacheHitPerM:.27},"deepseek-chat:reasoning":{inputPerM:.27,outputPerM:1.1,cacheHitPerM:.27},"deepseek-reasoner:chat":{inputPerM:.27,outputPerM:1.1,cacheHitPerM:.27},"deepseek-reasoner:reasoning":{inputPerM:.27,outputPerM:1.1,cacheHitPerM:.27},"gpt-4o-mini:chat":{inputPerM:.15,outputPerM:.6,cacheHitPerM:.15},"gpt-4o:chat":{inputPerM:2.5,outputPerM:10,cacheHitPerM:2.5}}),q=[{pattern:/deepseek.*flash/iu,kind:"chat",entry:{inputPerM:.07,outputPerM:.27,cacheHitPerM:.07}},{pattern:/deepseek.*flash/iu,kind:"reasoning",entry:{inputPerM:.07,outputPerM:.27,cacheHitPerM:.07}},{pattern:/deepseek/iu,kind:"chat",entry:{inputPerM:.27,outputPerM:1.1,cacheHitPerM:.27}},{pattern:/deepseek/iu,kind:"reasoning",entry:{inputPerM:.27,outputPerM:1.1,cacheHitPerM:.27}},{pattern:/gpt-4o-mini/iu,kind:"chat",entry:{inputPerM:.15,outputPerM:.6,cacheHitPerM:.15}},{pattern:/gpt-4o/iu,kind:"chat",entry:{inputPerM:2.5,outputPerM:10,cacheHitPerM:2.5}}];Object.freeze({firstPassRateDrop:.1,costIncrease:.3,cacheHitRateDrop:.15,blockingIncrease:.2});var r=c(96770),s=c(29281),t=c(80572);let u=new Map,v=0,w=new WeakMap,x=0;function y(a){let b=function(a=process.env){let b=a.AGENT_LLM_CALL_TIMEOUT_MS;if(void 0===b||""===b.trim())return 3e5;let c=Number(b);return!Number.isFinite(c)||c<0?3e5:c}(),c=a??new AbortController().signal;if(0===b)return{signal:c,timeoutMs:b};let d=AbortSignal.timeout(b);return{signal:AbortSignal.any([c,d]),timeoutMs:b}}function z(a){let b=(0,g.Su)(a);return(0,g.kI)(b,function(a=process.env){let b,c=a.AGENT_COST_CEILING_USD;if(e&&e.raw===c)return e.value;if(void 0!==c&&""!==String(c).trim()){let a=Number(c);!Number.isFinite(a)||a<=0?console.warn(`[costModel] AGENT_COST_CEILING_USD 非法(${String(c)}),按「不设限」处理`):b=a}return e={raw:c,value:b},b}()),b}function A(a,b){let c=(0,g.II)(a);if(c)return(0,g.D)(a),b&&(b.llm.lastError=`预算耗尽(${c.kind}):本次调用未发起——${c.message}`),console.error(`[llm] 预算耗尽拒绝调用(${c.kind}):${c.message}`),c}function B(a,b,c,e,f){let h=Math.max(0,f?.promptCacheHitTokens||0),i=Math.max(0,f?.promptTokens||0),j=Math.min(Math.max(0,f?.promptCacheMissTokens??i-h),i),k=(0,g.Nz)(),l=f?1===k?i+Math.max(0,f.completionTokens||0):Math.floor(j+h*k+Math.max(0,f.completionTokens||0)):0,m=f&&c?function(a,b,c,e=process.env){let f=function(a,b,c=process.env){let e=function(a=process.env){let b=a.AGENT_COST_PRICES_JSON;if(d&&d.raw===b)return d.table;let{table:c,warning:e}=function(a){let b;if(!a||""===a.trim())return{table:{}};try{b=JSON.parse(a)}catch(a){return{table:{},warning:`AGENT_COST_PRICES_JSON 解析失败,按默认(占位)价格表处理:${a instanceof Error?a.message:String(a)}`}}if("object"!=typeof b||null===b||Array.isArray(b))return{table:{},warning:'AGENT_COST_PRICES_JSON 顶层必须是对象({"model:kind": {...}}),已忽略'};let c={},d=[];for(let[a,e]of Object.entries(b)){if("object"!=typeof e||null===e){d.push(a);continue}let b=Number(e.inputPerM),f=Number(e.outputPerM);if(!Number.isFinite(b)||!Number.isFinite(f)||b<0||f<0){d.push(a);continue}let g=Number.isFinite(Number(e.cacheHitPerM))&&Number(e.cacheHitPerM)>=0?Number(e.cacheHitPerM):b;c[a]={inputPerM:b,outputPerM:f,cacheHitPerM:g}}return{table:c,warning:d.length>0?`AGENT_COST_PRICES_JSON 中 ${d.length} 项非法已忽略:${d.slice(0,5).join("、")}`:void 0}}(b),f={...p,...c};return e&&console.warn(`[costModel] ${e}`),d={raw:b,table:f,warning:e},f}(c)[`${a}:${b}`];return e||q.find(c=>c.kind===b&&c.pattern.test(a))?.entry}(a,b,e);if(f)return function(a,b){let c=Math.max(0,b.inputTokens||0),d=Math.max(0,b.outputTokens||0),e=Math.min(Math.max(0,b.cacheHitTokens||0),c),f=b.cacheMissTokens,g="number"==typeof f&&Number.isFinite(f)?Math.min(Math.max(0,f),Math.max(0,c-e)):Math.max(0,c-e);return(e*a.cacheHitPerM+g*a.inputPerM+d*a.outputPerM)/1e6}(f,c)}(c,e,{inputTokens:f.promptTokens||0,outputTokens:f.completionTokens||0,cacheHitTokens:f.promptCacheHitTokens||0,cacheMissTokens:f.promptCacheMissTokens||0}):void 0,n=(0,g.dn)(a,{tokens:l,costUsd:m,priced:!f||void 0!==m,now:Date.now(),cacheHitTokens:h,cacheMissTokens:j});return n&&b&&(b.llm.lastError=n.message,console.error(`[llm] 预算耗尽:${n.message}`)),n}function C(a){return"reasoning"===a?"reasoning":"chat"}function D(a,b){return new Promise((c,d)=>{if(b?.aborted)return void d(Error("用户中止"));let e=()=>{clearTimeout(f),d(Error("用户中止"))},f=setTimeout(()=>{b?.removeEventListener("abort",e),c()},a);b?.addEventListener("abort",e,{once:!0})})}function E(a,b){return void 0!==a&&Number.isFinite(a)?0===a?1/0:a>0?Math.floor(a):b:b}function F(){return Math.min(function(a=process.env){let b=(0,t.z)().llmMaxConcurrency;if("number"==typeof b&&Number.isFinite(b))return E(Math.floor(b),8);let c=Number(a.DOCUMENT_LLM_MAX_CONCURRENCY);return Number.isFinite(c)?E(Math.floor(c),8):8}(),function(){let a=(0,t.z)().llmMaxInFlightLlmCalls;return"number"==typeof a&&Number.isFinite(a)?E(Math.floor(a),8):8}())}function G(a){return F()}function H(a){return F()}let I=[];function J(a){return new Promise((b,c)=>{if(v<F()){v+=1,b(K);return}let d={resolve:b,reject:c,settled:!1};I.push(d);let e=()=>{if(d.settled)return;d.settled=!0;let a=I.indexOf(d);a>=0&&I.splice(a,1),c(Error("用户中止"))};if(a){if(a.aborted)return void e();a.addEventListener("abort",e,{once:!0})}})}function K(){v=Math.max(0,v-1);let a=I.shift();a&&!a.settled&&(a.settled=!0,v+=1,a.resolve(K))}function L(a){let b=!1;return()=>{b||(b=!0,a())}}let M=0,N=[],O=null,P=new Map,Q=(()=>{let a=Number(process.env.DOCUMENT_PREFIX_SCHEDULE_WINDOW_MS);return Number.isFinite(a)&&a>=0?Math.floor(a):void 0})();function R(){return F()}function S(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败|abort|timeout|timed ?out|terminated/iu.test(b)}function T(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/maximum context length|context ?length|context ?window|too many tokens|input.{0,24}too long|prompt.{0,24}too long|请求.{0,16}(超长|过长|超出)|上下文.{0,16}(超长|超出|过长|窗口)/iu.test(b)||/400/u.test(b)&&/context|too ?long|token|length|上下文/iu.test(b)||/JSON.{0,10}被截断|JSON.{0,10}未闭合/iu.test(b)}function U(a,b){let c=(0,r.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":/deepseek/iu.test(a)?"deepseek":"openai"}function V(){let a=(0,s.I)().load(),b=a.models.reasoning.active||a.models.action.active||a.models.reader.active,c=[...a.models.reasoning.list,...a.models.action.list,...a.models.reader.list].find(a=>a.name===b);if(!c)return;let d=a.providers[c.provider];if(d)return{model:c,provider:d}}function W(){return"0"!==process.env.AGENT_THINKING_FOR_JUDGES?"reasoning":"structuredGeneration"}function X(a,b,c){let d=(0,f.thinkingCapabilityForModel)(b);return"disabled"===c?d&&"unsupported"!==d.disable?{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:d?.budgetPolicy==="shared"?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),已忽略“强制关闭思考”配置;建议切换 deepseek 或 gpt 系列模型`}:"enabled"!==c&&"structuredGeneration"===a&&d?"unsupported"===d.disable?{disableThinking:!1,budgetMode:"shared"===d.budgetPolicy?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),生成耗时受限;建议切换 deepseek 或 gpt 系列模型`}:{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:"compact"}}function Y(a){return a.filter(a=>!!a).reduce((a,b)=>a+b.length,0)}function Z(a,b){let c=a.llm.callBreakdown??(a.llm.callBreakdown={}),d=b||"(none)";return c[d]??(c[d]={calls:0,inputChars:0,l3Chars:0,cacheHitTokens:0,cacheMissTokens:0})}async function $(a){let b,c,{signal:d}=y(a.signal);if(a.signal?.aborted)throw Error("用户中止");let e=z(a.diagnostics);if(A(e,a.diagnostics))return;let g=await J(d);try{let e=V();if(!e)return;let{model:g,provider:h}=e,i=(0,j.c6)({provider:g.provider,model:g.name,baseUrl:h.baseUrl,directEndpoint:h.directEndpoint,protocol:h.protocol,apiKeyHash:h.apiKey?(0,j.c6)(h.apiKey):""}),k=u.get(i);k||(k=(0,f.createProvider)(U(g.provider,h),{baseUrl:h.baseUrl,apiKey:h.apiKey,modelName:g.name,directEndpoint:h.directEndpoint}),u.set(i,k));let m=g.name.toLowerCase(),n=X("structuredGeneration",m,g.thinking),p=k.capabilities?.maxOutputTokens||8192,q=/deepseek/iu.test(m)?Math.min(p,8192):p,r=Math.min(a.maxTokens??3200,q),s=a.stablePrefixChars&&a.stablePrefixChars>0?a.stablePrefixChars:void 0,t=l({system:a.system,prompt:a.messages.map(a=>a.content).join("\x01"),stablePrefixChars:s,model:g.name||"unknown",params:{temperature:a.temperature??0,maxTokens:r,tools:a.tools.map(a=>a.name).join(",")}}),v=await o({key:t,model:g.name||"unknown",params:{temperature:a.temperature??0,maxTokens:r},invoke:async()=>{let b;for(let c=0;c<4;c+=1)try{if(d?.aborted)throw Error("用户中止");return await k.chat(a.messages.map(a=>({role:a.role,content:a.content,toolCallId:a.toolCallId})),{temperature:a.temperature??0,maxTokens:r,signal:d,disableThinking:n.disableThinking,tools:a.tools})}catch(f){if(b=f,f instanceof Error&&"用户中止"===f.message||!S(f)||c>=3)throw f;let e=Math.min(3e4,1200*2**c)+Math.floor(400*Math.random());a.diagnostics&&(a.diagnostics.llm.retries+=1,a.diagnostics.llm.lastError=`工具循环瞬态错误退避 ${Math.round(e/1e3)}s(第 ${c+1} 次):${f instanceof Error?f.message:String(f)}`),await D(e,d)}throw b instanceof Error?b:Error(String(b))}});a.diagnostics&&(a.diagnostics.llm.calls+=1,a.diagnostics.llm.inputChars=(a.diagnostics.llm.inputChars||0)+a.system.length+a.messages.reduce((a,b)=>a+b.content.length,0),v.usage&&(a.diagnostics.llm.inputTokens=(a.diagnostics.llm.inputTokens||0)+v.usage.promptTokens,a.diagnostics.llm.outputTokens=(a.diagnostics.llm.outputTokens||0)+v.usage.completionTokens,a.diagnostics.llm.promptCacheHitTokens=(a.diagnostics.llm.promptCacheHitTokens||0)+(v.usage.promptCacheHitTokens||0),a.diagnostics.llm.promptCacheMissTokens=(a.diagnostics.llm.promptCacheMissTokens||0)+(v.usage.promptCacheMissTokens||0))),b=v.usage?{promptTokens:v.usage.promptTokens,completionTokens:v.usage.completionTokens,promptCacheHitTokens:v.usage.promptCacheHitTokens,promptCacheMissTokens:v.usage.promptCacheMissTokens}:void 0,c=g.name;let w=v.content?.trim()??"",x=(v.toolCalls||[]).map((a,b)=>({id:a.id||`call-${b}`,name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments??{})}));if(!w&&0===x.length)return;return{content:w,toolCalls:x}}finally{g(),B(e,a.diagnostics,c,C("structuredGeneration"),b)}}async function _(a,b,c=!1,d={}){let e,g,h=z(d.diagnostics);if(A(h,d.diagnostics))return;if(d.diagnostics){d.diagnostics.llm.calls+=1,d.diagnostics.llm.inputChars=(d.diagnostics.llm.inputChars||0)+a.length+b.length;let c=Z(d.diagnostics,d.prefixKey);if(c.calls+=1,c.inputChars+=a.length+b.length,c.l3Chars+=d.contextLayers?.l3||0,d.contextLayers){let a=d.diagnostics.llm.layerChars??(d.diagnostics.llm.layerChars={l0:0,l1:0,l2:0,l3:0});a.l0+=d.contextLayers.l0||0,a.l1+=d.contextLayers.l1||0,a.l2+=d.contextLayers.l2||0,a.l3+=d.contextLayers.l3||0}else d.diagnostics.llm.unlayeredChars=(d.diagnostics.llm.unlayeredChars||0)+a.length+b.length}let i=await J(d.signal);d.diagnostics&&(d.diagnostics.llm.maxActive=Math.max(d.diagnostics.llm.maxActive,v));try{let h,i=V();if(!i)return;let{model:k,provider:m}=i,n=(0,j.c6)({provider:k.provider,model:k.name,baseUrl:m.baseUrl,directEndpoint:m.directEndpoint,protocol:m.protocol,apiKeyHash:m.apiKey?(0,j.c6)(m.apiKey):""}),p=u.get(n);p||(p=(0,f.createProvider)(U(k.provider,m),{baseUrl:m.baseUrl,apiKey:m.apiKey,modelName:k.name,directEndpoint:m.directEndpoint}),u.set(n,p));let q=k.name.toLowerCase(),r=X(d.taskKind??"structuredGeneration",q,k.thinking);r.warning&&d.diagnostics&&!d.diagnostics.llm.thinkingWarning&&(d.diagnostics.llm.thinkingWarning=r.warning);let s=p.capabilities?.maxOutputTokens||8192,z=/deepseek/iu.test(q)?Math.min(s,8192):s,A="relaxed"===r.budgetMode&&d.maxTokens?Math.min(Math.ceil(6*d.maxTokens),z):d.maxTokens,B=Symbol("empty-content"),C=async(f,h=!1)=>{var i;if(d.signal?.aborted)throw Error("用户中止");let m=(i=d.diagnostics)?w.get(i)??0:x,n=m<3?0:m<6?2e4:m<10?45e3:6e4;if(n>0){let a=n+Math.floor(5e3*Math.random());d.diagnostics&&(d.diagnostics.llm.emptyStormWaits=(d.diagnostics.llm.emptyStormWaits||0)+1,d.diagnostics.llm.lastInfo=`空响应风暴长退避 ${Math.round(a/1e3)}s(连续空响应 ${m} 次)`),await D(a,d.signal)}let q=y(d.signal).signal,s=d.prefixKey||(0,j.c6)(`${a}
49
- ${b.slice(0,2e3)}`),u=(()=>{let e=d.contextLayers?.l3||0;if(e<=0||e>=b.length)return;let f=c?`${a}
50
- 只返回 JSON,不要返回 markdown。`:a,g=b.slice(0,b.length-e);if(!(g.length<500))return{warmupKey:(0,j.c6)(`${f}
51
- ${g}`),warmup:()=>{let a=d.diagnostics?Z(d.diagnostics,d.prefixKey):void 0;return a&&(a.calls+=1,a.inputChars+=f.length+g.length),p.chat([{role:"system",content:f},{role:"user",content:g}],{temperature:0,maxTokens:1,signal:q,disableThinking:r.disableThinking}).then(b=>{a&&b.usage&&(a.cacheHitTokens+=b.usage.promptCacheHitTokens||0,a.cacheMissTokens+=b.usage.promptCacheMissTokens||0)}).then(()=>void 0)}}})(),z=l({system:a,prompt:b,stablePrefixChars:(d.contextLayers?.l3||0)>0&&(d.contextLayers.l3||0)<b.length?b.length-(d.contextLayers.l3||0):void 0,model:k.name||"unknown",params:{temperature:d.temperature??0,maxTokens:f,jsonOnly:c,disableThinking:r.disableThinking}}),A=await o({key:z,model:k.name||"unknown",params:{temperature:d.temperature??0,maxTokens:f,jsonOnly:c,disableThinking:r.disableThinking},invoke:()=>new Promise((e,g)=>{!function(a,b,c,d){var e;let f=(e=v,void 0!==Q?Q:e>=16?500:120);if(f<=0)return b();N.push({fingerprint:a,launch:b,warmup:c,warmupKey:d}),O||(O=setTimeout(()=>{O=null;let a=N;N=[],function(a){let b=[...a].sort((a,b)=>a.fingerprint<b.fingerprint?-1:+(a.fingerprint>b.fingerprint)),c=[];for(let a of b){let b=c[c.length-1];b&&b[0].fingerprint===a.fingerprint?b.push(a):c.push([a])}for(let a of c)try{var d;let b=a.find(a=>a.warmup&&a.warmupKey),c="0"!==process.env.DOCUMENT_PREFIX_WARMUP&&a.length>=2&&b?.warmup&&b.warmupKey&&(d=b.warmupKey,!P.has(d)||(P.delete(d),P.set(d,!0),!1)),e=!1,f=()=>{if(!e)for(let b of(e=!0,a))try{b.launch()}catch(a){console.error("[llm] 调度发射单条异常:",a)}};if(!c){f();continue}let g=b.warmupKey;P.delete(g),P.set(g,!0);let h=function(){let a=(0,t.z)().prefixWarmupCacheCapacity;return"number"==typeof a&&Number.isFinite(a)&&a>0?Math.floor(a):256}();for(;P.size>h;){let a=P.keys().next().value;if(void 0===a)break;P.delete(a)}let i=function(){if(!(v>=F()))return v+=1,K}();i||(M+=1);let j=i?L(i):(v+=1,L(()=>{v=Math.max(0,v-1)})),k=setTimeout(()=>{j(),P.delete(g),f()},3e4),l=a=>{clearTimeout(k),j(),a&&P.delete(g),f()};(()=>{try{return b.warmup()}catch(a){return Promise.reject(a)}})().then(()=>l(!1)).catch(()=>l(!0))}catch(a){console.error("[llm] 调度发射组级异常:",a)}}(a)},f))}(s,()=>{if(d.signal?.aborted)return void g(Error("用户中止"));p.chat([{role:"system",content:c?`${a}
52
- 只返回 JSON,不要返回 markdown。`:a},{role:"user",content:h?`${b}
53
-
54
- (重要:缩短思考过程,直接给出最终结论。)`:b}],{temperature:d.temperature??0,maxTokens:f,signal:q,disableThinking:r.disableThinking}).then(e).catch(a=>{g(a instanceof Error?a:Error(String(a)))})},u?.warmup,u?.warmupKey)})}),C=A.content?.trim()??"";if(C){if(d.diagnostics&&A.usage){let a=d.diagnostics.llm;a.inputTokens=(a.inputTokens||0)+A.usage.promptTokens,a.outputTokens=(a.outputTokens||0)+A.usage.completionTokens,a.promptCacheHitTokens=(a.promptCacheHitTokens||0)+(A.usage.promptCacheHitTokens||0),a.promptCacheMissTokens=(a.promptCacheMissTokens||0)+(A.usage.promptCacheMissTokens||0);let b=Z(d.diagnostics,d.prefixKey);b.cacheHitTokens+=A.usage.promptCacheHitTokens||0,b.cacheMissTokens+=A.usage.promptCacheMissTokens||0,A.usage.reasoningTokens&&(a.reasoningTokens=(a.reasoningTokens||0)+A.usage.reasoningTokens)}return!function(a){if(!a){x=0;return}w.delete(a)}(d.diagnostics),e=A.usage?{promptTokens:A.usage.promptTokens,completionTokens:A.usage.completionTokens,promptCacheHitTokens:A.usage.promptCacheHitTokens,promptCacheMissTokens:A.usage.promptCacheMissTokens}:void 0,g=k.name,C}throw B};for(let a=0;a<=1;a+=1){if(d.signal?.aborted)throw Error("用户中止");try{let b=1===a&&h===B,c=await C(A,b);return d.diagnostics&&(d.diagnostics.llm.failureStreak=0),c}catch(b){if(h=b,b===B&&function(a){if(!a){x+=1;return}w.set(a,(w.get(a)??0)+1)}(d.diagnostics),d.signal?.aborted)throw Error("用户中止",{cause:b});if(b!==B&&!S(b)||a>=1)break;d.diagnostics&&(d.diagnostics.llm.retries+=1),await new Promise(c=>{setTimeout(c,function(a,b=0){return"0"!==process.env.DOCUMENT_LLM_RETRY_BACKOFF&&a&&function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/503|overloaded|服务繁忙/iu.test(b)}(a)?Math.min(3e4,2e3*2**Math.max(0,b))+Math.floor(1e3*Math.random()):1200+Math.floor(800*Math.random())}(b,a))})}}d.diagnostics&&(d.diagnostics.llm.failures+=1,d.diagnostics.llm.failureStreak=(d.diagnostics.llm.failureStreak||0)+1,d.diagnostics.llm.lastError=h instanceof Error?h.message:h===B?"空响应(思考阶段耗尽输出预算)":String(h));return}finally{i(),B(h,d.diagnostics,g,C(d.taskKind),e)}}function aa(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim();if(c)return c;let d=b.indexOf("{"),e=b.lastIndexOf("}"),f=b.indexOf("["),g=b.lastIndexOf("]"),h=d>=0&&e>d?b.slice(d,e+1):"",i=f>=0&&g>f?b.slice(f,g+1):"";return h&&(!i||d<=f)?h:i||b}function ab(a,b,c){if("object"!=typeof a||null===a||Array.isArray(a))return[`根节点类型错误(期望 object,得到 ${null===a?"null":Array.isArray(a)?"array":typeof a})`];let d=[];for(let c of b.required||[])c in a||d.push(`缺失字段 $.${c}`);for(let[e,f]of Object.entries(b.properties)){let b=a[e];if(void 0===b){f.required&&d.push(`缺失字段 $.${e}`);continue}d.push(...function a(b,c,d,e){let f=Array.isArray(b)?"array":null===b?"null":typeof b;if("number"===c.type&&"string"===f){let a=String(b).trim(),c=Number(a);""!==a&&Number.isFinite(c)&&(f="number")}if(f!==c.type)return[`字段 ${d} 类型错误(期望 ${c.type},得到 ${Array.isArray(b)?"array":null===b?"null":typeof b})`];let g=[];if("string"===c.type)void 0!==c.minLength&&b.length<c.minLength&&g.push(`字段 ${d} 长度不足(期望 ≥${c.minLength},得到 ${b.length})`),void 0!==c.maxLength&&b.length>c.maxLength&&g.push(`字段 ${d} 长度超限(期望 ≤${c.maxLength},得到 ${b.length})`);else if("array"===c.type)void 0!==c.minItems&&b.length<c.minItems&&g.push(`字段 ${d} 条数不足(期望 ≥${c.minItems},得到 ${b.length})`),void 0!==c.maxItems&&b.length>c.maxItems&&(e?.push({path:d,maxItems:c.maxItems,originalLength:b.length}),b.splice(c.maxItems)),c.items&&b.forEach((b,f)=>g.push(...a(b,c.items,`${d}[${f}]`,e)));else if("object"===c.type){if(void 0!==c.minProperties){let a=Object.keys(b).filter(a=>void 0!==b[a]&&null!==b[a]).length;a<c.minProperties&&g.push(`字段 ${d} 键数不足(期望 ≥${c.minProperties},得到 ${a})`)}if(!c.properties)return g;for(let[f,h]of Object.entries(c.properties)){let c=b[f];if(void 0===c){h.required&&g.push(`缺失字段 ${d}.${f}`);continue}g.push(...a(c,h,`${d}.${f}`,e))}}return g}(b,f,`$.${e}`,c))}return d.slice(0,6)}function ac(a,b,c){if(!a)return;a.llm.schemaFailures=(a.llm.schemaFailures||0)+1,a.llm.lastError=b;let d=Z(a,c);d.schemaFailures=(d.schemaFailures||0)+1}function ad(a,b){a&&0!==b.length&&(a.llm.lastInfo=`JSON Schema 截断式校验:${b.slice(0,4).map(a=>`${a.path} ${a.originalLength} 条超上限 ${a.maxItems},已截断保留前 ${a.maxItems} 条`).join(";")}`)}function ae(a){return Math.ceil(1.5*(a||2e3))}async function af(a,b,c={},d){let e,f=c.maxTokens,g=d??((a,b)=>_(a,b,!0,{maxTokens:f,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,taskKind:c.taskKind,contextLayers:c.contextLayers,prefixKey:c.prefixKey}));for(let d=0;d<=2&&!c.signal?.aborted;d+=1){let h=0===d?b:`${b}
55
-
56
- (重试修正:上一次输出未通过——${e??"输出无效"}。请重新输出完整合法的 JSON,只返回 JSON。)`,i=await g(a,h);if(!i){c.outFailure&&c.diagnostics?.llm.lastError&&(c.outFailure.value=c.diagnostics.llm.lastError);break}let j=aa(i);try{let a=JSON.parse(j);if(c.schema){let b=[],g=ab(a,c.schema,b);if(ad(c.diagnostics,b),g.length>0){let a=`JSON Schema 校验失败:${g.join(";")}`;if(e=a,ac(c.diagnostics,a,c.prefixKey),a.includes("缺失字段")&&(f=ae(f)),d>=2){c.outFailure&&(c.outFailure.value=a);return}continue}}return a}catch{let a=function(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim()??b,d=c.indexOf("{"),e=c.indexOf("["),f=d<0?e:e<0?d:Math.min(d,e);if(f<0)return;let g=c.slice(f),h=[],i=!1,j=!1,k=[];for(let a=0;a<g.length;a+=1){let b=g[a];if(i){j?j=!1:"\\"===b?j=!0:'"'===b&&(i=!1);continue}if('"'===b){i=!0;continue}if("{"===b||"["===b){h.push("{"===b?"object":"array");continue}if("}"===b||"]"===b){h.pop();continue}","===b&&(k[h.length-1]=a)}if(0===h.length)return;let l=-1;for(let a=h.length-1;a>=0;a-=1)if(void 0!==k[a]){l=a;break}if(l<0)return;let m=k[l],n=g.slice(0,m),o=[];for(let a=l;a>=0;a-=1)o.push("object"===h[a]?"}":"]");let p=`${n}${o.join("")}`;try{return JSON.parse(p),p}catch{return}}(i);if(a)try{let b=JSON.parse(a);if(c.schema){let a=[],g=ab(b,c.schema,a);if(ad(c.diagnostics,a),0===g.length)return b;let h=`JSON Schema 校验失败:${g.join(";")}`;if(e=h,ac(c.diagnostics,h,c.prefixKey),h.includes("缺失字段")&&(f=ae(f)),d>=2){c.outFailure&&(c.outFailure.value=h);return}continue}return b}catch{}let b=`JSON 解析失败:${function(a){let b=aa(a),c=(b.match(/\{/gu)||[]).length-(b.match(/\}/gu)||[]).length,d=(b.match(/\[/gu)||[]).length-(b.match(/\]/gu)||[]).length,e=b.slice(-80).replace(/\s+/gu," ");return c>0||d>0?`JSON 被截断({ 未闭合 ${c} 个、[ 未闭合 ${d} 个),截断位置响应末段:${e}`:`JSON 语法错误,出错位置响应末段:${e}`}(j)}`;if(e=b,/JSON 被截断/u.test(b)&&(f=ae(f)),ac(c.diagnostics,b,c.prefixKey),d>=2){c.outFailure&&(c.outFailure.value=b);return}continue}}}async function ag(a,b,c={}){return af(a,b,c)}}};
1
+ "use strict";exports.id=1001,exports.ids=[1001],exports.modules={71001:(a,b,c)=>{c.d(b,{Au:()=>u,EN:()=>e,Kg:()=>v,My:()=>t,c_:()=>q,eB:()=>l,el:()=>r,kw:()=>g,qT:()=>h,wP:()=>i});var d=c(73806);function e(a){return a.replace(/(.*?)(.{2,4})\2$/u,"$1$2")}function f(a){let b=(0,d.nz)(a).replace(/\s+/gu,"");return!!(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b))||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)/u.test(b)}function g(a,b){let c=(0,d.nz)(a).replace(/[\s()()::.。;;,,、-]/gu,""),e=(0,d.nz)(b).replace(/[\s()()::.。;;,,、-]/gu,"");return!!c&&!!e&&(c===e||c.includes(e)||e.includes(c))}function h(a,b){let c=a=>(0,d.nz)(a).replace(/[\s()()::.。;;,,、—-]/gu,""),e=c(a),f=c(b);return!!(e&&f&&e===f)}function i(a){let b=new Set,c=[];for(let e of a){let a=(0,d.nz)(e).replace(/[\s()()::.。;;,,、\-—]/gu,"");!a||b.has(a)||(b.add(a),c.push(e))}return c}function j(a){return/判断是否涉及|若涉及|若不涉及|如果涉及|如果不涉及|不涉及.*如实说明|根据项目所在地气候特征|根据计划施工周期|根据.*施工周期|按需|视情况|可设置|专项小节/u.test(a)}function k(a,b=""){let c=j(b);return Array.from(new Set(a.map(d.nz).filter(a=>!(a.length<2||a.length>30||f(a)||/必须|强制|排序|设置|输出|独立|之后|之前|小节|其他必要/u.test(a)||c&&/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(a)))))}function l(a){let b=a.replace(/\\n/gu,"\n").replace(/\r/gu,"");if(!/(?:除文字表述外)?可附下列图表|图表及格式要求附后|附下列图表|附表.{0,12}附后/u.test(b))return{titles:[],attachedAtEnd:!1};let c=[],d=new Set;for(let a of b.matchAll(/附表\s*([一二三四五六七八九十\d]{1,3})\s*[::]?\s*([^\n。;;::]{2,40}(?:表|图))/gu)){let b=(a[1]||"").trim(),e=(a[2]||"").replace(/\s+/gu," ").replace(/([\u3400-\u9fff\u3000-\u303f\uff00-\uffef])[ \u3000]+(?=[\u3400-\u9fff\u3000-\u303f\uff00-\uffef])/gu,"$1").trim();b&&e&&!(e.length<3)&&(d.has(b)||(d.add(b),c.push(`附表${b} ${e}`)))}return{titles:c,attachedAtEnd:c.length>=2}}function m(a){return a.split(/[、,,//]/u).map(a=>a.trim().replace(/["“”'‘’《》<>]/gu,"")).filter(a=>a.length>=2&&a.length<=24&&!/[。;;::]/u.test(a))}function n(a){let b=new Set;for(let c of[/(?:关键词|核心要点|必含关键词|必须包含的关键词)[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须)包含(?:以下|如下)?(?:关键词|核心词|术语)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of m(d[1]||""))/表格|章节|小节|正文|目录|封面/u.test(a)||b.add(a);return[...b].slice(0,24)}function o(a){let b=new Set;for(let c of[/(?:禁用词|禁止词|不得使用词|禁用表达|禁止表达)[::]\s*([^。;;\n]+)/gu,/(?:禁止|不得|严禁|杜绝)出现(?:以下|如下)?(?:词语|用词|表达|话术)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of m(d[1]||""))b.add(a);return[...b].slice(0,40)}function p(a,b){return a.split(/[。;;\n]/u).map(a=>a.trim()).filter(a=>a.length>=4&&b.test(a)).slice(0,24)}function q(a){let b=a.attributedPrompts||[],c=[a.promptTexts,a.requirement||""].filter(Boolean).join("\n\n").replace(/\\n/gu,"\n"),d=function(a){let b=a.replace(/\\n/gu,"\n"),c=new Set;for(let a of(/全文必须输出[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||/必须输出(?:的)?表格[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||"").split(/[、,,]/u)){let b=/([\p{Script=Han}A-Za-z0-9()()]{2,30}表)$/u.exec(a.trim())?.[1];b&&b.length>=4&&b.length<=30&&c.add(b)}/项目基本信息表/u.test(b)&&c.add("项目基本信息表");let d=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"];/杜绝(?:套话|空话)|禁止(?:套话|空话)|不得(?:套话|空话)|严禁(?:套话|空话)/u.test(b)&&d.push("高度重视","重中之重"),/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(b)&&d.push("报价明细表");let e=s(b,"封面"),f=s(b,"目录");return{coverPolicy:e,tocPolicy:f,forbidCover:"forbidden"===e,forbidToc:"forbidden"===f,forbiddenTerms:[...new Set(d)],preferredTerms:[{from:"高度重视",to:"严格落实"},{from:"重中之重",to:"关键控制事项"}],requiredTables:[...c],requiredKeywords:n(b),forbiddenPatterns:o(b)}}(c),e=[...new Set([...d.requiredTables,...function(a){let b=new Set;for(let c of[/(?:必须|应当|需要|全文必须|至少)输出(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须|至少)包含(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:表格清单|表格要求)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of(d[1]||"").split(/[、,,//及和与]/u)){let c=/([\p{Script=Han}A-Za-z0-9()()《》<>]{2,40}表)/u.exec(a.trim())?.[1];c&&b.add(c.replace(/[<>《》]/gu,""))}for(let c of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,40}表)(?:必须|应当|需要|不得缺失|不可缺失)/gu))b.add(c[1]);return/项目基本信息表/u.test(a)&&b.add("项目基本信息表"),[...b]}(c)])],g=l(c),h=n(c),i=o(c),j=function(a){let b=[],c=(/<OUTLINE>([\s\S]*?)<\/OUTLINE>/u.exec(a)?.[1]||"").split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),d=c.some(a=>/^\s*\d+\s*[.、.]\s*(?!\s*\d)/u.test(a));for(let a of c){if(d&&/^\s*\d+\s*[.、.]\s*\d+/u.test(a))continue;let c=a.replace(/^\s*(?:\d+(?:[.、.]\d+)*[.、.]?|[-*])\s*/u,"").trim();c.length>=2&&c.length<=80&&!f(c)&&b.push(c)}return[...new Set(b)]}(c),k=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"],m=/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(c)?["报价明细表"]:[],q=[],r=(a.template?.chapters||[]).map(a=>({chapterTitle:a.title,mustInclude:p(c,RegExp(`${a.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}|${a.title.slice(0,6).replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}`,"u")).slice(0,8),mustNotInclude:p(c,/禁止|不得|严禁|杜绝/u).filter(b=>b.includes(a.title)).slice(0,8)})).filter(a=>a.mustInclude.length>0||a.mustNotInclude.length>0),t=(a.sourcePrompts||[]).map(a=>({promptName:a.name,focusAreas:p(a.content,/重点|关注|围绕|响应|体系|措施|质量|安全|工期|资源/u).slice(0,8),mustDo:p(a.content,/必须|应当|需要|确保|严格/u).slice(0,10),mustNotDo:p(a.content,/禁止|不得|严禁|杜绝/u).slice(0,10)})).filter(a=>a.focusAreas.length>0||a.mustDo.length>0||a.mustNotDo.length>0),u=[d.coverPolicy&&"unspecified"!==d.coverPolicy?`已识别封面规则:${"required"===d.coverPolicy?"要求生成":"禁止生成"}`:"",d.tocPolicy&&"unspecified"!==d.tocPolicy?`已识别目录规则:${"required"===d.tocPolicy?"要求生成":"禁止生成"}`:"",j.length?`已识别一级章节固定规则 ${j.length} 条`:"",q.length?`已识别禁用主体表达:${q.join("、")}`:"",d.forbiddenTerms.length?`已识别禁用词 ${d.forbiddenTerms.length} 个`:"",e.length?`已识别必需表格:${e.join("、")}`:"",g.titles.length?`已识别招标附表清单(文末附列):${g.titles.join("、")}`:"",h.length?`已识别必含关键词:${h.join("、")}`:"",i.length?`已识别禁止出现内容:${i.join("、")}`:"",t.length?`已抽取提示词执行规则 ${t.length} 组`:""].filter(Boolean),v=[],w={},x=(a,c,d,e)=>{let f=function(a,b,c){for(let d of a)if(d.content.includes(b))return{promptId:d.promptId,name:d.name,pattern:c};return{promptId:"system:generation-control",name:"generation-control",pattern:c}}(b,d,e);w[a]||(w[a]=[]),w[a].length<24&&w[a].push({...f,matchedText:d}),v.length<60&&v.push({rule:c,source:f,matchedText:d})};for(let a of(d.coverPolicy&&"unspecified"!==d.coverPolicy&&x("coverPolicy",`已识别封面规则:${d.coverPolicy}`,"封面",/封面|cover/u.source),d.tocPolicy&&"unspecified"!==d.tocPolicy&&x("tocPolicy",`已识别目录规则:${d.tocPolicy}`,"目录",/目录|toc/u.source),e))x("requiredTables",`必需表格:${a}`,a,/全文必须输出|必须输出表格|项目基本信息表/u.source);for(let a of h)x("requiredKeywords",`必含关键词:${a}`,a,/必须包含|必须含|应包含|需要包含/u.source);for(let a of i)x("forbiddenPatterns",`禁止内容:${a}`,a,/禁止|不得|严禁|杜绝/u.source);for(let a of j)x("exactHeadings",`固定章节:${a}`,a,/第[一二三四五六七八九十百千\d]+章/u.source);return{...d,requiredTables:e,requiredKeywords:h,forbiddenPatterns:i,appendixTableTitles:g.titles.length>0?g.titles:void 0,appendixAttachedAtEnd:g.attachedAtEnd||void 0,sourceHash:function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(16)}(c),exactHeadings:j,forbidExtraHeadings:/不得合并|不得删除|不得改名|不得新增|严格按.*章节名称|一级章节.*不得/u.test(c)||j.length>0,requiredSubjects:/我公司/u.test(c)?["我公司","项目部"]:[],forbiddenSubjects:q,backendTerms:k,commercialTerms:m,forbiddenTerms:[...new Set([...d.forbiddenTerms,...k,...m,...q])],forbidFabrication:/不得编造|严禁编造|不得擅自|资料未明确|系统暂未|事实真实性/u.test(c),requireEvidenceForQuantities:/量化|参数|数值|具体数据|具体参数|工程实体参数|资料中明确|不得空泛|不能空泛|泛泛而谈/u.test(c),preferProjectFacts:/事实优先|项目事实|真实性高于/u.test(c),chapterRules:r,promptRules:t,executionSummary:u,ruleSources:Object.keys(w).length>0?w:void 0,extractionTrace:v.length>0?v:void 0}}function r(a){let b=[`运行时规则版本:${a.sourceHash}`,"required"===a.coverPolicy?"用户要求输出封面时必须保留封面;未要求时不得由系统擅自决定。":"","required"===a.tocPolicy?"用户要求输出目录时必须保留目录,并确保目录只来自最终合法正文标题。":"",a.forbidCover?"用户明确禁止输出封面。":"",a.forbidToc?"用户明确禁止输出目录、目录说明或导航页。":"",a.exactHeadings.length?`一级章节必须严格使用:${a.exactHeadings.join(";")}`:"",a.forbidExtraHeadings?"不得新增、删除、合并或改名一级章节。":"",a.requiredSubjects.length?`正文主体优先使用:${a.requiredSubjects.join("、")}`:"",a.forbiddenSubjects.length?`禁止主体表达:${a.forbiddenSubjects.join("、")}`:"",a.forbidFabrication?"不得编造系统暂未从知识库确认的项目事实、工程实体参数、人名、联系方式或品牌;应通过扩大检索、事实补抽或落位修复解决。":"",a.requireEvidenceForQuantities?"涉及数量、工期、质量标准目标、规格型号等项目专属参数时必须以绑定资料中的明确事实为准;通用标准规范编号与法规名称可依据现行有效版本直接引用。":"",a.commercialTerms.length?`禁止输出商务敏感内容:${a.commercialTerms.join("、")}`:"",a.backendTerms.length?`禁止输出系统内部话术:${a.backendTerms.join("、")}`:"",a.requiredTables.length?`必须输出以下正式 Markdown 表格:${a.requiredTables.join("、")}。表格必须包含表名、表头、分隔线和数据行。`:"",a.requiredKeywords?.length?`正文必须覆盖以下关键词或要点:${a.requiredKeywords.join("、")}。`:"",a.forbiddenPatterns?.length?`正文禁止出现以下内容:${a.forbiddenPatterns.join("、")}。`:""].filter(Boolean);return`以下规则由系统运行时从用户绑定指令中自动抽取,不作为用户可编辑内容。生成、检查和修复必须共同遵守:
2
+ ${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}`}function s(a,b){let c=RegExp(`(?:生成|包含|输出|需要|保留|设置|编制|制作)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:必须|应当|需要|保留|生成|输出|包含)`,"u").test(a);return RegExp(`(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)`,"u").test(a)?"forbidden":c?"required":"unspecified"}function t(a,b){let c=a.replace(/\\n/gu,"\n"),e=new Map,f=[...c.matchAll(/第([一二两三四五六七八九十\d]+)章[^\n。;;]{0,80}(?:强制|必须|挂靠|小节|排序|最先|之后|之前)/gu)];for(let a of f){let b=function(a){let b={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if(/^\d+$/u.test(a))return Number(a);if(void 0!==b[a])return b[a];if("十"===a)return 10;let c=/^(?:(一|二|两|三|四|五|六|七|八|九)?)十(?:(一|二|两|三|四|五|六|七|八|九))?$/u.exec(a);if(c)return 10*(c[1]?b[c[1]]:1)+(c[2]?b[c[2]]:0)}(a[1]);if(!b)continue;let d=Math.max(0,a.index||0),g=f.find(a=>(a.index||0)>d)?.index,i=c.slice(d,Math.min(c.length,g??d+1400));if(j(i)&&!/(强制小节|必须小节|以下小节设置和排序|必须设置独立的|必须包含独立的)/u.test(i))continue;let l=function(a){let b=/(?:以下小节设置和排序|强制小节|必须小节)[::]\s*([\s\S]*?)(?:\n\s*#{2,6}\s|\n\s*第[一二两三四五六七八九十\d]+章|$)/u.exec(a)?.[1];if(b){let c=k([...b.matchAll(/(?:^|\n)\s*\d+[..、]\s*([^——\-—::。;;\n]{2,30})(?=[——\-—::]|,|,|。|;|;|\n|$)/gu)].map(a=>a[1]),a);if(c.length>0)return c}let c=[];for(let b of a.matchAll(/第[一二两三四五六七八九十\d]+章[^。;;\n]{0,50}(?:强制)?(?:包含|设置|输出|排序|挂靠)[^::。;;\n]{0,20}[::]\s*([^。;;\n]{2,120})/gu))for(let a of b[1].split(/[、,,//]/u))c.push(a);for(let b of a.matchAll(/[“"]([^”"]{2,30})[”"]\s*(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,30})(?:——|—|-|:|:)\s*(?:独立的)?(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/(?:必须|应当|需|需要|包含|设置|输出)[^。;;\n]{0,30}(?:独立的)?(?:二级)?小节[::]\s*([^。;;\n]{2,80})/gu))for(let a of b[1].split(/[、,,//]/u))c.push(a);return k(c,a)}(i);if(0===l.length)continue;let m=e.get(b)||{blocks:[],titles:[]};for(let a of(m.blocks.push(i),l))m.titles.some(b=>h(b,a))||m.titles.push(a);e.set(b,m)}for(let[a,f]of function(a,b){let c=new Map,e=a.replace(/\\n/gu,"\n");if(!(0,d.eI)(e))return c;let f=(0,d.cs)([{text:e,source:"prompt-outline",strict:!0}]),i=!b||f.length===b.length;return f.forEach((a,e)=>{let f=(a.sections||[]).map(a=>(0,d.nz)(a)).filter(Boolean);if(0===f.length)return;let j=(0,d.GQ)(a.title),k=b?b.findIndex(a=>{let b=(0,d.GQ)(a.title);return b===j||g(b,j)}):-1;if(k<0&&!i)return;let l=k>=0?k:e,m=b?.[l]?.title||a.title,n=u(f);if(0===n.length)return;let o=c.get(l)||{chapterTitle:m,sections:[]};for(let a of n)o.sections.some(b=>h(b,a))||o.sections.push(a);c.set(l,o)}),c}(c,b)){let b=e.get(a+1);if(b){for(let a of f.sections)b.titles.some(b=>h(b,a))||b.titles.push(a);continue}e.set(a+1,{blocks:[`提示词 <OUTLINE> 声明:${(0,d.GQ)(f.chapterTitle)}`],titles:[...f.sections]})}return[...e.entries()].map(([a,c])=>{let d=b?.[a-1];return{chapterIndex:a-1,chapterTitle:d?.title,source:c.blocks[0]?.split("\n").find(a=>a.trim())?.trim().slice(0,120),requiredSections:c.titles.map((a,b)=>({title:a,order:b+1,required:!0,source:c.blocks[0]?.slice(0,240)}))}})}function u(a){return i(a.map(d.nz).map(e).filter(Boolean))}function v(a){let b=q({promptTexts:a}),c=t(a).filter(a=>a.requiredSections.length>0).map(a=>`第${(a.chapterIndex??0)+1}章${a.chapterTitle?`(${a.chapterTitle})`:""}强制小节(按序锁定):${a.requiredSections.slice().sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title).join("、")}`);return{recognized:b.executionSummary.length>0||c.length>0,summary:[...b.executionSummary,...c],requiredTables:b.requiredTables,requiredKeywords:b.requiredKeywords||[],forbiddenPatterns:b.forbiddenPatterns||[],exactHeadings:b.exactHeadings||[],coverPolicy:b.coverPolicy||"unspecified",tocPolicy:b.tocPolicy||"unspecified"}}}};
@@ -0,0 +1,3 @@
1
+ "use strict";exports.id=1243,exports.ids=[1243],exports.modules={21312:(a,b,c)=>{c.d(b,{DH:()=>h,aU:()=>i,pY:()=>j,u3:()=>k});var d=c(22496),e=c(67680);function f(a,b){let c=new Set(a);return(0,d.cn)([b]).filter(a=>c.has(a.id)).map(a=>a.id)}let g=d.ts.map(a=>a.id);function h(a){return[...new Set(a)].map(a=>{let b=(0,d.VY)(a);return b?[`▸ ${b.name}(方法参考,步骤不作为正文句式):`,...b.applicability?[` 适用对象与方法条件:${b.applicability}`]:[],...b.exclusions?.length?[` 不适用或需另选的条件:${b.exclusions.join(";")}`]:[],...b.process.map((a,b)=>` ${b+1}. ${a}`)," 写作时说明适用条件、实施动作、控制与转序;不能只把这些步骤串成动作列表。",...b.params.map(a=>` \xb7 工艺参数:${a}`),...b.acceptance.map(a=>` \xb7 检测验收:${a}`),...(b.interfaces??[]).map(a=>` \xb7 专业接口:${a}`),...b.resourceBasis?[` \xb7 资源与工效推演:${b.resourceBasis}`]:[],...b.standards.map(a=>` \xb7 规范候选:${a}(具体版本、适用条文与工程采用另核)`),...b.source?[` \xb7 知识参考出处(非项目证据或采用结论):${b.source}`]:[]].join("\n"):""}).filter(Boolean).join("\n")}function i(a){return[...a.structure.map(a=>`${a.title}:${(a.required??[]).join(";")}`).filter(a=>!a.endsWith(":")),...a.acceptance.flatMap(a=>a.items),...a.forbidden.map(a=>"string"==typeof a?a:`${a.phrase}${a.reason?`(${a.reason})`:""}`),...a.examples?[`表达示例(仅教写法,不构成本项目事实或专家验收):${a.examples.good}`,`需避免的写法及原因:${a.examples.defect}`]:[]].filter(Boolean).join("\n")}function j(a){let b=(0,e.mG)(a.chapterTitle,a.sections,a.projectType,a.skills),c=[],d=new Set,j=new Set;for(let h of b){let b=[...new Set([...f(h.knowledge.flatMap(a=>a.ids),a.blockText),...f(g,a.blockText)])];for(let a of b)d.add(a);let k=i(h);for(let a of k.split("\n").filter(Boolean))j.add(a);let l=(0,e.mJ)(h,a.chapterTitle,a.sections,a.projectType);c.push({skillId:h.id,matchedBy:`章域${l.matchedDomains.join("、")};主题${l.matchedKeywords.join("、")};类型${a.projectType}`,cards:b,forbiddenCount:h.forbidden.length,injectedChars:k.length})}if(!b.length){let b=f(g,a.blockText);for(let a of b)d.add(a);b.length&&c.push({skillId:"(块文本直配)",matchedBy:`主题提及实际工艺:${b.join("、")}`,cards:b,forbiddenCount:0,injectedChars:0})}let k=h([...d]),l=[j.size?`【专业内容提示】
2
+ ${[...j].join("\n")}`:"",k].filter(Boolean).join("\n\n");return{text:l?`【领域规则\xb7专业写作参考】以下为专业写作参考,不是本项目的资料事实。按当前任务对象、工况和真实来源选用;不增加小节或规定字数、信息点、参数数量/密度,不机械套用全部提示。禁止编造本项目没有的参数数值;卡片参数与规范候选仍须核版本、条件和采用资格,技能命中或模型自评不证明已通过验收。
3
+ ${l}`:"",hits:c}}function k(a){return[...new Set(a.flatMap(a=>a.knowledge.flatMap(a=>a.ids)).filter(a=>!(0,d.VY)(a)))]}},67680:(a,b,c)=>{c.d(b,{$i:()=>m,VO:()=>i,mG:()=>l,mJ:()=>k});var d=c(81892),e=c(32374),f=c(13424);let g=["C01","C02","C02","C03","C04","C05","C06","C07","C08","C09","C10","C11","C12","C14","C15","C16"],h=[{domain:"C13",pattern:/危大工程专项|危险性较大的分部分项工程专项|危大专项/u}];function i(a){if(g.length!==d.h.length)throw Error(`章域映射表与 CHAPTER_FOCUS_RULES 失配:映射 ${g.length} 条 / 规则 ${d.h.length} 条`);let b=[];for(let{domain:c,pattern:e}of function(){let a=[];return d.h.forEach((b,c)=>{let d=g[c];d&&a.push({domain:d,pattern:b.pattern})}),a.push(...h),a}())!b.includes(c)&&e.test(a)&&b.push(c);return b}function j(a){return a.replace(/\s+/gu,"").toLowerCase()}function k(a,b,c,d){let e=i(b),g=e.includes(a.match.chapterDomain),h=(0,f.Yf)(a,d),k=c.map(j).filter(a=>a.length>0),l=k.length>0,m=a.match.sectionKeywords.filter(a=>{let b=j(a);return b.length>0&&k.some(a=>a.includes(b))}),n=l?function(a){let b=a.match.sectionRegex;if(b&&(0,f.s_)(b))try{return RegExp(b,"u")}catch{return}}(a):void 0,o=!!n&&k.some(a=>n.test(a)),p=a.match.sectionKeywords.length>0||void 0!==n,q=!l||!p||m.length>0||o;return{skillId:a.id,domainHit:g,matchedDomains:e,projectTypeHit:h,sectionGateApplied:l,matchedKeywords:m,regexHit:o,matched:g&&h&&q}}function l(a,b,c,d=e.d7){let f=d.filter(a=>a.enabled).map(d=>({skill:d,explanation:k(d,a,b,c)})).filter(a=>a.explanation.matched).map(a=>{var b;return{skill:a.skill,specificity:(b=a.explanation).matchedKeywords.length+ +!!b.regexHit}});return f.sort((a,b)=>b.specificity!==a.specificity?b.specificity-a.specificity:a.skill.id<b.skill.id?-1:+(a.skill.id>b.skill.id)),f.map(a=>a.skill)}function m(a){let b=[...a].sort((a,b)=>a.id<b.id?-1:+(a.id>b.id)),c=[],d={},e=(a,b)=>{let c=d[a]??[];c.includes(b)||c.push(b),d[a]=c},g=[];for(let a of b)for(let b of a.acceptance)for(let c of b.items)g.includes(c)||g.push(c),e(`llmChecklist:${c}`,a.id);let h=g.length?[{kind:"llmChecklist",items:g,nonDeterministic:!0}]:[],i=new Map;for(let a of b)for(let b of a.requires){let a=i.get(b.key);if(!a){i.set(b.key,{...b});continue}i.set(b.key,{...a,required:a.required||b.required})}let j=a=>`${a.kind}:${[...a.ids].sort().join(",")}`,k=new Map;for(let a of b)for(let b of a.knowledge){let a=j(b);k.has(a)||k.set(a,{...b,...b.ids?{ids:[...b.ids]}:{}})}let l=new Map;for(let a of b)for(let b of a.structure){let c=b.title.trim(),d=l.get(c)??[];d.push({skillId:a.id,spec:{...b,title:c}}),l.set(c,d)}let m=new Set,n=a=>a.structure.map(a=>a.title.trim()).filter(a=>!m.has(a)).join("|"),o=new Set(b.map(n).filter(a=>a.length>0));if(o.size>1){let a=[...o].sort();1===new Set(b.map(a=>[...new Set(a.structure.map(a=>a.title.trim()))].filter(a=>!m.has(a)).sort().join("|"))).size&&c.push({field:"structure",kind:"structure-order-mismatch",target:a.join(" ⇄ "),skillIds:b.map(a=>a.id),declarations:b.map(a=>({skillId:a.id,value:n(a)})),message:`技能声明了相同的小节集合但顺序不同:${b.map(a=>`${a.id}=[${n(a)}]`).join(" / ")}——需用户裁决小节顺序`})}let p=[],q=new Set;for(let a of b)for(let b of a.structure){let a=b.title.trim();if(m.has(a)||q.has(a))continue;q.add(a);let c=[...new Set((l.get(a)??[]).flatMap(a=>a.spec.required??[]))];p.push({title:a,...c.length?{required:c}:{}})}let r=new Map;for(let a of b)for(let b of(0,f.is)(a.forbidden)){let c=r.get(b)??[];c.includes(a.id)||c.push(a.id),r.set(b,c)}let s=b.flatMap(a=>{let b=[];for(let c of a.structure)for(let d of(b.push({phrase:c.title.trim(),skillId:a.id}),c.required??[]))b.push({phrase:d.trim(),skillId:a.id});return b}),t=new Set;for(let[a,b]of r){if(0===a.length)continue;let d=[...new Set(s.filter(b=>b.phrase.includes(a)||a.includes(b.phrase)).map(a=>a.skillId))].filter(a=>!b.includes(a));0!==d.length&&(t.add(a),c.push({field:"forbidden",kind:"forbidden-required-contradiction",target:a,skillIds:[...b,...d].sort(),declarations:[...b.map(b=>({skillId:b,value:`禁写「${a}」`})),...d.map(b=>({skillId:b,value:`要求写入含「${a}」的内容`}))],message:`禁写项「${a}」被另一技能明确要求写入——需用户裁决(自动合并会同时下发“必须写”与“禁止写”两条相反指令)`}))}let u=[];for(let a of b)for(let b of a.forbidden){let a=("string"==typeof b?b:b.phrase).trim();!(0===a.length||t.has(a))&&(u.some(b=>("string"==typeof b?b:b.phrase).trim()===a)||u.push("string"==typeof b?a:{...b,phrase:a}))}return{acceptance:h,acceptanceProvenance:d,requires:[...i.values()],knowledge:[...k.values()],structure:p,forbidden:u,conflicts:c,requiresArbitration:c.length>0}}},81892:(a,b,c)=>{c.d(b,{h:()=>d,u:()=>e});let d=[{pattern:/概况|总体|理解|说明|编制/u,goal:"依据真实资料说明范围、专业组成、实施条件和编制依据,区分已知事实与核验事项",mustCover:["工程名称、地点、规模、工期和质量目标等有出处且适用的项目事实","工程范围、专业组成、接口和场地条件;关键未知条件保留核验责任","实际采用的招标补遗、法规、标准及管理文件;名称、编号、版本和资格状态可核,实际引用与依据对应","全部真实专业、单体、系统和特殊构造的施工与交接责任,不强凑专业数量","单项目多属性以信息项—内容纵向或按含义分组;对象比较才横向,完整保留对象、控制数值和单位,不以固定列数或表数删数据"]},{pattern:/主要施工内容/u,goal:"完整承接真实对象、方法和接口,不以工程量罗列代替施工说明",mustCover:["全部实际专业、部位和对象,近名归并不遗漏不同职责","对应对象的工程量口径、准备条件、顺序、方法和专业接口","按对象和工法控制需要说明真实规格或参数、质量安全控制、检验验收及记录交接"]},{pattern:/主要分部分项工程施工方案|主要施工方法/u,goal:"按真实对象和工法说明可执行操作、控制和验收,必要参数随实际控制用途展开",mustCover:["各分项、独立系统和特殊构造的方法职责,不因工程量小或名称近似遗漏","对象部位、前置准备与验收、关键步骤、工作面和相邻专业衔接","工法确需的材料规格、操作或检验条件;数值具有来源、对象、单位和完整前提,未知不补造","工艺质量、安全、成品保护、记录及交接验收,不统一要求参数或环节数量"]},{pattern:/重点|难点/u,goal:"说明真实对象及工况的成因、影响、针对性控制和处置闭环",mustCover:["实际对象、部位、工况、成因和影响范围","对应方法、接口或专项控制及真实适用条件","责任、检查验收节点、异常处置、整改复核和记录","需要数值控制时准确引用参数及依据;管理或接口问题以完整程序表达,不按量化占比评分"]},{pattern:/部署|总体|流水|顺序/u,goal:"按真实范围、工作面和同一施工活动网络组织阶段及资源",mustCover:["真实对象、区段、工作面及交接界面","工序依赖、阶段顺序、穿插和必要等待,不照搬单一类型的整套工序","同一计划的资源、能力约束、动态协调及责任"]},{pattern:/进度|工期/u,goal:"基于工期约束、工程量和统一施工计划说明进度可实施性",mustCover:["总工期与日期口径、活动网络、依赖、必要等待和关键线路","阶段及滚动计划、资源工作面能力、供应和交接","进度监测、偏差原因、纠偏调整及责任,拟定节点与资料事实分开表达"]},{pattern:/质量/u,goal:"按适用质量要求落实材料、过程、验收、整改与资料闭环",mustCover:["有出处的质量目标、适用验收依据、对象和条件","交底、样板或首件、自检互检专检的实际责任及程序","适用复验与见证取样、隐蔽验收、试验及报验,参数和比例仅按真实适用要求","通病或缺陷防治、记录、整改复验及资料闭合","交接、保修与缺陷响应;有依据的期限准确写出,不补造承诺值"]},{pattern:/安全|危大|风险/u,goal:"按真实作业对象和工况落实风险、专项程序、检查整改及应急控制",mustCover:["实际安全目标与责任,不统一补造伤亡率、轻伤频率或达标率","对象、部位、作业形态和风险辨识,关键工况缺失保留核验责任","危大候选和分级以同对象完整参数及适用规则为依据,未决不等于不触发或已需专家论证","按已成立的条件落实方案编审、必要论证、交底、实施、监测和验收责任","人员设备、临电、消防及防护按实际形式组织,必要参数和检验周期具有真实适用依据","安全检查、隐患处置、复查记录和应急响应"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"使人机料、仪器和设施同实际活动、工程量、能力及阶段对应",mustCover:["设备适用作业、选型依据、能力约束、投入及进退场","工种、班组、工作面、阶段安排及交接","材料技术要求、采购批次、验收保管及供应","同一施工计划的资源口径和推导依据,区分拟定配置与现场已投入事实","表格按对象比较与阶段关系组织,完整对象、控制数值和单位可读;单对象多属性不堆成无比较目的的十几列单行,真实宽表保留全部字段"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"按真实现场、作业影响及适用属地要求组织环境保护和文明施工",mustCover:["适用围挡、覆盖、清洗、场地和运输扬尘措施,不自动套固定百分比承诺","实际噪声振动、时段、污水、固废及交通秩序控制","监测检查、预警、处置复查、责任及记录,限值和频次仅按真实依据","适用节水节材节地节能和环保措施,不强凑每类数字或声称已完成评价"]},{pattern:/应急|预案/u,goal:"按真实风险源落实预警、响应、救援和恢复职责",mustCover:["实际风险、预警触发条件、组织及职责","与风险和救援条件相符的物资设备、通信协同","适用处置、疏散、报告救援、后期恢复、培训演练和记录,不套固定事故名单或数量"]},{pattern:/竣工|验收|移交|保修/u,goal:"按真实交付范围组织清理、验收、整改、移交和缺陷响应",mustCover:["实际收尾清理、废弃物处置和设施恢复","验收、缺陷记录、责任、整改复验和交接条件","实物资料移交、签认、保修响应及有依据的期限"]},{pattern:/工资|劳务|实名/u,goal:"按真实用工、合同和适用规定落实实名、工资、保险及争议处置",mustCover:["实名登记、合同考勤的适用对象、责任及资料管理","适用工资支付、专户代发、保证措施和台账,不把制度要求写成已开户或已支付","适用保险、参保、事故申报及劳动争议处理责任"]},{pattern:/交通导改|交通导行|交通组织|导改|管线保护|占道/u,goal:"对真实交通及管线接口说明调查、阶段保障与保护责任,不按工程类型排除",mustCover:["真实或需核验的交通、出入口及管线条件与调查责任","需要的阶段导改、通行能力、围挡隔离及恢复条件","实际通行保障、管线探明保护、权属协同和应急","适用标志标线、警示照明、监护交接,不把拟调查写成已调查"]},{pattern:/居民|扰民|既有(?:设施|管线|建筑|构筑物)保护|沟通协调|公众参与/u,goal:"按真实受影响对象组织沟通、通行、扰动控制与保护,不假定所有改造都有在场居民",mustCover:["实际影响对象、诉求和调查沟通责任,不补造户数或已走访事实","实际噪声扬尘振动和作业时间影响及控制","分区通行、出入口保障及既有设施保护接口","公示协调、投诉响应、责任记录和恢复移交"]},{pattern:/成品保护|半成品保护|交叉施工|交叉作业/u,goal:"按真实成品、系统和作业接口组织保护、交接与责任转移",mustCover:["真实保护对象、风险、责任和形式,不强行套齐房建饰面部位","工序作业面交接条件、检查记录、责任转移和专业协调","损坏记录、责任认定、修复复验、清洁和最终移交"]}];function e(a){return d.find(b=>b.pattern.test(a))}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v111",rules:["independent-persisted-parsed-documents-and-knowledge-internal-source-unit-identities","uploaded-original-disappearance-never-deletes-indexed-knowledge","text-conservation-preview-and-structural-query-without-original-file-dependency","vector-row-file-chunk-and-parsed-version-validation-before-sqlite-hydration","provider-default-output-and-selected-model-role-based-thinking-without-total-generation-ceilings","task-local-facts-and-source-use-dependencies-with-condition-aware-query-diagnostics","source-file-ownership-routing-without-per-section-model-repetition","strict-duplicate-json-key-rejection-before-body-or-tool-admission","per-transport-cancellation-request-and-actual-settlement-with-unknown-usage-preserved","preserved-original-failures-and-pause-at-reported-output-truncation-without-whole-input-retries","whole-run-token-anomaly-pause-and-same-project-queue-suspension-without-cost-or-time-ceilings","current-professional-grade-required-for-delivery-with-verification-quality-gaps-separated","first-candidate-professional-pass-metrics-without-retention-percentage-delivery-veto","removed-unused-client-reservations-and-inactive-node-payload-writing-pruning","full-per-call-usage-ledger-with-unreported-cancelled-usage","lossless-repeated-evidence-projection-with-intact-thinking-tool-protocol","quantity-purpose-and-partial-boundary-aware-construction-network","professional-execution-defects-in-first-candidate-with-preserved-original","spatial-layout-schematics-without-invented-survey-dimensions","partial-draft-figure-rendering-and-explicit-portable-review-fonts","task-located-excerpt-reading-without-speculative-whole-file-scans","complete-work-package-directory-and-explicit-member-selection-without-default-paging","project-resource-authors-inherit-planned-crews-without-false-derived-peaks","professional-first-draft-and-seven-anchored-diagnostics-without-aggregate-pass-score","complete-object-directory-and-on-demand-full-source-without-preflight-candidate-census","current-v7-submission-only-and-actual-rendered-figure-evidence-without-body-node-dumps","whole-source-purpose-and-completed-claim-state-validation","single-activity-network-and-typed-source-quantity-production-plan","server-owned-author-unit-row-and-section-reference-identities","retained-body-annotation-correction-with-cumulative-meaningful-raw-writing-ledger","actual-task-executions-preserved-through-final-render-and-honest-terminal-nodes","all-actual-normative-use-catalog-with-independent-official-metadata-and-adoption-status","source-bound-hazard-candidates-without-unknown-to-nonhazard-conclusions","faithful-technical-rendering-and-actual-bookmark-page-toc-cache","no-bid-type-page-quotas-or-client-wall-clock-generation-cutoffs","chapter-fair-dynamic-author-dispatch-through-single-shared-model-capacity","single-chief-whole-outline-and-table-plan-with-complete-raw-protocol-receipts","current-candidate-identity-bound-plan-reuse-without-repeated-chapter-routing","user-outline-preservation-without-tail-character-title-rejection-or-post-plan-mutations","actual-body-normative-use-register-before-first-compilation-basis-writing","source-bound-exact-normative-name-code-and-use-position-review","single-optional-explicit-process-concurrency-without-default-four-or-six","complete-typed-tool-output-without-generic-tail-clipping","task-owned-complete-evidence-without-repeated-whole-chapter-source-matrices","authenticated-deep-frozen-source-policy-with-independent-current-use-validation","server-owned-source-evidence-indices-without-model-quote-or-hash-copy","actual-task-progress-and-substantive-body-without-title-shell-completion","explicit-input-resource-limits-without-hidden-env-or-default-document-cutoffs","active-task-engineering-decisions-with-reviewed-qualitative-adoption","professional-process-coverage-without-character-density-point-collapse","complete-source-library-and-positive-technical-obligation-discovery-without-commercial-role-closure","typed-task-local-writing-readiness-and-preserved-unresolved-source-ledger","single-common-construction-organization-plan-with-on-demand-engineering-decisions","source-first-omission-audit-after-preserved-real-first-draft","review-draft-export-separated-from-delivery-acceptance-with-bound-issue-sidecar","actual-claim-fidelity-review-separated-from-engineering-adoption-permission","balanced-same-family-source-bracket-intervals-without-unclosed-tail-suppression-or-source-rewriting","complete-physical-source-question-continuations-before-answer-purpose-review","source-context-semantic-projection-with-complete-server-owned-provenance-and-frozen-application-qualification","complete-clarification-source-groups-with-unique-original-member-accounting-and-independent-projection-binding","source-explicit-length-units-without-bare-number-or-neighbor-line-default-meters","complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification","immutable-run-inputs","user-cancellation-and-typed-progress-execution-receipts","pre-writing-frozen-project-model","frozen-prompt-skill-and-model-configuration","object-and-attribute-bound-fact-governance","pre-writing-document-contract","complete-json-results-without-tail-clipping","single-explicit-selected-model-for-all-agent-and-review-calls","selected-model-without-vendor-allowlist-and-glm53-valid-thinking-tool-history","scoped-preparation-cancellation-and-drain-before-terminal-with-source-before-model-planning","source-complete-chief-model-projection-with-authoritative-native-proof-ledger","native-json-with-explicit-shared-total-output-capacity","technical-structure-requirements-grounded-in-local-presentation-purpose","object-property-condition-and-adoption-constraints-without-onsite-verb-or-edition-shortcuts","signal-driven-generation-with-stream-progress-and-effective-source-worker-capacity","exact-decimal-value-equivalence-with-source-object-unit-and-application-conservation","strict-explicit-source-indices-without-positional-recovery-or-retired-anchor-acceptance","mutable-live-activity-snapshots-separated-from-immutable-run-evidence","physical-property-corrections-separated-from-price-and-document-description-procedures","source-row-and-header-bound-table-quantity-witnesses-without-unit-inference","engineering-interfaces-separated-from-supplier-service-entitlements-and-charge-conditions","minimal-source-bound-static-constraints-without-synthetic-performance-duties","schema-correction-bound-to-actual-prior-output-and-preserved-source-semantics","native-contract-evaluation-with-retired-density-and-legacy-score-entrypoints","explicit-shared-total-output-capacity-with-frozen-selected-thinking-policy","source-owned-edition-sections-without-whole-document-catalog-qualification","single-chief-outline-duty-coverage-without-score-keyword-module-injection","real-provider-calls-without-hidden-prefix-warmup-requests","ordered-whole-dimension-and-celsius-identity-without-invented-unit-or-currency","reusable-provider-owned-http2-pool-with-concurrent-streamed-posts-and-signal-driven-cancellation","source-bound-planned-start-date-and-trigger-preserved-through-schedule-authority","contract-bound-seven-dimension-review","structured-author-tasks-and-cumulative-rework","canonical-document-model-and-guarded-incremental-repair","fixed-outline-and-unique-task-responsibility","same-selected-model-retry-without-provider-or-model-fallback","actual-task-instances-and-shared-chapter-budget","generation-scoped-llm-context","source-grounded-project-type-and-required-content-semantics","source-analysis-without-formal-writing-quotas","parent-grounded-financial-performance-separated-from-engineering-compensation","canonical-verified-whitespace-gaps-and-failed-request-ledger-preservation","source-text-once-and-payload-bounded-original-parent-batches","complete-outline-candidates-without-density-derived-section-count-or-blind-title-deletion","project-specific-substance-without-history-driven-novelty-or-correct-content-rewriting","native-cad-literal-location-and-root-bound-annotation-reading","chief-read-scope-pagination-without-premature-human-source-deferral","versioned-native-pdf-ruled-cell-reading-with-original-glyph-conservation","painted-horizontal-cell-spans-with-physical-row-edge-conservation","explicit-native-ordinary-page-continuation-without-grid-or-canonical-inference","fact-extraction-output-capacity-bound-to-complete-source-payload","sealed-actual-c0-rework-accounting-and-ninety-percent-retention-delivery-gate","persistent-source-and-parameter-bound-ocr-cache-default","native-table-row-boundaries-and-source-preserved-physical-page-continuation","file-level-proof-once-and-scalar-source-evidence-without-child-metadata-duplication","producer-bound-metadata-excluded-with-complete-original-ledger","immutable-source-and-provenance-bound-effective-facts","chief-frozen-original-source-queries","preserved-author-annotations-without-inferred-criterion-binding","scoped-chief-engineering-controls-with-independent-applicability-review","dxf-declared-codepage-and-observable-source-judgments","unchecked-blind-means-open-and-content-only-front-matter","canonical-native-toc-without-cover-or-invented-page-numbers","question-answer-boundaries-and-independent-review-with-frozen-model","dimension-picture-blocks-and-honest-polyline-transforms","evidence-progress-driven-chief-source-and-cad-reading","native-writing-without-legacy-drawing-lock-preparation","native-writing-without-legacy-density-or-duplicate-bill-preparation","chief-reasoning-tools-with-provider-session-roundtrip","source-binding-defect-scopes-without-unrelated-writing-penalties","pre-writing-shared-construction-deployment-and-task-interfaces","no-unscoped-elevation-subtraction-in-frozen-facts","single-native-generation-and-finalization-pipeline","request-local-llm-failure-attribution","lazy-cad-instances-with-complete-source-definitions","atomic-per-file-reindex-with-preserved-valid-snapshots","explicit-user-section-protection-with-adjudicable-skill-candidates","whole-selected-material-pack-index-and-source-byte-admission","native-contract-required-for-archived-repair","source-content-page-read-closure-without-native-garbled-or-raster-shortcuts","independently-reviewed-project-source-application-and-selection-bridges","immutable-chief-source-application-receipts-and-resume-replay","native-skill-knowledge-without-retired-density-depth-or-example-contracts","preserved-technical-ocr-content-without-prose-density-page-discard","native-raster-resolution-with-verified-composite-fallback","no-whole-library-project-intelligence-preheat-or-shadow-model","preserved-original-material-without-destructive-business-text-cleaning","explicit-user-sections-and-adjudicable-skill-candidate-preview","preserved-cad-stacked-engineering-units-and-fractions","file-level-source-coverage-without-per-chunk-audit-duplication","signature-driven-cad-source-routing-for-mislabeled-files","actual-carrier-source-routing-without-binary-fragment-success","frozen-source-edition-domains-without-filename-or-model-confirmation-shortcuts","selected-source-fingerprint-worker-with-epoch-bound-complete-cache-admission","source-document-headings-without-incidental-clarification-reference-reclassification","scalar-knowledge-discovery-with-selected-parser-version-receipts","planned-arrangements-without-invented-project-geometry-or-design-properties"]}}};
@@ -1 +1 @@
1
- "use strict";exports.id=1928,exports.ids=[1928],exports.modules={18463:(a,b,c)=>{c.d(b,{Zk:()=>f,dh:()=>g,wD:()=>e});var d=c(8732);c(82015);let e="rounded-xl bg-[var(--colorBgContainer)] shadow-[var(--shadowSurface)] hover:shadow-[var(--shadowSurfaceHover)] transition-shadow";function f({title:a,count:b,description:c,extra:e,className:f,children:g}){return(0,d.jsxs)("section",{className:`rounded-2xl bg-[var(--colorBgContainer)] shadow-[var(--shadowSurface)] p-6 animateFadeIn ${f??""}`,children:[(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-start justify-between gap-3 mb-5",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("h2",{className:"text-base font-semibold text-[var(--colorText)] tracking-wide flex items-center gap-2 m-0",children:[a,void 0!==b&&(0,d.jsx)("span",{className:"text-[var(--colorTextTertiary)] font-normal text-sm",children:b})]}),c&&(0,d.jsx)("p",{className:"text-xs text-[var(--colorTextTertiary)] mt-1.5 mb-0 leading-relaxed max-w-3xl",children:c})]}),e]}),g]})}function g({children:a}){return(0,d.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wider mb-2 text-[var(--colorTextTertiary)]",children:a})}},61928:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>o});var e=c(8732),f=c(82015),g=c(94487),h=c(60056),i=c(79270),j=c(22147),k=c(89668),l=c(18463),m=a([g]);function n({title:a,value:b,subtext:c,icon:d,colorClass:f,animationClass:g}){return(0,e.jsxs)("div",{className:`p-4 ${l.wD} flex flex-col justify-between animateFadeIn ${g||""}`,style:{opacity:0},children:[(0,e.jsxs)("div",{className:"flex items-start justify-between mb-2",children:[(0,e.jsx)("div",{className:"text-xs font-semibold text-[var(--colorTextSecondary)] tracking-wide uppercase",children:a}),d&&(0,e.jsx)("div",{className:f,style:{opacity:.7},children:d})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("div",{className:"text-3xl font-bold tracking-tight",children:b}),c&&(0,e.jsx)("div",{className:"text-xs mt-1 truncate font-medium",style:{color:"var(--colorTextTertiary)"},children:c})]})]})}function o(){let a=(0,g.Vr)(),{locale:b}=(0,g.x_)(),[c,d]=(0,f.useState)(null),[m,o]=(0,f.useState)(!0),[p,q]=(0,f.useState)(0),[r,s]=(0,f.useState)(0),[t,u]=(0,f.useState)(0),[v,w]=(0,f.useState)(0),[x,y]=(0,f.useState)(null),[z,A]=(0,f.useState)(null),[B,C]=(0,f.useState)(null),[D,E]=(0,f.useState)(!1),[F,G]=(0,f.useState)([]),[H,I]=(0,f.useState)(!1),[J,K]=(0,f.useState)(null),L=(0,f.useCallback)(async()=>{o(!0);try{let[a,b,c,e,f,g]=await Promise.all([(0,j.FC)(),(0,j.Z3)().catch(()=>[]),(0,j.dx)().catch(()=>[]),(0,j.cQ)().catch(()=>({documents:[]})),(0,j.II)().catch(()=>null),(0,j.BO)().catch(()=>[])]);d(a),q(Array.isArray(b)?b.length:0),s(Array.isArray(c)?c.length:0),u(Array.isArray(e.documents)?e.documents.length:0),w(Array.isArray(g)?g.filter(a=>a.fileCount>0).length:0),y(f),C(await (0,j.nn)().catch(()=>null)),A(Date.now())}catch{}finally{o(!1)}},[]),M=c?.tasks.total?Math.round(c.tasks.success/c.tasks.total*100):null,N=c?.models?.[0],O=c?.logs.latestAt?(0,k.fw)(new Date(c.logs.latestAt).getTime(),b):a("overview.noLogs");return(0,e.jsxs)("div",{className:"space-y-6",children:[(0,e.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-end justify-between gap-4 pb-6 border-b border-[var(--borderColor)]",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-3xl font-extrabold tracking-tight text-[var(--colorText)] mb-2",children:a("overview.title")}),(0,e.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)]",children:a("overview.description")})]}),(0,e.jsxs)(h.$x,{children:[(0,e.jsxs)("span",{className:"text-xs font-mono",style:{color:"var(--colorTextTertiary)"},children:[a("overview.updated"),": ",z?new Date(z).toLocaleTimeString(b):"—"]}),(0,e.jsx)(h.$n,{type:"text",icon:(0,e.jsx)(i.ReloadOutlined,{spin:m}),onClick:()=>{L()}})]})]}),(0,e.jsx)(l.Zk,{title:a("overview.coreMetrics"),description:a("overview.coreMetricsDesc"),children:(0,e.jsxs)("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:[(0,e.jsx)(n,{title:a("overview.uptime"),value:(0,k.a3)(c?.serviceUptimeSeconds??0,b),subtext:`${a("overview.processUptime")} ${(0,k.a3)(c?.uptime??0,b)}`,icon:(0,e.jsx)(i.ApiOutlined,{size:16}),colorClass:"text-[var(--colorBrand)]",animationClass:"stagger-1"}),(0,e.jsx)(n,{title:a("overview.tokensUsed"),value:(c?.tokens.total??0).toLocaleString(),subtext:`P ${c?.tokens.prompt??0} / C ${c?.tokens.completion??0}`,icon:(0,e.jsx)(i.ThunderboltOutlined,{size:16}),colorClass:"text-[var(--colorWarn)]",animationClass:"stagger-2"}),(0,e.jsx)(n,{title:a("overview.tasksTotal"),value:(c?.tasks.total??0).toLocaleString(),subtext:`✓ ${c?.tasks.success??0} | ✗ ${c?.tasks.failed??0} | ↻ ${c?.tasks.running??0}`,icon:(0,e.jsx)(i.FileTextOutlined,{size:16}),colorClass:"text-[var(--colorInfo)]",animationClass:"stagger-3"}),(0,e.jsx)(n,{title:a("overview.successRate"),value:null===M?"—":`${M}%`,subtext:null===M?a("overview.noDataAvailable"):void 0,icon:null!==M&&M>80?(0,e.jsx)(i.CheckCircleOutlined,{size:16}):(0,e.jsx)(i.CloseCircleOutlined,{size:16}),colorClass:null!==M&&M>80?"text-[var(--colorOk)]":"text-[var(--colorDanger)]",animationClass:"stagger-4"})]})}),(0,e.jsx)(l.Zk,{title:a("overview.systemResources"),description:a("overview.systemResourcesDesc"),children:(0,e.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[(0,e.jsx)(n,{title:a("overview.materialUnderstanding"),value:v>0?String(v):"—",subtext:a(v>0?"overview.materialKinds":"common.noData"),animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.prompts"),value:r,animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.templateCount"),value:t,animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.semanticModel"),value:x?.provider==="openai-compatible"?a("overview.external"):x?a("overview.local"):"—",subtext:x?.model??a("overview.notConfigured"),animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.modelProviders"),value:p,animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.auditLogs"),value:c?.logs.events??0,subtext:`${a("overview.lastActivity")} ${O}`,animationClass:"stagger-5"})]})}),(0,e.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,e.jsx)(l.Zk,{title:a("overview.hardwareUsage"),description:a("overview.hardwareUsageDesc"),children:(0,e.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,e.jsxs)("div",{className:`flex items-center gap-4 p-4 ${l.wD}`,children:[(0,e.jsx)(h.ke,{type:"dashboard",percent:c?.cpu.usagePercent??0,size:64,strokeColor:(c?.cpu.usagePercent??0)>80?"var(--colorDanger)":"var(--colorText)",strokeWidth:10}),(0,e.jsxs)("div",{className:"min-w-0",children:[(0,e.jsx)("div",{className:"text-sm font-medium text-[var(--colorTextSecondary)]",children:a("overview.cpuUsage")}),(0,e.jsxs)("div",{className:"text-xl font-bold",children:[c?.cpu.usagePercent?.toFixed(1)??"0.0","%"]}),(0,e.jsxs)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:[c?.cpu.cores??0," ",a("overview.cores")]})]})]}),(0,e.jsxs)("div",{className:`flex items-center gap-4 p-4 ${l.wD}`,children:[(0,e.jsx)(h.ke,{type:"dashboard",percent:c?.memory.usagePercent??0,size:64,strokeColor:(c?.memory.usagePercent??0)>80?"var(--colorDanger)":"var(--colorTextSecondary)",strokeWidth:10}),(0,e.jsxs)("div",{className:"min-w-0",children:[(0,e.jsx)("div",{className:"text-sm font-medium text-[var(--colorTextSecondary)]",children:a("overview.memoryUsage")}),(0,e.jsxs)("div",{className:"text-xl font-bold",children:[c?.memory.usagePercent??0,"%"]}),(0,e.jsxs)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:[c?.memory.processMB??0," MB / ",c?.memory.totalMB??0," MB"]})]})]})]})}),(0,e.jsx)(l.Zk,{title:a("overview.activityContext"),description:a("overview.activityContextDesc"),children:(0,e.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,e.jsxs)("div",{className:`p-4 ${l.wD}`,children:[(0,e.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--colorTextTertiary)] mb-2",children:a("overview.topModel")}),N?(0,e.jsxs)("div",{className:"font-semibold flex items-center gap-2 min-w-0",children:[(0,e.jsx)(i.RobotOutlined,{className:"text-[var(--colorTextSecondary)] shrink-0"}),(0,e.jsx)("span",{className:"truncate",children:N.model}),(0,e.jsxs)("span",{className:"font-normal text-[var(--colorTextTertiary)] text-sm shrink-0",children:["@",N.provider]})]}):(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:a("overview.noDataAvailable")})]}),(0,e.jsxs)("div",{className:`p-4 ${l.wD}`,children:[(0,e.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--colorTextTertiary)] mb-3",children:a("overview.recentTaskTypes")}),c?.tasks.types&&Object.keys(c.tasks.types).length>0?(0,e.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(c.tasks.types).sort((a,b)=>b[1]-a[1]).map(([a,b])=>(0,e.jsxs)("div",{className:"px-2 py-1 rounded-lg text-xs font-mono bg-[var(--colorFillAlter)] text-[var(--colorTextSecondary)]",children:[a.slice(0,30)," ",(0,e.jsx)("span",{className:"ml-2 font-bold text-[var(--colorText)]",children:b})]},a))}):(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:a("common.noData")})]})]})})]}),(0,e.jsx)(l.Zk,{title:"数据体检与清理",description:"升级后旧数据会不会碍事、占了多少地方——先看清,再决定清什么",children:B?(0,e.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:`存储根 ${B.storageRoot}|工作流版本 ${B.workflowVersion}`}),(0,e.jsx)("div",{className:"flex flex-col gap-2",children:B.scopes.map(a=>(0,e.jsx)("div",{className:`p-3 flex items-start gap-3 ${l.wD}`,children:(0,e.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,e.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,e.jsx)("span",{className:"text-sm font-medium",children:a.label}),a.deletable?(0,e.jsx)(h.vw,{color:"blue",children:"可清理"}):(0,e.jsx)(h.vw,{children:"只体检"}),(0,e.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:`${a.files} 项|${(a.bytes/1048576).toFixed(1)} MB`})]}),(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)] mt-1",children:a.note})]})},a.key))}),(0,e.jsxs)("div",{className:"p-3 flex flex-col gap-1",style:{background:"var(--colorFillQuaternary)",borderRadius:8},children:[(0,e.jsx)("div",{className:"text-sm",children:`历史类型残留:${B.legacy.recordsWithLegacyTypes}/${B.legacy.totalRecords} 条记录含已删除的节点类型(共 ${B.legacy.legacyNodes} 个节点)`}),(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:B.legacy.note})]}),(0,e.jsxs)(h.$x,{children:[(0,e.jsx)(h.$n,{size:"small",disabled:B.scopes.every(a=>!a.deletable),onClick:()=>{G([]),K(null),E(!0)},children:"清理可重建数据…"}),(0,e.jsx)(h.$n,{size:"small",type:"text",onClick:()=>{L()},children:"重新体检"})]}),J&&(0,e.jsx)(h.o5.Text,{type:"success",style:{fontSize:12},children:J})]}):(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:a("common.noData")})}),(0,e.jsx)(h.aF,{title:"清理可重建数据",open:D,onCancel:()=>E(!1),okText:H?"清理中…":"确认清理",okButtonProps:{disabled:0===F.length||H,danger:!0},onOk:()=>{I(!0),(0,j.fc)(F).then(a=>{let b=a.removed.reduce((a,b)=>a+b.bytes,0);K(`已清理 ${a.removed.length} 项,释放 ${(b/1048576).toFixed(1)} MB`),C(a.report),E(!1)}).catch(a=>K(`清理失败:${a instanceof Error?a.message:String(a)}`)).finally(()=>I(!1))},children:(0,e.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,e.jsxs)(h.o5.Text,{type:"secondary",style:{fontSize:12},children:["只列**可重建**的数据:缓存键含内容与判据指纹,删掉只是下次重算。",(0,e.jsx)("br",{}),"生成记录、节点日志、技能库、知识库**不在清理范围**(那是你的资产)。"]}),(B?.scopes??[]).filter(a=>a.deletable).map(a=>(0,e.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer",children:[(0,e.jsx)("input",{type:"checkbox",checked:F.includes(a.key),onChange:b=>G(c=>b.target.checked?[...c,a.key]:c.filter(b=>b!==a.key))}),(0,e.jsxs)("span",{className:"min-w-0",children:[(0,e.jsx)("span",{className:"text-sm",children:`${a.label}(${a.files} 项|${(a.bytes/1048576).toFixed(1)} MB)`}),(0,e.jsx)("span",{className:"block text-xs text-[var(--colorTextTertiary)]",children:a.note})]})]},a.key))]})})]})}g=(m.then?(await m)():m)[0],d()}catch(a){d(a)}})},89668:(a,b,c)=>{function d(a){if(0===a)return"0 B";let b=Math.floor(Math.log(a)/Math.log(1024)),c=a/Math.pow(1024,b);return`${c.toFixed(+(0!==b))} ${["B","KB","MB","GB","TB"][b]}`}function e(a,b="zh-CN"){let c=Math.max(0,Math.floor(a)),d=Math.floor(c/86400),f=Math.floor(c%86400/3600),g=Math.floor(c%3600/60),h="en-US"===b;return d>0?h?`${d}d ${f}h`:`${d} 天 ${f} 小时`:f>0?h?`${f}h ${g}m`:`${f} 小时 ${g} 分`:g>0?h?`${g}m`:`${g} 分`:h?"Just now":"刚刚"}function f(a,b="zh-CN"){if(!a||a<=0)return"en-US"===b?"Never":"从未";let c=Math.floor(Math.floor((Date.now()-a)/1e3)/60),d=Math.floor(c/60),e=Math.floor(d/24);return e>30?new Date(a).toLocaleDateString(b):"en-US"===b?e>0?`${e}d ago`:d>0?`${d}h ago`:c>0?`${c}m ago`:"Just now":e>0?`${e} 天前`:d>0?`${d} 小时前`:c>0?`${c} 分钟前`:"刚刚"}c.d(b,{Jm:()=>i,a3:()=>e,fw:()=>f,mc:()=>j,z3:()=>d});let g={document:"文档",spreadsheet:"表格",image:"图片",cad:"图纸",code:"代码",data:"数据",web:"网页",diagram:"图表",archive:"压缩包",other:"其他"},h={document:"Document",spreadsheet:"Spreadsheet",image:"Image",cad:"CAD",code:"Code",data:"Data",web:"Web",diagram:"Diagram",archive:"Archive",other:"Other"};function i(a,b="zh-CN"){return("en-US"===b?h:g)[a]??a}let j={active:"common.statusIndexed",outdated:"common.statusOutdated",error:"common.statusAbnormal",deleted:"common.statusDeleted",disk:"common.statusNotIndexed"}}};
1
+ "use strict";exports.id=1928,exports.ids=[1928],exports.modules={18463:(a,b,c)=>{c.d(b,{Zk:()=>f,dh:()=>g,wD:()=>e});var d=c(8732);c(82015);let e="rounded-xl bg-[var(--colorBgContainer)] shadow-[var(--shadowSurface)] hover:shadow-[var(--shadowSurfaceHover)] transition-shadow";function f({title:a,count:b,description:c,extra:e,className:f,children:g}){return(0,d.jsxs)("section",{className:`rounded-2xl bg-[var(--colorBgContainer)] shadow-[var(--shadowSurface)] p-6 animateFadeIn ${f??""}`,children:[(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-start justify-between gap-3 mb-5",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("h2",{className:"text-base font-semibold text-[var(--colorText)] tracking-wide flex items-center gap-2 m-0",children:[a,void 0!==b&&(0,d.jsx)("span",{className:"text-[var(--colorTextTertiary)] font-normal text-sm",children:b})]}),c&&(0,d.jsx)("p",{className:"text-xs text-[var(--colorTextTertiary)] mt-1.5 mb-0 leading-relaxed max-w-3xl",children:c})]}),e]}),g]})}function g({children:a}){return(0,d.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wider mb-2 text-[var(--colorTextTertiary)]",children:a})}},28017:(a,b,c)=>{c.d(b,{a:()=>e,j:()=>f});let d={coarse:function(a,b){let c=Math.floor(a/1e3),d=Math.floor(c/86400),e=Math.floor(c%86400/3600),f=Math.floor(c%3600/60),g="en-US"===b;return d>0?g?`${d}d ${e}h`:`${d} 天 ${e} 小时`:e>0?g?`${e}h ${f}m`:`${e} 小时 ${f} 分`:f>0?g?`${f}m`:`${f} 分`:g?"Just now":"刚刚"},fine:function(a){let b=Math.round(a/1e3);if(b<60)return`${b} 秒`;let c=Math.floor(b/60);return c<60?`${c} 分 ${b%60} 秒`:`${Math.floor(c/60)} 小时 ${c%60} 分`},"fine-decimal":function(a){return a>=6e4?`${Math.floor(a/6e4)} 分 ${Math.round(a%6e4/1e3)} 秒`:`${(a/1e3).toFixed(1)} 秒`},metric:function(a){return a<1e3?`${Math.round(a)}ms`:a<6e4?`${(a/1e3).toFixed(1)}s`:`${(a/6e4).toFixed(1)}min`}};function e(a,b){return d[b.style](function(a,b){let c="s"===b?1e3*a:a;return Number.isFinite(c)&&c>0?c:0}(a,b.unit),b.locale??"zh-CN")}function f(a,b="zh-CN"){return e(a,{unit:"s",style:"coarse",locale:b})}},61928:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>o});var e=c(8732),f=c(82015),g=c(94487),h=c(60056),i=c(79270),j=c(22147),k=c(89668),l=c(18463),m=a([g]);function n({title:a,value:b,subtext:c,icon:d,colorClass:f,animationClass:g}){return(0,e.jsxs)("div",{className:`p-4 ${l.wD} flex flex-col justify-between animateFadeIn ${g||""}`,style:{opacity:0},children:[(0,e.jsxs)("div",{className:"flex items-start justify-between mb-2",children:[(0,e.jsx)("div",{className:"text-xs font-semibold text-[var(--colorTextSecondary)] tracking-wide uppercase",children:a}),d&&(0,e.jsx)("div",{className:f,style:{opacity:.7},children:d})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("div",{className:"text-3xl font-bold tracking-tight",children:b}),c&&(0,e.jsx)("div",{className:"text-xs mt-1 truncate font-medium",style:{color:"var(--colorTextTertiary)"},children:c})]})]})}function o(){let a=(0,g.Vr)(),{locale:b}=(0,g.x_)(),{message:c}=h.qw.useApp(),[d,m]=(0,f.useState)(null),[o,p]=(0,f.useState)(!0),[q,r]=(0,f.useState)(0),[s,t]=(0,f.useState)(0),[u,v]=(0,f.useState)(0),[w,x]=(0,f.useState)(0),[y,z]=(0,f.useState)(null),[A,B]=(0,f.useState)(null),[C,D]=(0,f.useState)(null),[E,F]=(0,f.useState)(!1),[G,H]=(0,f.useState)(null),[I,J]=(0,f.useState)(null),[K,L]=(0,f.useState)(!1),[M,N]=(0,f.useState)([]),[O,P]=(0,f.useState)(!1),[Q,R]=(0,f.useState)(null),[S,T]=(0,f.useState)([]),U=(0,f.useCallback)(async()=>{p(!0);try{let a=[],b=(b,c,d)=>c.catch(()=>(a.push(b),d)),[c,d,e,f,g,h]=await Promise.all([b("系统统计",(0,j.FC)(),null),b("模型供应商",(0,j.Z3)(),[]),b("提示词",(0,j.dx)(),[]),b("生成记录",(0,j.cQ)(),{documents:[]}),b("嵌入配置",(0,j.II)(),null),b("资料分类",(0,j.BO)(),[])]);T(a),c&&m(c),r(Array.isArray(d)?d.length:0),t(Array.isArray(e)?e.length:0),v(Array.isArray(f.documents)?f.documents.length:0),x(Array.isArray(h)?h.filter(a=>a.fileCount>0).length:0),z(g),B(Date.now())}catch{}finally{p(!1)}},[]),V=(0,f.useCallback)(async a=>{let b=a?.silent===!0;F(!0);let d=Date.now(),e="overview-health-recheck";b||c.loading({content:"正在体检…",key:e,duration:0});try{let a=await (0,j.nn)();D(a);let f=Date.now()-d;H(d),J(f),b||c.success({content:`体检完成,耗时 ${f} ms`,key:e})}catch{b||c.error({content:"体检失败,请稍后重试",key:e})}finally{F(!1)}},[c]),W=d?.tasks.total?Math.round(d.tasks.success/d.tasks.total*100):null,X=d?.models?.[0],Y=d?.logs.latestAt?(0,k.fw)(new Date(d.logs.latestAt).getTime(),b):a("overview.noLogs");return(0,e.jsxs)("div",{className:"space-y-6",children:[S.length>0&&(0,e.jsx)("div",{role:"alert",className:"rounded-xl border border-[var(--colorDanger)]/30 bg-[var(--colorDanger)]/10 px-4 py-3 text-sm text-[var(--colorDanger)]",children:`${S.length} 项数据读取失败:${S.join("、")}——相关读数显示为「—」(未知),**不代表 0**;请稍后重试或查看服务端日志。`}),(0,e.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-end justify-between gap-4 pb-6 border-b border-[var(--borderColor)]",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-3xl font-extrabold tracking-tight text-[var(--colorText)] mb-2",children:a("overview.title")}),(0,e.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)]",children:a("overview.description")})]}),(0,e.jsxs)(h.$x,{children:[(0,e.jsxs)("span",{className:"text-xs font-mono",style:{color:"var(--colorTextTertiary)"},children:[a("overview.updated"),": ",A?new Date(A).toLocaleTimeString(b):"—"]}),(0,e.jsx)(h.$n,{type:"text",icon:(0,e.jsx)(i.ReloadOutlined,{spin:o}),onClick:()=>{U()}})]})]}),(0,e.jsx)(l.Zk,{title:a("overview.coreMetrics"),description:a("overview.coreMetricsDesc"),children:(0,e.jsxs)("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:[(0,e.jsx)(n,{title:a("overview.uptime"),value:(0,k.je)(d?.serviceUptimeSeconds??0,b),subtext:`${a("overview.processUptime")} ${(0,k.je)(d?.uptime??0,b)}`,icon:(0,e.jsx)(i.ApiOutlined,{size:16}),colorClass:"text-[var(--colorBrand)]",animationClass:"stagger-1"}),(0,e.jsx)(n,{title:a("overview.tokensUsed"),value:(d?.tokens.total??0).toLocaleString(),subtext:`P ${d?.tokens.prompt??0} / C ${d?.tokens.completion??0}`,icon:(0,e.jsx)(i.ThunderboltOutlined,{size:16}),colorClass:"text-[var(--colorWarn)]",animationClass:"stagger-2"}),(0,e.jsx)(n,{title:a("overview.tasksTotal"),value:(d?.tasks.total??0).toLocaleString(),subtext:`✓ ${d?.tasks.success??0} | ✗ ${d?.tasks.failed??0} | ↻ ${d?.tasks.running??0}`,icon:(0,e.jsx)(i.FileTextOutlined,{size:16}),colorClass:"text-[var(--colorInfo)]",animationClass:"stagger-3"}),(0,e.jsx)(n,{title:a("overview.successRate"),value:null===W?"—":`${W}%`,subtext:null===W?a("overview.noDataAvailable"):void 0,icon:null!==W&&W>80?(0,e.jsx)(i.CheckCircleOutlined,{size:16}):(0,e.jsx)(i.CloseCircleOutlined,{size:16}),colorClass:null!==W&&W>80?"text-[var(--colorOk)]":"text-[var(--colorDanger)]",animationClass:"stagger-4"})]})}),(0,e.jsx)(l.Zk,{title:a("overview.systemResources"),description:a("overview.systemResourcesDesc"),children:(0,e.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[(0,e.jsx)(n,{title:a("overview.materialUnderstanding"),value:w>0?String(w):"—",subtext:a(w>0?"overview.materialKinds":"common.noData"),animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.prompts"),value:s,animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.templateCount"),value:u,animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.semanticModel"),value:y?.provider==="openai-compatible"?a("overview.external"):y?a("overview.local"):"—",subtext:y?.model??a("overview.notConfigured"),animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.modelProviders"),value:q,animationClass:"stagger-5"}),(0,e.jsx)(n,{title:a("overview.auditLogs"),value:d?.logs.events??0,subtext:`${a("overview.lastActivity")} ${Y}`,animationClass:"stagger-5"})]})}),(0,e.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,e.jsx)(l.Zk,{title:a("overview.hardwareUsage"),description:a("overview.hardwareUsageDesc"),children:(0,e.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,e.jsxs)("div",{className:`flex items-center gap-4 p-4 ${l.wD}`,children:[(0,e.jsx)(h.ke,{type:"dashboard",percent:d?.cpu.usagePercent??0,size:64,strokeColor:(d?.cpu.usagePercent??0)>80?"var(--colorDanger)":"var(--colorText)",strokeWidth:10}),(0,e.jsxs)("div",{className:"min-w-0",children:[(0,e.jsx)("div",{className:"text-sm font-medium text-[var(--colorTextSecondary)]",children:a("overview.cpuUsage")}),(0,e.jsxs)("div",{className:"text-xl font-bold",children:[d?.cpu.usagePercent?.toFixed(1)??"0.0","%"]}),(0,e.jsxs)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:[d?.cpu.cores??0," ",a("overview.cores")]})]})]}),(0,e.jsxs)("div",{className:`flex items-center gap-4 p-4 ${l.wD}`,children:[(0,e.jsx)(h.ke,{type:"dashboard",percent:d?.memory.usagePercent??0,size:64,strokeColor:(d?.memory.usagePercent??0)>80?"var(--colorDanger)":"var(--colorTextSecondary)",strokeWidth:10}),(0,e.jsxs)("div",{className:"min-w-0",children:[(0,e.jsx)("div",{className:"text-sm font-medium text-[var(--colorTextSecondary)]",children:a("overview.memoryUsage")}),(0,e.jsxs)("div",{className:"text-xl font-bold",children:[d?.memory.usagePercent??0,"%"]}),(0,e.jsxs)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:[d?.memory.usedMB??0," MB / ",d?.memory.totalMB??0," MB"]})]})]})]})}),(0,e.jsx)(l.Zk,{title:a("overview.activityContext"),description:a("overview.activityContextDesc"),children:(0,e.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,e.jsxs)("div",{className:`p-4 ${l.wD}`,children:[(0,e.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--colorTextTertiary)] mb-2",children:a("overview.topModel")}),X?(0,e.jsxs)("div",{className:"font-semibold flex items-center gap-2 min-w-0",children:[(0,e.jsx)(i.RobotOutlined,{className:"text-[var(--colorTextSecondary)] shrink-0"}),(0,e.jsx)("span",{className:"truncate",children:X.model}),(0,e.jsxs)("span",{className:"font-normal text-[var(--colorTextTertiary)] text-sm shrink-0",children:["@",X.provider]})]}):(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:a("overview.noDataAvailable")})]}),(0,e.jsxs)("div",{className:`p-4 ${l.wD}`,children:[(0,e.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--colorTextTertiary)] mb-3",children:a("overview.recentTaskTypes")}),d?.tasks.types&&Object.keys(d.tasks.types).length>0?(0,e.jsx)("div",{className:"flex flex-wrap gap-2",children:Object.entries(d.tasks.types).sort((a,b)=>b[1]-a[1]).map(([a,b])=>(0,e.jsxs)("div",{className:"px-2 py-1 rounded-lg text-xs font-mono bg-[var(--colorFillAlter)] text-[var(--colorTextSecondary)]",children:[a.slice(0,30)," ",(0,e.jsx)("span",{className:"ml-2 font-bold text-[var(--colorText)]",children:b})]},a))}):(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:a("common.noData")})]})]})})]}),(0,e.jsx)(l.Zk,{title:"数据体检与清理",description:"升级后旧数据会不会碍事、占了多少地方——先看清,再决定清什么",children:C?(0,e.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:`存储根 ${C.storageRoot}|工作流版本 ${C.workflowVersion}`}),(0,e.jsx)("div",{className:"flex flex-col gap-2",children:C.scopes.map(a=>(0,e.jsx)("div",{className:`p-3 flex items-start gap-3 ${l.wD}`,children:(0,e.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,e.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,e.jsx)("span",{className:"text-sm font-medium",children:a.label}),a.deletable?(0,e.jsx)(h.vw,{color:"blue",children:"可清理"}):(0,e.jsx)(h.vw,{children:"只体检"}),(0,e.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:`${a.files} 项|${(a.bytes/1048576).toFixed(1)} MB`})]}),(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)] mt-1",children:a.note})]})},a.key))}),C.legacy&&(0,e.jsxs)("div",{className:"p-3 flex flex-col gap-1",style:{background:"var(--colorFillQuaternary)",borderRadius:8},children:[(0,e.jsx)("div",{className:"text-sm",children:`历史类型残留:${C.legacy.recordsWithLegacyTypes}/${C.legacy.totalRecords} 条记录含已删除的节点类型(共 ${C.legacy.legacyNodes} 个节点)`}),(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:C.legacy.note})]}),(0,e.jsxs)(h.$x,{children:[(0,e.jsx)(h.$n,{size:"small",disabled:C.scopes.every(a=>!a.deletable),onClick:()=>{N([]),R(null),L(!0)},children:"清理可重建数据"}),(0,e.jsx)(h.$n,{size:"small",type:"text",loading:E,onClick:()=>{V()},children:"重新体检"}),G?(0,e.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:`上次体检 ${new Date(G).toLocaleTimeString(b)}${null!=I?` \xb7 耗时 ${I} ms`:""}`}):null]}),Q&&(0,e.jsx)(h.o5.Text,{type:"success",style:{fontSize:12},children:Q})]}):(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:a("common.noData")})}),(0,e.jsx)(h.aF,{title:"清理可重建数据",open:K,onCancel:()=>L(!1),okText:O?"清理中…":"确认清理",okButtonProps:{disabled:0===M.length||O,danger:!0},onOk:()=>{P(!0),(0,j.fc)(M).then(a=>{let b=a.removed.reduce((a,b)=>a+b.bytes,0);R(`已清理 ${a.removed.length} 项,释放 ${(b/1048576).toFixed(1)} MB`),D(a.report),L(!1)}).catch(a=>R(`清理失败:${a instanceof Error?a.message:String(a)}`)).finally(()=>P(!1))},children:(0,e.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,e.jsxs)(h.o5.Text,{type:"secondary",style:{fontSize:12},children:["只列**可重建**的数据:缓存键含内容与判据指纹,删掉只是下次重算。",(0,e.jsx)("br",{}),"生成记录、节点日志、技能库、知识库**不在清理范围**(那是你的资产)。"]}),(C?.scopes??[]).filter(a=>a.deletable).map(a=>(0,e.jsxs)("label",{className:"flex items-start gap-2 cursor-pointer",children:[(0,e.jsx)("input",{type:"checkbox",checked:M.includes(a.key),onChange:b=>N(c=>b.target.checked?[...c,a.key]:c.filter(b=>b!==a.key))}),(0,e.jsxs)("span",{className:"min-w-0",children:[(0,e.jsx)("span",{className:"text-sm",children:`${a.label}(${a.files} 项|${(a.bytes/1048576).toFixed(1)} MB)`}),(0,e.jsx)("span",{className:"block text-xs text-[var(--colorTextTertiary)]",children:a.note})]})]},a.key))]})})]})}g=(m.then?(await m)():m)[0],d()}catch(a){d(a)}})},89668:(a,b,c)=>{c.d(b,{Jm:()=>i,fw:()=>f,je:()=>d.j,mc:()=>j,z3:()=>e});var d=c(28017);function e(a){if(0===a)return"0 B";let b=Math.floor(Math.log(a)/Math.log(1024)),c=a/Math.pow(1024,b);return`${c.toFixed(+(0!==b))} ${["B","KB","MB","GB","TB"][b]}`}function f(a,b="zh-CN"){if(!a||a<=0)return"en-US"===b?"Never":"从未";let c=Math.floor(Math.floor((Date.now()-a)/1e3)/60),d=Math.floor(c/60),e=Math.floor(d/24);return e>30?new Date(a).toLocaleDateString(b):"en-US"===b?e>0?`${e}d ago`:d>0?`${d}h ago`:c>0?`${c}m ago`:"Just now":e>0?`${e} 天前`:d>0?`${d} 小时前`:c>0?`${c} 分钟前`:"刚刚"}let g={document:"文档",spreadsheet:"表格",image:"图片",cad:"图纸",code:"代码",data:"数据",web:"网页",diagram:"图表",archive:"压缩包",other:"其他"},h={document:"Document",spreadsheet:"Spreadsheet",image:"Image",cad:"CAD",code:"Code",data:"Data",web:"Web",diagram:"Diagram",archive:"Archive",other:"Other"};function i(a,b="zh-CN"){return("en-US"===b?h:g)[a]??a}let j={active:"common.statusIndexed",outdated:"common.statusOutdated",error:"common.statusAbnormal",deleted:"common.statusDeleted",disk:"common.statusNotIndexed"}}};