@customize-agent/server 4.60.34 → 4.60.36

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 (341) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +197 -297
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +3 -7
  5. package/.next/routes-manifest.json +19 -30
  6. package/.next/server/chunks/{8645.js → 1026.js} +1 -1
  7. package/.next/server/chunks/1146.js +1 -0
  8. package/.next/server/chunks/1547.js +385 -0
  9. package/.next/server/chunks/3074.js +1 -0
  10. package/.next/server/chunks/3750.js +2 -0
  11. package/.next/server/chunks/407.js +1 -0
  12. package/.next/server/chunks/5037.js +46 -0
  13. package/.next/server/chunks/5304.js +2 -2
  14. package/.next/server/chunks/5599.js +1 -0
  15. package/.next/server/chunks/5763.js +159 -0
  16. package/.next/server/chunks/6138.js +5 -0
  17. package/.next/server/chunks/6355.js +1 -0
  18. package/.next/server/chunks/6822.js +1 -1
  19. package/.next/server/chunks/702.js +3 -0
  20. package/.next/server/chunks/7296.js +1 -0
  21. package/.next/server/chunks/8176.js +1 -0
  22. package/.next/server/chunks/8204.js +1 -1
  23. package/.next/server/chunks/8459.js +11 -0
  24. package/.next/server/chunks/8570.js +1 -0
  25. package/.next/server/chunks/9270.js +1 -0
  26. package/.next/server/chunks/9283.js +7 -0
  27. package/.next/server/chunks/9301.js +2 -2
  28. package/.next/server/chunks/9522.js +5 -0
  29. package/.next/server/chunks/9559.js +1 -0
  30. package/.next/server/chunks/9688.js +10 -0
  31. package/.next/server/middleware-build-manifest.js +1 -1
  32. package/.next/server/pages/404.html +1 -1
  33. package/.next/server/pages/500.html +1 -1
  34. package/.next/server/pages/_app.js +1 -1
  35. package/.next/server/pages/_app.js.nft.json +1 -1
  36. package/.next/server/pages/_document.js +1 -1
  37. package/.next/server/pages/_document.js.nft.json +1 -1
  38. package/.next/server/pages/_error.js +1 -1
  39. package/.next/server/pages/_error.js.nft.json +1 -1
  40. package/.next/server/pages/api/assets/generated/preview.js +2 -1
  41. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  42. package/.next/server/pages/api/assets/generated.js +2 -1
  43. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  44. package/.next/server/pages/api/config/embedding/healthCheck.js +2 -3
  45. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  46. package/.next/server/pages/api/config/embedding.js +2 -3
  47. package/.next/server/pages/api/config/embedding.js.nft.json +1 -1
  48. package/.next/server/pages/api/config/healthCheck.js +2 -3
  49. package/.next/server/pages/api/config/healthCheck.js.nft.json +1 -1
  50. package/.next/server/pages/api/config/models.js +2 -3
  51. package/.next/server/pages/api/config/models.js.nft.json +1 -1
  52. package/.next/server/pages/api/config/providers/[provider].js +2 -3
  53. package/.next/server/pages/api/config/providers/[provider].js.nft.json +1 -1
  54. package/.next/server/pages/api/config/providers.js +2 -3
  55. package/.next/server/pages/api/config/providers.js.nft.json +1 -1
  56. package/.next/server/pages/api/config/reset.js +2 -3
  57. package/.next/server/pages/api/config/reset.js.nft.json +1 -1
  58. package/.next/server/pages/api/config/web-access.js +2 -3
  59. package/.next/server/pages/api/config/web-access.js.nft.json +1 -1
  60. package/.next/server/pages/api/documents/canvas/[id].js +2 -1
  61. package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -1
  62. package/.next/server/pages/api/documents/delivery-review.js +2 -0
  63. package/.next/server/pages/api/documents/delivery-review.js.nft.json +1 -0
  64. package/.next/server/pages/api/documents/export.js +5 -2
  65. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  66. package/.next/server/pages/api/documents/generate/preview.js +6 -1
  67. package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -1
  68. package/.next/server/pages/api/documents/generate.js +2 -1
  69. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  70. package/.next/server/pages/api/documents/generated/[id]/events.js +4 -3
  71. package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -1
  72. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js +2 -1
  73. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -1
  74. package/.next/server/pages/api/documents/generated/[id]/instruction.js +4 -2
  75. package/.next/server/pages/api/documents/generated/[id]/instruction.js.nft.json +1 -1
  76. package/.next/server/pages/api/documents/generated/[id]/messages.js +2 -0
  77. package/.next/server/pages/api/documents/generated/[id]/messages.js.nft.json +1 -0
  78. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js +2 -1
  79. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -1
  80. package/.next/server/pages/api/documents/generated/[id]/nodes.js +2 -1
  81. package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -1
  82. package/.next/server/pages/api/documents/generated/[id]/pause.js +2 -1
  83. package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -1
  84. package/.next/server/pages/api/documents/generated/[id]/preview.js +2 -1
  85. package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -1
  86. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +2 -1
  87. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -1
  88. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js +2 -1
  89. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -1
  90. package/.next/server/pages/api/documents/generated/[id]/repair.js +2 -1
  91. package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -1
  92. package/.next/server/pages/api/documents/generated/[id]/report.js +2 -1
  93. package/.next/server/pages/api/documents/generated/[id]/report.js.nft.json +1 -1
  94. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js +2 -1
  95. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -1
  96. package/.next/server/pages/api/documents/generated/[id].js +2 -1
  97. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  98. package/.next/server/pages/api/documents/generated.js +2 -1
  99. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  100. package/.next/server/pages/api/health.js +1 -1
  101. package/.next/server/pages/api/health.js.nft.json +1 -1
  102. package/.next/server/pages/api/jobs/[id].js +2 -2
  103. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  104. package/.next/server/pages/api/kb/categories.js +2 -1
  105. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  106. package/.next/server/pages/api/kb/duplicates.js +2 -1
  107. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  108. package/.next/server/pages/api/kb/features.js +2 -3
  109. package/.next/server/pages/api/kb/features.js.nft.json +1 -1
  110. package/.next/server/pages/api/kb/files/detail.js +2 -1
  111. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  112. package/.next/server/pages/api/kb/files/export.js +2 -1
  113. package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
  114. package/.next/server/pages/api/kb/files/open.js +2 -1
  115. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  116. package/.next/server/pages/api/kb/files/preview-pdf-page.js +2 -1
  117. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  118. package/.next/server/pages/api/kb/files/reindex.js +1 -2
  119. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  120. package/.next/server/pages/api/kb/files/search.js +2 -1
  121. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  122. package/.next/server/pages/api/kb/files/source-preview.js +2 -1
  123. package/.next/server/pages/api/kb/files/source-preview.js.nft.json +1 -1
  124. package/.next/server/pages/api/kb/files.js +2 -2
  125. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  126. package/.next/server/pages/api/kb/ignore.js +2 -1
  127. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  128. package/.next/server/pages/api/kb/material-groups.js +2 -1
  129. package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -1
  130. package/.next/server/pages/api/kb/operations.js +2 -2
  131. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  132. package/.next/server/pages/api/kb/reindex.js +1 -2
  133. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  134. package/.next/server/pages/api/kb/stats.js +2 -1
  135. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  136. package/.next/server/pages/api/kb/tags.js +2 -1
  137. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  138. package/.next/server/pages/api/kb/upload/complete.js +1 -2
  139. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  140. package/.next/server/pages/api/kb/upload.js +1 -2
  141. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  142. package/.next/server/pages/api/prompt/chat.js +3 -4
  143. package/.next/server/pages/api/prompt/chat.js.nft.json +1 -1
  144. package/.next/server/pages/api/skills/[id].js +2 -1
  145. package/.next/server/pages/api/skills/[id].js.nft.json +1 -1
  146. package/.next/server/pages/api/skills/validate.js +2 -1
  147. package/.next/server/pages/api/skills/validate.js.nft.json +1 -1
  148. package/.next/server/pages/api/skills.js +2 -1
  149. package/.next/server/pages/api/skills.js.nft.json +1 -1
  150. package/.next/server/pages/api/system/data-health.js +2 -2
  151. package/.next/server/pages/api/system/data-health.js.nft.json +1 -1
  152. package/.next/server/pages/api/system/reset.js +1 -1
  153. package/.next/server/pages/api/system/reset.js.nft.json +1 -1
  154. package/.next/server/pages/documents.html +1 -1
  155. package/.next/server/pages/documents.js.nft.json +1 -1
  156. package/.next/server/pages/generation/[id].html +1 -0
  157. package/.next/server/pages/generation/[id].js.nft.json +1 -0
  158. package/.next/server/pages/generation.html +1 -0
  159. package/.next/server/pages/generation.js.nft.json +1 -0
  160. package/.next/server/pages/index.js +1 -0
  161. package/.next/server/pages/index.js.nft.json +1 -1
  162. package/.next/server/pages/jobs.html +1 -1
  163. package/.next/server/pages/jobs.js.nft.json +1 -1
  164. package/.next/server/pages/knowledge/file-detail.html +1 -1
  165. package/.next/server/pages/knowledge/file-detail.js.nft.json +1 -1
  166. package/.next/server/pages/knowledge/files.html +1 -1
  167. package/.next/server/pages/knowledge/files.js.nft.json +1 -1
  168. package/.next/server/pages/knowledge/manage.html +1 -1
  169. package/.next/server/pages/knowledge/manage.js.nft.json +1 -1
  170. package/.next/server/pages/knowledge/source-preview.html +1 -1
  171. package/.next/server/pages/knowledge/source-preview.js.nft.json +1 -1
  172. package/.next/server/pages/knowledge.html +1 -1
  173. package/.next/server/pages/knowledge.js.nft.json +1 -1
  174. package/.next/server/pages/models.html +1 -1
  175. package/.next/server/pages/models.js.nft.json +1 -1
  176. package/.next/server/pages/settings.html +1 -1
  177. package/.next/server/pages/settings.js.nft.json +1 -1
  178. package/.next/server/pages/skills/[id]/edit.html +1 -1
  179. package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
  180. package/.next/server/pages/skills/[id].html +1 -1
  181. package/.next/server/pages/skills/[id].js.nft.json +1 -1
  182. package/.next/server/pages/skills/new.html +1 -1
  183. package/.next/server/pages/skills/new.js.nft.json +1 -1
  184. package/.next/server/pages/skills.html +1 -1
  185. package/.next/server/pages/skills.js.nft.json +1 -1
  186. package/.next/server/pages-manifest.json +35 -40
  187. package/.next/static/chunks/112-9eacc7c0686813d6.js +1 -0
  188. package/.next/static/chunks/127-5ee1899eef559281.js +1 -0
  189. package/.next/static/chunks/{1210-703ad87eaeee1e4e.js → 210-71eaf9de9aa92051.js} +1 -1
  190. package/.next/static/chunks/325-45106bb003a2c5ce.js +4 -0
  191. package/.next/static/chunks/326-a3915e61888b0dbf.js +1 -0
  192. package/.next/static/chunks/333-7642e65bff6b8465.js +1 -0
  193. package/.next/static/chunks/338-19ccbaec57a7bf9c.js +4 -0
  194. package/.next/static/chunks/350-87b9c900a356d9b9.js +1 -0
  195. package/.next/static/chunks/359-f87c659236e0e0fe.js +1 -0
  196. package/.next/static/chunks/{8399-a001bb2a0cb1640b.js → 399-aa8a45d80e989621.js} +1 -1
  197. package/.next/static/chunks/430-f288e16301b9aea5.js +1 -0
  198. package/.next/static/chunks/465-80fbb245d43232c8.js +6 -0
  199. package/.next/static/chunks/499-2233cadc6d4da647.js +10 -0
  200. package/.next/static/chunks/551-fd86e95935b0957f.js +16 -0
  201. package/.next/static/chunks/576-6699fed6c88502fe.js +1 -0
  202. package/.next/static/chunks/61-de1dd9c104680470.js +1 -0
  203. package/.next/static/chunks/665-0634aa49137defc4.js +1 -0
  204. package/.next/static/chunks/681-e31b13114497e058.js +1 -0
  205. package/.next/static/chunks/687-644a12a5b584e19f.js +1 -0
  206. package/.next/static/chunks/702-4d9cc8d4d7775ea9.js +1 -0
  207. package/.next/static/chunks/748-9e5bf4181d7482f3.js +1 -0
  208. package/.next/static/chunks/759-280cf4040fae83af.js +25 -0
  209. package/.next/static/chunks/855-cbf7cd1db33198f0.js +17 -0
  210. package/.next/static/chunks/862-13d1c84d0938b824.js +1 -0
  211. package/.next/static/chunks/937-ccd3ceb1b3739535.js +1 -0
  212. package/.next/static/chunks/{8964-e959915ecfae86b2.js → 964-82cc4701f08f7351.js} +1 -1
  213. package/.next/static/chunks/992-8032f477230baaaf.js +1 -0
  214. package/.next/static/chunks/framework-4b565b3ddc94cdac.js +1 -0
  215. package/.next/static/chunks/main-0c91f573696223ca.js +1 -0
  216. package/.next/static/chunks/pages/_app-a70de062f1be1c59.js +140 -0
  217. package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +1 -0
  218. package/.next/static/chunks/pages/documents-2d99ae9287f9739b.js +1 -0
  219. package/.next/static/chunks/pages/generation/[id]-1f97e47ce545bd11.js +1 -0
  220. package/.next/static/chunks/pages/generation-043e325d635c96af.js +1 -0
  221. package/.next/static/chunks/pages/index-24d1f8f39ae0beb0.js +1 -0
  222. package/.next/static/chunks/pages/jobs-ff2f899a081b616e.js +1 -0
  223. package/.next/static/chunks/pages/knowledge/file-detail-9a9a89e4fa33c0d9.js +1 -0
  224. package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +1 -0
  225. package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +1 -0
  226. package/.next/static/chunks/pages/knowledge/{source-preview-24936b9a746ed07f.js → source-preview-f000b4d63cd65a54.js} +1 -1
  227. package/.next/static/chunks/pages/knowledge-8fa842d21892e2c3.js +1 -0
  228. package/.next/static/chunks/pages/models-6d9b301009f82395.js +1 -0
  229. package/.next/static/chunks/pages/settings-08893ba8afa1a486.js +1 -0
  230. package/.next/static/chunks/pages/skills/[id]/edit-378249e662ebf31f.js +1 -0
  231. package/.next/static/chunks/pages/skills/[id]-0ca4cde22e4a518b.js +1 -0
  232. package/.next/static/chunks/pages/skills/new-c1eb16d98fad4e02.js +1 -0
  233. package/.next/static/chunks/pages/skills-9fb1fa2b669ad4e3.js +1 -0
  234. package/.next/static/chunks/{webpack-2da1769ff35eb1ed.js → webpack-6224d37324e372cb.js} +1 -1
  235. package/.next/static/css/1f6d2a1bf5e15e0f.css +1 -0
  236. package/.next/static/css/b420c193e0e99857.css +1 -0
  237. package/.next/static/e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2/_buildManifest.js +1 -0
  238. package/README.md +14 -4
  239. package/messages/en-US.json +46 -100
  240. package/messages/zh-CN.json +44 -98
  241. package/next.config.ts +6 -5
  242. package/package.json +5 -6
  243. package/scripts/build-identity.cjs +16 -5
  244. package/scripts/check-workspace-deps.cjs +3 -3
  245. package/scripts/purge-next-artifacts.cjs +8 -5
  246. package/scripts/upload-matrix.cjs +1 -2
  247. package/scripts/verify-next-static.js +1 -1
  248. package/.next/server/chunks/1001.js +0 -2
  249. package/.next/server/chunks/1243.js +0 -3
  250. package/.next/server/chunks/1928.js +0 -1
  251. package/.next/server/chunks/1936.js +0 -385
  252. package/.next/server/chunks/2328.js +0 -6
  253. package/.next/server/chunks/2434.js +0 -4
  254. package/.next/server/chunks/3806.js +0 -1
  255. package/.next/server/chunks/4974.js +0 -2
  256. package/.next/server/chunks/5746.js +0 -5
  257. package/.next/server/chunks/6321.js +0 -1
  258. package/.next/server/chunks/7848.js +0 -145
  259. package/.next/server/chunks/9666.js +0 -146
  260. package/.next/server/instrumentation.js +0 -1
  261. package/.next/server/instrumentation.js.nft.json +0 -1
  262. package/.next/server/pages/api/prompt.js +0 -2
  263. package/.next/server/pages/api/prompt.js.nft.json +0 -1
  264. package/.next/server/pages/api/system/logs.js +0 -2
  265. package/.next/server/pages/api/system/logs.js.nft.json +0 -1
  266. package/.next/server/pages/api/system/stats.js +0 -2
  267. package/.next/server/pages/api/system/stats.js.nft.json +0 -1
  268. package/.next/server/pages/canvas/[id].html +0 -1
  269. package/.next/server/pages/canvas/[id].js.nft.json +0 -1
  270. package/.next/server/pages/canvas.html +0 -1
  271. package/.next/server/pages/canvas.js.nft.json +0 -1
  272. package/.next/server/pages/guide.html +0 -1
  273. package/.next/server/pages/guide.js.nft.json +0 -1
  274. package/.next/server/pages/index.html +0 -1
  275. package/.next/server/pages/overview.html +0 -1
  276. package/.next/server/pages/overview.js.nft.json +0 -1
  277. package/.next/server/pages/prompt.html +0 -1
  278. package/.next/server/pages/prompt.js.nft.json +0 -1
  279. package/.next/server/pages/system/logs.html +0 -1
  280. package/.next/server/pages/system/logs.js.nft.json +0 -1
  281. package/.next/static/0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af/_buildManifest.js +0 -1
  282. package/.next/static/chunks/1141-d420a7685bc3623c.js +0 -1
  283. package/.next/static/chunks/1499-ff8f02f6bb6f3d45.js +0 -10
  284. package/.next/static/chunks/1702-f5e99af7aface475.js +0 -1
  285. package/.next/static/chunks/2864-b040f2bffa08c139.js +0 -6
  286. package/.next/static/chunks/3456-70bb03a39473f693.js +0 -1
  287. package/.next/static/chunks/3980-73841c40d55ddfa1.js +0 -1
  288. package/.next/static/chunks/4052-199e61ca9e6a33e7.js +0 -1
  289. package/.next/static/chunks/4337-a670a1a94ab505d9.js +0 -1
  290. package/.next/static/chunks/4530-8b9788da40548ec6.js +0 -1
  291. package/.next/static/chunks/4565-3c5ff667062ccec9.js +0 -21
  292. package/.next/static/chunks/4665-1984a3d8b0573fa1.js +0 -1
  293. package/.next/static/chunks/5061-80765d4a612286e0.js +0 -1
  294. package/.next/static/chunks/5544-d77b8289662b4c28.js +0 -4
  295. package/.next/static/chunks/5760-f4191aac081b12d4.js +0 -11
  296. package/.next/static/chunks/6409-5a3bb0fbad4f64b1.js +0 -14
  297. package/.next/static/chunks/6506-ac0ba7338cc84b7d.js +0 -1
  298. package/.next/static/chunks/6748-07b0b05bf03c72f0.js +0 -1
  299. package/.next/static/chunks/7217-416b8488e0d2d498.js +0 -1
  300. package/.next/static/chunks/7576-ba6fc03060415b0e.js +0 -1
  301. package/.next/static/chunks/7646-159733564c7eb8dc.js +0 -1
  302. package/.next/static/chunks/7795-c11ff1a81c67c5aa.js +0 -1
  303. package/.next/static/chunks/8318-cb3a94de1617f983.js +0 -1
  304. package/.next/static/chunks/8338-b2ea00050048ba9f.js +0 -4
  305. package/.next/static/chunks/8564-ac3e2f1bf87765b3.js +0 -1
  306. package/.next/static/chunks/8569-1d5c61a3f4fa0e26.js +0 -16
  307. package/.next/static/chunks/8715-ee013bd7f5ba38e8.js +0 -1
  308. package/.next/static/chunks/8750-a3c55a576effb3a6.js +0 -1
  309. package/.next/static/chunks/8787-49b1f35eb4acfac9.js +0 -10
  310. package/.next/static/chunks/9551-f4b09bf2213ad571.js +0 -16
  311. package/.next/static/chunks/9605-3dee531f8a7ecbe0.js +0 -4
  312. package/.next/static/chunks/9937-e4b2deadd24e3962.js +0 -1
  313. package/.next/static/chunks/framework-9cde5013cd555765.js +0 -1
  314. package/.next/static/chunks/main-b313efde54fa6d2e.js +0 -1
  315. package/.next/static/chunks/pages/_app-51c48c5efcf5c721.js +0 -140
  316. package/.next/static/chunks/pages/_error-c01b6fb772028676.js +0 -1
  317. package/.next/static/chunks/pages/canvas/[id]-18865f1b7e3a4696.js +0 -1
  318. package/.next/static/chunks/pages/canvas-1d3589790493e955.js +0 -1
  319. package/.next/static/chunks/pages/documents-a1af5c6be26daed2.js +0 -1
  320. package/.next/static/chunks/pages/guide-fdf0822dc1d28813.js +0 -1
  321. package/.next/static/chunks/pages/index-c572e9caa60cb278.js +0 -1
  322. package/.next/static/chunks/pages/jobs-ebd1877dbf788a83.js +0 -1
  323. package/.next/static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js +0 -1
  324. package/.next/static/chunks/pages/knowledge/files-b796702bb5f8ac50.js +0 -1
  325. package/.next/static/chunks/pages/knowledge/manage-6d7b21cdca1255f2.js +0 -1
  326. package/.next/static/chunks/pages/knowledge-2a776c1740386874.js +0 -1
  327. package/.next/static/chunks/pages/models-8a89dd5bf0f81242.js +0 -1
  328. package/.next/static/chunks/pages/overview-7e8018014009682e.js +0 -1
  329. package/.next/static/chunks/pages/prompt-11f87694feb6514c.js +0 -1
  330. package/.next/static/chunks/pages/settings-e8dcaba1551a0b2b.js +0 -1
  331. package/.next/static/chunks/pages/skills/[id]/edit-99e616d5019e80b1.js +0 -1
  332. package/.next/static/chunks/pages/skills/[id]-71f696be252bbf0d.js +0 -1
  333. package/.next/static/chunks/pages/skills/new-00886ea4c676f927.js +0 -1
  334. package/.next/static/chunks/pages/skills-8ad2577b4aa17f3b.js +0 -1
  335. package/.next/static/chunks/pages/system/logs-0856f7c65432befb.js +0 -1
  336. package/.next/static/css/2da1c822e3bdb4bb.css +0 -1
  337. package/.next/static/css/9eb02c1a401fd278.css +0 -1
  338. package/scripts/half-built-scan.allow.json +0 -152
  339. package/scripts/half-built-scan.baseline.json +0 -190
  340. package/scripts/half-built-scan.mjs +0 -287
  341. /package/.next/static/{0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af → e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2}/_ssgManifest.js +0 -0
@@ -3,55 +3,12 @@
3
3
  "title": "Customize Agent"
4
4
  },
5
5
  "nav": {
6
- "overview": "总览",
7
6
  "knowledge": "知识库",
8
- "canvas": "生成画布",
7
+ "generation": "生成",
9
8
  "skills": "技能库",
10
- "guide": "指引",
11
9
  "models": "模型配置",
12
10
  "settings": "设置",
13
- "promptManagement": "提示词管理",
14
- "systemLogs": "系统日志"
15
- },
16
- "overview": {
17
- "title": "系统总览",
18
- "description": "查看 Customize Agent 运行状态与关键指标",
19
- "status": "服务状态",
20
- "knowledgeBase": "知识库",
21
- "chunksCount": "分块总数",
22
- "cores": "核",
23
- "memory": "内存",
24
- "tokensUsed": "累计 Tokens",
25
- "tasksTotal": "总任务数",
26
- "successRate": "成功率",
27
- "topModel": "调用最多模型",
28
- "systemResources": "系统资源",
29
- "hardwareUsage": "硬件使用率",
30
- "cpuUsage": "CPU 使用率",
31
- "memoryUsage": "内存使用率",
32
- "activityContext": "活动上下文",
33
- "recentTaskTypes": "最近任务类型",
34
- "noDataAvailable": "暂无数据",
35
- "updated": "已更新",
36
- "noLogs": "暂无日志",
37
- "uptime": "运行时间",
38
- "templateCount": "生成记录",
39
- "materialUnderstanding": "资料理解",
40
- "semanticModel": "语义模型",
41
- "external": "外部",
42
- "local": "本地",
43
- "notConfigured": "未配置",
44
- "modelProviders": "模型供应商",
45
- "auditLogs": "审计日志",
46
- "prompts": "提示词",
47
- "processUptime": "本次进程",
48
- "materialKinds": "类已识别资料",
49
- "lastActivity": "最后活动",
50
- "coreMetrics": "核心指标",
51
- "coreMetricsDesc": "服务累计运行时长、Token 消耗、任务与成功率。运行时间取**首次启动至今**(重启不清零),副文本是本次进程时长。",
52
- "systemResourcesDesc": "生成侧的资源分布:知识库资料类型、提示词、生成记录、语义模型与模型供应商。",
53
- "hardwareUsageDesc": "CPU 与内存的当前占用。CPU 是两次刷新之间的增量,服务刚起来时可能显示 0。",
54
- "activityContextDesc": "最近一段时间的模型调用与任务类型分布。"
11
+ "promptManagement": "提示词管理"
55
12
  },
56
13
  "knowledge": {
57
14
  "title": "知识库",
@@ -293,7 +250,13 @@
293
250
  "modelIdentifier": "模型标识",
294
251
  "modelIdentifierPlaceholder": "例如 deepseek-v4-pro",
295
252
  "modelIdentifierHint": "不填时使用服务名称作为模型标识;需要时填写服务实际接受的标识。",
296
- "modelIdentifierDefaulted": "已选中「{name}」:模型标识暂用服务名。若服务方要求具体型号(如 deepseek-chat、glm-4.6),点「编辑」填一次。"
253
+ "modelIdentifierDefaulted": "已选中「{name}」:模型标识暂用服务名。若服务方要求具体型号(如 deepseek-chat、glm-4.6),点「编辑」填一次。",
254
+ "roleModelSectionTitle": "角色模型",
255
+ "roleModelSectionDesc": "写作、规划、审查可分别指定已添加的模型;不选则使用当前生成模型。",
256
+ "roleModelWriter": "写作(正文初稿)",
257
+ "roleModelPlanner": "规划(结构/命名)",
258
+ "roleModelReviewer": "审查(独立评审)",
259
+ "roleModelDefault": "默认(当前生成模型)"
297
260
  },
298
261
  "prompt": {
299
262
  "title": "提示词管理",
@@ -392,30 +355,9 @@
392
355
  "openFile": "打开文件",
393
356
  "openDirectory": "打开目录"
394
357
  },
395
- "logs": {
396
- "backToSettings": "返回设置",
397
- "monitorSystem": "监控系统异常、API 错误和运行时问题",
398
- "searchLogs": "搜索日志...",
399
- "refresh": "刷新",
400
- "clear": "清空",
401
- "clearConfirm": "确认清空所有错误日志?",
402
- "logStorageInfo": "日志存储在本地",
403
- "maxLoaded": "最多加载 500 条。",
404
- "noLogsFound": "没有找到日志",
405
- "time": "时间",
406
- "level": "级别",
407
- "source": "来源",
408
- "message": "消息",
409
- "requestId": "请求 ID",
410
- "function": "函数",
411
- "requestContext": "请求上下文",
412
- "metadata": "元数据",
413
- "stackTrace": "堆栈跟踪",
414
- "clearedFiles": "已清空 {count} 个错误日志文件"
415
- },
416
358
  "settings": {
417
- "title": "系统设置",
418
- "description": "管理系统界面选项和状态概览",
359
+ "title": "设置",
360
+ "description": "管理界面偏好与本地数据",
419
361
  "language": "界面语言",
420
362
  "languageDesc": "选择系统显示的语言",
421
363
  "theme": "外观主题",
@@ -423,36 +365,40 @@
423
365
  "light": "浅色",
424
366
  "dark": "深色",
425
367
  "system": "跟随系统",
426
- "serverStatus": "服务状态",
427
- "serverStatusDesc": "查看资源使用和运行健康度",
428
- "status": "状态",
429
- "healthy": "健康",
430
- "unknown": "未知",
431
- "uptime": "运行时间",
432
- "days": "天",
433
- "hours": "小时",
434
- "minutes": "分",
435
- "cpu": "处理器",
436
- "cores": "核",
437
- "memory": "内存使用",
438
- "embeddingConfig": "向量配置",
439
- "embeddingConfigDesc": "查看知识库的向量检索设定",
440
- "provider": "供应商",
441
- "model": "模型",
442
- "apiKey": "密钥配置",
443
- "configured": "已配置",
444
- "none": "未配置",
445
- "dimensions": "向量维度",
446
368
  "localData": "本地数据",
447
- "localDataDesc": "所有数据仅存储在您的本地设备上",
369
+ "localDataDesc": "知识库文件、生成记录与配置都保存在本机",
448
370
  "directory": "存储目录",
449
- "knowledgeBase": "知识库格式",
450
- "localVectors": "本地向量",
451
- "tasks": "总任务",
452
- "tokens": "累计 Tokens",
453
- "diagnostics": "诊断",
454
- "diagnosticsDesc": "服务端异常日志(堆栈、请求、来源)。排查「这次生成为什么失败」时用。",
455
- "openDiagnostics": "打开诊断日志"
371
+ "dataHint": "换机或重装前,请先备份这个目录。",
372
+ "maintenance": "数据维护",
373
+ "maintenanceDesc": "查看本地数据占用,清理可以重新生成的缓存;不会动你的资料、生成记录和配置。",
374
+ "storageRoot": "存储根",
375
+ "workflowVersion": "工作流版本",
376
+ "recheck": "重新体检",
377
+ "startCheck": "开始体检",
378
+ "notChecked": "尚未体检",
379
+ "rechecking": "正在体检…",
380
+ "recheckedAt": "上次体检 {time},耗时 {ms} ms",
381
+ "cleanupTitle": "清理可重建数据",
382
+ "cleanupDesc": "只清理缓存与可重新生成的中间产物;删除后下次用到时会自动重算。",
383
+ "cleanupAction": "清理可重建数据",
384
+ "cleanupConfirm": "确认清理",
385
+ "cleanupBusy": "清理中…",
386
+ "cleanupDone": "已清理 {count} 项,释放 {size}",
387
+ "cleanupFailed": "清理失败:{message}",
388
+ "deletable": "可清理",
389
+ "inspectOnly": "只体检",
390
+ "scopeFiles": "{count} 项",
391
+ "noHealthData": "暂时读不到数据体检结果",
392
+ "formatTitle": "清除全部数据(格式化)",
393
+ "formatDesc": "删除知识库上传文件、生成记录、提示词、模型/嵌入配置、状态与日志,不可恢复。",
394
+ "formatAction": "清除全部数据",
395
+ "formatModalTitle": "清除全部数据",
396
+ "formatModalBody": "将删除存储根 ~/.customize-agent 下的全部内容:知识库上传文件、生成记录、提示词、模型/嵌入配置、状态与日志。",
397
+ "formatModalWarning": "此操作不可恢复,请确认已备份需要保留的资料。",
398
+ "formatBusy": "清除中…",
399
+ "formatConfirm": "确认清除",
400
+ "formatDone": "已清除全部数据,即将刷新",
401
+ "formatFailed": "清除失败,请重试"
456
402
  },
457
403
  "documents": {
458
404
  "saveDraft": "保存草稿",
@@ -597,4 +543,4 @@
597
543
  "reviewReportLabel": "交付三件套报告",
598
544
  "reviewReportView": "在线查看"
599
545
  }
600
- }
546
+ }
package/next.config.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { NextConfig } from 'next';
2
+ import { PHASE_DEVELOPMENT_SERVER } from 'next/constants';
2
3
  import { captureBuildIdentity } from './scripts/build-identity.cjs';
3
4
 
4
5
  const buildIdentity = captureBuildIdentity();
@@ -8,14 +9,11 @@ const serverExternalPackages = [
8
9
  '@customize-agent/knowledge',
9
10
  '@customize-agent/llm',
10
11
  '@customize-agent/runtime',
11
- '@customize-agent/types',
12
+ '@customize-agent/contracts',
12
13
  '@napi-rs/canvas',
13
14
  'better-sqlite3',
14
15
  'jszip',
15
16
  'mammoth',
16
- 'pdf-parse',
17
- 'pdfjs-dist',
18
- 'tesseract.js',
19
17
  'xlsx',
20
18
  ];
21
19
 
@@ -48,4 +46,7 @@ const nextConfig: NextConfig = {
48
46
  },
49
47
  };
50
48
 
51
- export default nextConfig;
49
+ // One source tree, separate writable build directories. A dev server must never overwrite a production build.
50
+ export default function configForPhase(phase: string): NextConfig {
51
+ return { ...nextConfig, distDir: phase === PHASE_DEVELOPMENT_SERVER ? '.next-dev' : '.next' };
52
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customize-agent/server",
3
- "version": "4.60.34",
3
+ "version": "4.60.36",
4
4
  "description": "Customize Agent Web 管理控制台",
5
5
  "exports": {
6
6
  "./package.json": "./package.json"
@@ -36,9 +36,9 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@ant-design/icons": "^6.3.2",
39
- "@customize-agent/knowledge": "^5.2.13",
40
- "@customize-agent/llm": "^3.1.6",
41
- "@customize-agent/runtime": "^3.1.4",
39
+ "@customize-agent/knowledge": "^5.2.14",
40
+ "@customize-agent/llm": "^3.1.7",
41
+ "@customize-agent/runtime": "^3.1.5",
42
42
  "@napi-rs/canvas": "^0.1.82",
43
43
  "@types/nprogress": "^0.2.3",
44
44
  "antd": "^6.5.0",
@@ -50,7 +50,6 @@
50
50
  "next": "15.5.19",
51
51
  "next-themes": "^0.4.0",
52
52
  "nprogress": "^0.2.0",
53
- "pdfjs-dist": "5.7.284",
54
53
  "playwright": "^1.57.0",
55
54
  "react": "19.2.7",
56
55
  "react-dom": "19.2.7",
@@ -69,7 +68,7 @@
69
68
  "tailwindcss": "^4.3.2"
70
69
  },
71
70
  "scripts": {
72
- "dev": "node scripts/purge-next-artifacts.cjs full && next dev -p 17321",
71
+ "dev": "node scripts/purge-next-artifacts.cjs dev && next dev -p 17321",
73
72
  "build": "node scripts/purge-next-artifacts.cjs full && next build && node scripts/purge-next-artifacts.cjs publish && node scripts/verify-next-static.js",
74
73
  "prebuild": "node scripts/check-workspace-deps.cjs",
75
74
  "prestart": "node scripts/verify-next-static.js",
@@ -4,7 +4,7 @@ const crypto = require('node:crypto');
4
4
  const { execFileSync } = require('node:child_process');
5
5
 
6
6
  /** 只读取构建输入;不读取用户配置、知识库或模型权重。 */
7
- function captureBuildIdentity(serverRoot = path.resolve(__dirname, '..')) {
7
+ function captureBuildIdentity(serverRoot = path.resolve(__dirname, '..'), contentOverrides) {
8
8
  const workspace = path.resolve(serverRoot, '../..');
9
9
  const files = new Set();
10
10
  const add = file => { if (fs.existsSync(file) && fs.statSync(file).isFile()) files.add(file); };
@@ -22,7 +22,7 @@ function captureBuildIdentity(serverRoot = path.resolve(__dirname, '..')) {
22
22
  for (const name of ['font-manifest.json', 'NotoSansCJKsc-Regular.otf', 'OFL-Noto-CJK.txt']) add(path.join(serverRoot, 'public/fonts', name));
23
23
  for (const name of ['package.json', 'next.config.ts', 'tsconfig.json', 'tsconfig.production.json']) add(path.join(serverRoot, name));
24
24
  if (fs.existsSync(path.join(workspace, 'pnpm-workspace.yaml'))) {
25
- for (const name of ['knowledge', 'llm', 'runtime', 'types']) {
25
+ for (const name of ['knowledge', 'llm', 'runtime', 'contracts']) {
26
26
  const root = path.join(workspace, 'packages', name);
27
27
  walk(path.join(root, 'src'));
28
28
  walk(path.join(root, 'dist'));
@@ -33,17 +33,27 @@ function captureBuildIdentity(serverRoot = path.resolve(__dirname, '..')) {
33
33
  for (const name of ['package.json', 'pnpm-lock.yaml', 'tsconfig.base.json', 'turbo.json']) add(path.join(workspace, name));
34
34
  }
35
35
  const hash = crypto.createHash('sha256');
36
+ const sourceManifest = {};
36
37
  const semanticHashes = { projectFacts: crypto.createHash('sha256'), documentGeneration: crypto.createHash('sha256') };
37
38
  const semanticCounts = { projectFacts: 0, documentGeneration: 0 };
38
- const extractionModules = /src\/services\/document-workflow\/(?:factsModel|factGovernance|factValueNoise|factMatching|quantitativeAttribute|projectModel|requiredContentNeeds|projectTypeConfirmation|documentLlmRunContext|projectMaterialProfile|tenderRequirements|tenderRequirementDiscovery|tenderDiscoverySourceEvidence|hazardBinding|poolNoise|documentGeneratorHelpers|utils|promptPlan|llmClient|runModelConfiguration|extractionIdentity|tuningProfile|factReadiness|sourceVersionPolicy|sourceVersionFactUse|tenderClauseConsistency|tenderSourceTableQuantities|tenderClarificationSourceGroups|plannedTenderAssignments|billOfQuantitiesParser|integratedBlueprint\/outline|constructionProductionPlan|sharedConstructionPlan|professionalOutlineReview|sourceTemporalFacts|effectiveFactProjection|valueOverride|authoritativeValues|tenderClauseContinuity|tenderTableContinuity|tenderSourceSpanFingerprint|tenderNativeFileEvidence|workflowRules|engineeringUnits|unitAliases|sourceControlRegistry|parsedBrandFacts|authorNumericSources|boqSpecificationTokens|prepareCadGeometry|cadSourceProof|cadGeometryInterpretation|reviewedCadFacts|frozenCadSourceView|technicalFactMeaning)(?:\.ts|\/)/u;
39
+ /**
40
+ * 事实抽取依赖清单。
41
+ *
42
+ * ⚠ **本清单失配不报错**:只会让 `projectFacts` 语义指纹静默退化为不含该模块,
43
+ * 事实缓存随之从「按算法身份复用」退化为「每次重算」(表现为成本上升、无任何提示)。
44
+ * 目录/模块改名必须与本清单**同批**更新;反向核验见 `test/services/common/buildIdentity.test.ts`。
45
+ * 已解散的 `documentGeneratorHelpers.ts`(4 行 `export *` 转发壳)不再计入。
46
+ */
47
+ const extractionModules = /src\/services\/(?:archive\/(?:legacyProductionPlanEvidence|legacyConstructionPlanEvidence)|construction-domain\/(?:constructionSourceQuantities)|document-assets\/authoring\/(?:promptPlan|authorNumericSources)|document-assets\/chapter-plan\/(?:plannedTenderAssignments|integratedBlueprint\/outline|professionalOutlineReview)|facts-evidence\/(?:effectiveFactProjection|tenderNativeFileEvidence|factsModel|factGovernance|factValueNoise|factMatching|quantitativeAttribute|projectModel|requiredContentNeeds|projectTypeConfirmation|projectMaterialProfile|tenderRequirements|tenderRequirementDiscovery|tenderDiscoverySourceEvidence|hazardBinding|poolNoise|extractionIdentity|factReadiness|sourceVersionPolicy|sourceVersionFactUse|tenderClauseConsistency|tenderSourceTableQuantities|tenderClarificationSourceGroups|billOfQuantitiesParser|sourceTemporalFacts|valueOverride|authoritativeValues|tenderClauseContinuity|tenderTableContinuity|tenderSourceSpanFingerprint|workflowRules|sourceControlRegistry|parsedBrandFacts|boqSpecificationTokens|prepareCadGeometry|cadSourceProof|cadGeometryInterpretation|reviewedCadFacts|frozenCadSourceView|technicalFactMeaning)|generation-runtime\/(?:documentLlmRunContext|llmClient|runModelConfiguration|tuningProfile)|shared\/(?:utils|engineeringUnits|unitAliases))(?:\.ts|\/)/u;
39
48
  for (const file of [...files].sort()) {
40
49
  const relative = path.relative(serverRoot, file).split(path.sep).join('/');
41
- const content = fs.readFileSync(file);
50
+ const content = contentOverrides?.get(file) ?? fs.readFileSync(file);
51
+ sourceManifest[relative] = { sha256: crypto.createHash('sha256').update(content).digest('hex') };
42
52
  hash.update(relative);
43
53
  hash.update('\0');
44
54
  hash.update(content);
45
55
  hash.update('\0');
46
- const dependency = /^\.\.\/\.\.\/packages\/(?:knowledge|llm|runtime|types)\//u.test(relative);
56
+ const dependency = /^\.\.\/\.\.\/packages\/(?:knowledge|llm|runtime|contracts)\//u.test(relative);
47
57
  for (const kind of ['projectFacts', 'documentGeneration']) {
48
58
  if (dependency || extractionModules.test(relative) || (kind === 'documentGeneration' && /^src\/services\//u.test(relative))) {
49
59
  semanticHashes[kind].update(relative).update('\0').update(content).update('\0');
@@ -57,6 +67,7 @@ function captureBuildIdentity(serverRoot = path.resolve(__dirname, '..')) {
57
67
  version: 1,
58
68
  sourceFingerprint: hash.digest('hex'),
59
69
  semanticFingerprints: Object.fromEntries(Object.entries(semanticHashes).map(([kind, digest]) => [kind, semanticCounts[kind] ? digest.digest('hex') : null])),
70
+ sourceManifest, sourceManifestSha256: crypto.createHash('sha256').update(JSON.stringify(sourceManifest)).digest('hex'),
60
71
  gitCommit,
61
72
  serverVersion: JSON.parse(fs.readFileSync(path.join(serverRoot, 'package.json'), 'utf8')).version,
62
73
  sourceFiles: files.size,
@@ -26,9 +26,9 @@ const path = require('path');
26
26
  const serverRoot = path.resolve(__dirname, '..');
27
27
  const defaultPackagesDir = path.resolve(serverRoot, '..', '..', 'packages');
28
28
 
29
- /** 依赖闭包(含编译期依赖 types):其中任何一个包改动,server 产物都可能过期 */
29
+ /** 依赖闭包(含编译期依赖 contracts):其中任何一个包改动,server 产物都可能过期 */
30
30
  const WORKSPACE_DEPS = [
31
- '@customize-agent/types',
31
+ '@customize-agent/contracts',
32
32
  '@customize-agent/llm',
33
33
  '@customize-agent/runtime',
34
34
  '@customize-agent/knowledge',
@@ -94,7 +94,7 @@ function displayPath(file) {
94
94
  function usage() {
95
95
  console.log(`Usage: node scripts/check-workspace-deps.cjs [packagesDir]
96
96
 
97
- Verifies that the workspace packages consumed by the server (types / llm / runtime /
97
+ Verifies that the workspace packages consumed by the server (contracts / llm / runtime /
98
98
  knowledge) have dist/ artifacts newer than their src/. Wired as \`prebuild\` so a build
99
99
  run inside apps/server cannot silently embed stale package code.
100
100
 
@@ -6,9 +6,8 @@
6
6
  * 复制三份,改一处得记得改三处),这里收成单一来源。
7
7
  *
8
8
  * ## 两种模式与理由
9
- * - `full`:整体清空 `.next`,用在 `next dev` 启动前与 `next build` 前。
10
- * 两种模式共用同一目录:dev 产物会污染生产构建(`verify-next-static` 把
11
- * `static/development`、`static/webpack` 明确判为污染),生产产物也会让 dev 状态错乱。
9
+ * - `dev`:只清开发目录 `.next-dev`。不能修改正在使用或待发布的正式产物。
10
+ * - `full`:整体清空正式构建目录 `.next`,只在 `next build` 前使用。
12
11
  * - `publish`:只清 `cache` 与 `static/{development,webpack}`,用在构建后与 `prepack`。
13
12
  * `files` 把 `.next/static` 整目录打进发布包,dev 产物若不清会被 `verify-next-static`
14
13
  * 当场拒绝;`cache` 是构建缓存,没有发布价值。
@@ -31,6 +30,9 @@ const nextDir = path.resolve(__dirname, '..', '.next');
31
30
  const REMOVE_OPTIONS = { recursive: true, force: true, maxRetries: 5, retryDelay: 200 };
32
31
 
33
32
  const MODES = {
33
+ dev: () => {
34
+ fs.rmSync(path.resolve(__dirname, '..', '.next-dev'), REMOVE_OPTIONS);
35
+ },
34
36
  full: () => {
35
37
  fs.rmSync(nextDir, REMOVE_OPTIONS);
36
38
  },
@@ -46,9 +48,10 @@ const MODES = {
46
48
  };
47
49
 
48
50
  function usage() {
49
- console.log(`Usage: node scripts/purge-next-artifacts.cjs <full|publish>
51
+ console.log(`Usage: node scripts/purge-next-artifacts.cjs <dev|full|publish>
50
52
 
51
- full Remove the whole .next directory (before \`next dev\` / \`next build\`).
53
+ dev Remove only .next-dev (before \`next dev\`).
54
+ full Remove the whole production .next directory (before \`next build\`).
52
55
  publish Remove .next/cache and .next/static/{development,webpack} (after build / before pack).`);
53
56
  }
54
57
 
@@ -168,7 +168,7 @@ function dumpEnv() {
168
168
  });
169
169
  }
170
170
 
171
- const pages = ['/', '/overview', '/knowledge', '/knowledge/files', '/knowledge/manage', '/models', '/prompt', '/settings'];
171
+ const pages = ['/', '/overview', '/knowledge', '/knowledge/files', '/knowledge/manage', '/models', '/settings'];
172
172
  const apiChecks = [
173
173
  { method: 'GET', path: '/api/health' },
174
174
  { method: 'GET', path: '/api/config/models' },
@@ -181,7 +181,6 @@ const apiChecks = [
181
181
  { method: 'GET', path: '/api/kb/files/search', query: root => `projectRoot=${encodeURIComponent(root)}&q=${encodeURIComponent(marker)}&limit=50` },
182
182
  { method: 'GET', path: '/api/kb/duplicates', query: root => `projectRoot=${encodeURIComponent(root)}` },
183
183
  { method: 'GET', path: '/api/kb/operations', query: root => `projectRoot=${encodeURIComponent(root)}` },
184
- { method: 'GET', path: '/api/prompt' },
185
184
  { method: 'GET', path: '/api/system/stats' },
186
185
  ];
187
186
 
@@ -58,7 +58,7 @@ if (!fs.existsSync(pagesManifestPath)) {
58
58
  process.exit(1);
59
59
  }
60
60
  const pagesManifest = JSON.parse(fs.readFileSync(pagesManifestPath, 'utf8'));
61
- const requiredRoutes = ['/', '/overview', '/documents', '/knowledge/files', '/prompt', '/models', '/settings'];
61
+ const requiredRoutes = ['/', '/generation', '/documents', '/knowledge/files', '/models', '/settings'];
62
62
  const missingRoutes = requiredRoutes.filter(route => !pagesManifest[route]);
63
63
  if (missingRoutes.length > 0) {
64
64
  console.error(`[server] Invalid Next pages manifest, missing routes: ${missingRoutes.join(', ')}`);
@@ -1,2 +0,0 @@
1
- "use strict";exports.id=1001,exports.ids=[1001],exports.modules={71001:(a,b,c)=>{c.d(b,{Au:()=>u,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"}}}};
@@ -1,3 +0,0 @@
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-v142",rules:["sealed-c0-and-truthful-cumulative-rework-ledger-without-percentage-delivery-veto","all-located-topology-crew-source-task-and-cycle-defects-returned-together-before-author-dispatch","node-pdf-windows-forward-resource-endings-with-source-raster-region-resolution-and-fixed-ocr-tile-pixels","frozen-global-crew-staffing-with-bounded-phase-requests","real-construction-activities-separated-from-authoring-with-globally-frozen-crew-identities-before-phase-details","upload-operation-progress-owned-by-actual-multipart-project-with-query-root-for-early-failure-scope","portable-source-bound-pdf-page-image-inspection-and-selected-full-dpi-composition-with-file-url-module-loading","precise-array-and-frozen-detail-field-feedback-with-explicit-organization-quantity-prompt","complete-located-phase-input-defects-with-rated-capacity-and-quantity-purpose-boundaries-and-task-specific-resource-view","lossless-author-plan-tables-real-initial-context-references-and-calculated-organization-reconciliation-before-writing","explicit-phase-quantity-package-routing-lossless-source-tables-and-completed-real-prefix-warmup","exact-frozen-source-search-and-first-author-syntax-feedback-before-no-progress-stop","complete-basic-project-identity-fields-without-following-administration-label-or-outer-code-wrapper","whole-workbook-bill-discovery-and-complete-unit-equivalence-with-preserved-source-occurrences","default-protected-excel-source-reading-without-encrypted-binary-text-publication","server-owned-body-subheading-numbers-with-frozen-outline-and-unchanged-toc-depth","current-native-bill-header-and-source-symbol-preservation-through-quantity-reading","source-edition-confirmation-assets-bound-to-selected-complete-source-scope","complete-parsed-source-export-without-retrieval-overlap-or-heuristic-text-deletion","explicit-blind-controller-and-source-bound-monochrome-formatting-through-deliverables","registered-field-content-nature-is-shared-by-classification-and-attribute-extraction-without-model-reclassification","retired-unwired-fact-placement-tools-and-old-chapter-task-planner-without-compatibility-adapters","explicit-source-collection-content-kind-with-complete-membership-duty-and-without-scalar-value-admission","shared-project-attribute-preparation-separated-from-complete-source-collection-and-author-content-duties","current-source-bound-literal-extraction-batches-with-independent-validation-persistence-and-shared-provider-concurrency","shared-author-system-and-canonical-plan-prefix-with-task-specific-delegation-at-tail","same-selected-model-composition-separated-from-chief-engineering-reasoning-with-user-thinking-preference-preserved","explicit-full-document-normative-collection-dependency-with-local-basis-tasks-parallel","complete-spatial-region-label-legends-and-task-local-preview-failure-isolation","single-reference-discovery-owner-and-author-task-local-chief-question-indices","shared-provider-capacity-and-evidence-progress-without-cad-text-discard","semantic-project-facts-without-global-raw-numeric-token-expansion","namespaced-original-member-references-with-server-recorded-batch-responses","current-source-model-and-protocol-bound-completed-discovery-response-reuse","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","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 +0,0 @@
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})}},33147:(a,b,c)=>{c.d(b,{z:()=>f});var d=c(8732);c(82015);var e=c(60056);function f({title:a,description:b,extra:c,bottomContent:f}){return(0,d.jsxs)("div",{className:"animateFadeIn",children:[(0,d.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,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("h1",{className:"text-3xl font-extrabold tracking-tight text-[var(--colorText)] mb-2",children:a}),b&&(0,d.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)] m-0",children:b})]}),c&&(0,d.jsx)(e.$x,{className:"w-full sm:w-auto overflow-x-auto pb-1 sm:pb-0 shrink-0",size:"middle",wrap:!1,children:c})]}),f&&(0,d.jsx)("div",{className:"mt-6",children:f})]})}},61928:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>p});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=c(33147),n=a([g]);function o({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 p(){let a=(0,g.Vr)(),{locale:b}=(0,g.x_)(),{message:c}=h.qw.useApp(),[d,n]=(0,f.useState)(null),[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)(0),[z,A]=(0,f.useState)(null),[B,C]=(0,f.useState)(null),[D,E]=(0,f.useState)(null),[F,G]=(0,f.useState)(!1),[H,I]=(0,f.useState)(null),[J,K]=(0,f.useState)(null),[L,M]=(0,f.useState)(!1),[N,O]=(0,f.useState)([]),[P,Q]=(0,f.useState)(!1),[R,S]=(0,f.useState)(null),[T,U]=(0,f.useState)([]),V=(0,f.useCallback)(async()=>{q(!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)(),[])]);U(a),c&&n(c),s(Array.isArray(d)?d.length:0),u(Array.isArray(e)?e.length:0),w(Array.isArray(f.documents)?f.documents.length:0),y(Array.isArray(h)?h.filter(a=>a.fileCount>0).length:0),A(g),C(Date.now())}catch{}finally{q(!1)}},[]),W=(0,f.useCallback)(async a=>{let b=a?.silent===!0;G(!0);let d=Date.now(),e="overview-health-recheck";b||c.loading({content:"正在体检…",key:e,duration:0});try{let a=await (0,j.nn)();E(a);let f=Date.now()-d;I(d),K(f),b||c.success({content:`体检完成,耗时 ${f} ms`,key:e})}catch{b||c.error({content:"体检失败,请稍后重试",key:e})}finally{G(!1)}},[c]),X=d?.tasks.total?Math.round(d.tasks.success/d.tasks.total*100):null,Y=d?.models?.[0],Z=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:[T.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:`${T.length} 项数据读取失败:${T.join("、")}——相关读数显示为「—」(未知),**不代表 0**;请稍后重试或查看服务端日志。`}),(0,e.jsx)(m.z,{title:a("overview.title"),description:a("overview.description"),extra:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("span",{className:"text-xs font-mono",style:{color:"var(--colorTextTertiary)"},children:[a("overview.updated"),": ",B?new Date(B).toLocaleTimeString(b):"—"]}),(0,e.jsx)(h.$n,{type:"text",icon:(0,e.jsx)(i.ReloadOutlined,{spin:p}),onClick:()=>{V()}})]})}),(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)(o,{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)(o,{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)(o,{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)(o,{title:a("overview.successRate"),value:null===X?"—":`${X}%`,subtext:null===X?a("overview.noDataAvailable"):void 0,icon:null!==X&&X>80?(0,e.jsx)(i.CheckCircleOutlined,{size:16}):(0,e.jsx)(i.CloseCircleOutlined,{size:16}),colorClass:null!==X&&X>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)(o,{title:a("overview.materialUnderstanding"),value:x>0?String(x):"—",subtext:a(x>0?"overview.materialKinds":"common.noData"),animationClass:"stagger-5"}),(0,e.jsx)(o,{title:a("overview.prompts"),value:t,animationClass:"stagger-5"}),(0,e.jsx)(o,{title:a("overview.templateCount"),value:v,animationClass:"stagger-5"}),(0,e.jsx)(o,{title:a("overview.semanticModel"),value:z?.provider==="openai-compatible"?a("overview.external"):z?a("overview.local"):"—",subtext:z?.model??a("overview.notConfigured"),animationClass:"stagger-5"}),(0,e.jsx)(o,{title:a("overview.modelProviders"),value:r,animationClass:"stagger-5"}),(0,e.jsx)(o,{title:a("overview.auditLogs"),value:d?.logs.events??0,subtext:`${a("overview.lastActivity")} ${Z}`,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")}),Y?(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:Y.model}),(0,e.jsxs)("span",{className:"font-normal text-[var(--colorTextTertiary)] text-sm shrink-0",children:["@",Y.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:D?(0,e.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:`存储根 ${D.storageRoot}|工作流版本 ${D.workflowVersion}`}),(0,e.jsx)("div",{className:"flex flex-col gap-2",children:D.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))}),D.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:`历史类型残留:${D.legacy.recordsWithLegacyTypes}/${D.legacy.totalRecords} 条记录含已删除的节点类型(共 ${D.legacy.legacyNodes} 个节点)`}),(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:D.legacy.note})]}),(0,e.jsxs)(h.$x,{children:[(0,e.jsx)(h.$n,{size:"small",disabled:D.scopes.every(a=>!a.deletable),onClick:()=>{O([]),S(null),M(!0)},children:"清理可重建数据"}),(0,e.jsx)(h.$n,{size:"small",type:"text",loading:F,onClick:()=>{W()},children:"重新体检"}),H?(0,e.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:`上次体检 ${new Date(H).toLocaleTimeString(b)}${null!=J?` \xb7 耗时 ${J} ms`:""}`}):null]}),R&&(0,e.jsx)(h.o5.Text,{type:"success",style:{fontSize:12},children:R})]}):(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:a("common.noData")})}),(0,e.jsx)(h.aF,{title:"清理可重建数据",open:L,onCancel:()=>M(!1),okText:P?"清理中…":"确认清理",okButtonProps:{disabled:0===N.length||P,danger:!0},onOk:()=>{Q(!0),(0,j.fc)(N).then(a=>{let b=a.removed.reduce((a,b)=>a+b.bytes,0);S(`已清理 ${a.removed.length} 项,释放 ${(b/1048576).toFixed(1)} MB`),E(a.report),M(!1)}).catch(a=>S(`清理失败:${a instanceof Error?a.message:String(a)}`)).finally(()=>Q(!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",{}),"生成记录、节点日志、技能库、知识库**不在清理范围**(那是你的资产)。"]}),(D?.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:N.includes(a.key),onChange:b=>O(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=(n.then?(await n)():n)[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"}}};