@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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +197 -297
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +3 -7
- package/.next/routes-manifest.json +19 -30
- package/.next/server/chunks/{8645.js → 1026.js} +1 -1
- package/.next/server/chunks/1146.js +1 -0
- package/.next/server/chunks/1547.js +385 -0
- package/.next/server/chunks/3074.js +1 -0
- package/.next/server/chunks/3750.js +2 -0
- package/.next/server/chunks/407.js +1 -0
- package/.next/server/chunks/5037.js +46 -0
- package/.next/server/chunks/5304.js +2 -2
- package/.next/server/chunks/5599.js +1 -0
- package/.next/server/chunks/5763.js +159 -0
- package/.next/server/chunks/6138.js +5 -0
- package/.next/server/chunks/6355.js +1 -0
- package/.next/server/chunks/6822.js +1 -1
- package/.next/server/chunks/702.js +3 -0
- package/.next/server/chunks/7296.js +1 -0
- package/.next/server/chunks/8176.js +1 -0
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/8459.js +11 -0
- package/.next/server/chunks/8570.js +1 -0
- package/.next/server/chunks/9270.js +1 -0
- package/.next/server/chunks/9283.js +7 -0
- package/.next/server/chunks/9301.js +2 -2
- package/.next/server/chunks/9522.js +5 -0
- package/.next/server/chunks/9559.js +1 -0
- package/.next/server/chunks/9688.js +10 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated/preview.js +2 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js +2 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/config/embedding/healthCheck.js +2 -3
- package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
- package/.next/server/pages/api/config/embedding.js +2 -3
- package/.next/server/pages/api/config/embedding.js.nft.json +1 -1
- package/.next/server/pages/api/config/healthCheck.js +2 -3
- package/.next/server/pages/api/config/healthCheck.js.nft.json +1 -1
- package/.next/server/pages/api/config/models.js +2 -3
- package/.next/server/pages/api/config/models.js.nft.json +1 -1
- package/.next/server/pages/api/config/providers/[provider].js +2 -3
- package/.next/server/pages/api/config/providers/[provider].js.nft.json +1 -1
- package/.next/server/pages/api/config/providers.js +2 -3
- package/.next/server/pages/api/config/providers.js.nft.json +1 -1
- package/.next/server/pages/api/config/reset.js +2 -3
- package/.next/server/pages/api/config/reset.js.nft.json +1 -1
- package/.next/server/pages/api/config/web-access.js +2 -3
- package/.next/server/pages/api/config/web-access.js.nft.json +1 -1
- package/.next/server/pages/api/documents/canvas/[id].js +2 -1
- package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/delivery-review.js +2 -0
- package/.next/server/pages/api/documents/delivery-review.js.nft.json +1 -0
- package/.next/server/pages/api/documents/export.js +5 -2
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate/preview.js +6 -1
- package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js +2 -1
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/events.js +4 -3
- package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/figure/[name].js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/instruction.js +4 -2
- package/.next/server/pages/api/documents/generated/[id]/instruction.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/messages.js +2 -0
- package/.next/server/pages/api/documents/generated/[id]/messages.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/nodes.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/pause.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/preview.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/repair.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/report.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/report.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/resume-generate.js +2 -1
- package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id].js +2 -1
- package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js +2 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/health.js +1 -1
- package/.next/server/pages/api/health.js.nft.json +1 -1
- package/.next/server/pages/api/jobs/[id].js +2 -2
- package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
- package/.next/server/pages/api/kb/categories.js +2 -1
- package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
- package/.next/server/pages/api/kb/duplicates.js +2 -1
- package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
- package/.next/server/pages/api/kb/features.js +2 -3
- package/.next/server/pages/api/kb/features.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/detail.js +2 -1
- package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/export.js +2 -1
- package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/open.js +2 -1
- package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/preview-pdf-page.js +2 -1
- package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/reindex.js +1 -2
- package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/search.js +2 -1
- package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/source-preview.js +2 -1
- package/.next/server/pages/api/kb/files/source-preview.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files.js +2 -2
- package/.next/server/pages/api/kb/files.js.nft.json +1 -1
- package/.next/server/pages/api/kb/ignore.js +2 -1
- package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
- package/.next/server/pages/api/kb/material-groups.js +2 -1
- package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -1
- package/.next/server/pages/api/kb/operations.js +2 -2
- package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
- package/.next/server/pages/api/kb/reindex.js +1 -2
- package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/stats.js +2 -1
- package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
- package/.next/server/pages/api/kb/tags.js +2 -1
- package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload/complete.js +1 -2
- package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload.js +1 -2
- package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
- package/.next/server/pages/api/prompt/chat.js +3 -4
- package/.next/server/pages/api/prompt/chat.js.nft.json +1 -1
- package/.next/server/pages/api/skills/[id].js +2 -1
- package/.next/server/pages/api/skills/[id].js.nft.json +1 -1
- package/.next/server/pages/api/skills/validate.js +2 -1
- package/.next/server/pages/api/skills/validate.js.nft.json +1 -1
- package/.next/server/pages/api/skills.js +2 -1
- package/.next/server/pages/api/skills.js.nft.json +1 -1
- package/.next/server/pages/api/system/data-health.js +2 -2
- package/.next/server/pages/api/system/data-health.js.nft.json +1 -1
- package/.next/server/pages/api/system/reset.js +1 -1
- package/.next/server/pages/api/system/reset.js.nft.json +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/documents.js.nft.json +1 -1
- package/.next/server/pages/generation/[id].html +1 -0
- package/.next/server/pages/generation/[id].js.nft.json +1 -0
- package/.next/server/pages/generation.html +1 -0
- package/.next/server/pages/generation.js.nft.json +1 -0
- package/.next/server/pages/index.js +1 -0
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/jobs.html +1 -1
- package/.next/server/pages/jobs.js.nft.json +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/file-detail.js.nft.json +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/files.js.nft.json +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/manage.js.nft.json +1 -1
- package/.next/server/pages/knowledge/source-preview.html +1 -1
- package/.next/server/pages/knowledge/source-preview.js.nft.json +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/knowledge.js.nft.json +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/models.js.nft.json +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/settings.js.nft.json +1 -1
- package/.next/server/pages/skills/[id]/edit.html +1 -1
- package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
- package/.next/server/pages/skills/[id].html +1 -1
- package/.next/server/pages/skills/[id].js.nft.json +1 -1
- package/.next/server/pages/skills/new.html +1 -1
- package/.next/server/pages/skills/new.js.nft.json +1 -1
- package/.next/server/pages/skills.html +1 -1
- package/.next/server/pages/skills.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +35 -40
- package/.next/static/chunks/112-9eacc7c0686813d6.js +1 -0
- package/.next/static/chunks/127-5ee1899eef559281.js +1 -0
- package/.next/static/chunks/{1210-703ad87eaeee1e4e.js → 210-71eaf9de9aa92051.js} +1 -1
- package/.next/static/chunks/325-45106bb003a2c5ce.js +4 -0
- package/.next/static/chunks/326-a3915e61888b0dbf.js +1 -0
- package/.next/static/chunks/333-7642e65bff6b8465.js +1 -0
- package/.next/static/chunks/338-19ccbaec57a7bf9c.js +4 -0
- package/.next/static/chunks/350-87b9c900a356d9b9.js +1 -0
- package/.next/static/chunks/359-f87c659236e0e0fe.js +1 -0
- package/.next/static/chunks/{8399-a001bb2a0cb1640b.js → 399-aa8a45d80e989621.js} +1 -1
- package/.next/static/chunks/430-f288e16301b9aea5.js +1 -0
- package/.next/static/chunks/465-80fbb245d43232c8.js +6 -0
- package/.next/static/chunks/499-2233cadc6d4da647.js +10 -0
- package/.next/static/chunks/551-fd86e95935b0957f.js +16 -0
- package/.next/static/chunks/576-6699fed6c88502fe.js +1 -0
- package/.next/static/chunks/61-de1dd9c104680470.js +1 -0
- package/.next/static/chunks/665-0634aa49137defc4.js +1 -0
- package/.next/static/chunks/681-e31b13114497e058.js +1 -0
- package/.next/static/chunks/687-644a12a5b584e19f.js +1 -0
- package/.next/static/chunks/702-4d9cc8d4d7775ea9.js +1 -0
- package/.next/static/chunks/748-9e5bf4181d7482f3.js +1 -0
- package/.next/static/chunks/759-280cf4040fae83af.js +25 -0
- package/.next/static/chunks/855-cbf7cd1db33198f0.js +17 -0
- package/.next/static/chunks/862-13d1c84d0938b824.js +1 -0
- package/.next/static/chunks/937-ccd3ceb1b3739535.js +1 -0
- package/.next/static/chunks/{8964-e959915ecfae86b2.js → 964-82cc4701f08f7351.js} +1 -1
- package/.next/static/chunks/992-8032f477230baaaf.js +1 -0
- package/.next/static/chunks/framework-4b565b3ddc94cdac.js +1 -0
- package/.next/static/chunks/main-0c91f573696223ca.js +1 -0
- package/.next/static/chunks/pages/_app-a70de062f1be1c59.js +140 -0
- package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +1 -0
- package/.next/static/chunks/pages/documents-2d99ae9287f9739b.js +1 -0
- package/.next/static/chunks/pages/generation/[id]-1f97e47ce545bd11.js +1 -0
- package/.next/static/chunks/pages/generation-043e325d635c96af.js +1 -0
- package/.next/static/chunks/pages/index-24d1f8f39ae0beb0.js +1 -0
- package/.next/static/chunks/pages/jobs-ff2f899a081b616e.js +1 -0
- package/.next/static/chunks/pages/knowledge/file-detail-9a9a89e4fa33c0d9.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +1 -0
- package/.next/static/chunks/pages/knowledge/{source-preview-24936b9a746ed07f.js → source-preview-f000b4d63cd65a54.js} +1 -1
- package/.next/static/chunks/pages/knowledge-8fa842d21892e2c3.js +1 -0
- package/.next/static/chunks/pages/models-6d9b301009f82395.js +1 -0
- package/.next/static/chunks/pages/settings-08893ba8afa1a486.js +1 -0
- package/.next/static/chunks/pages/skills/[id]/edit-378249e662ebf31f.js +1 -0
- package/.next/static/chunks/pages/skills/[id]-0ca4cde22e4a518b.js +1 -0
- package/.next/static/chunks/pages/skills/new-c1eb16d98fad4e02.js +1 -0
- package/.next/static/chunks/pages/skills-9fb1fa2b669ad4e3.js +1 -0
- package/.next/static/chunks/{webpack-2da1769ff35eb1ed.js → webpack-6224d37324e372cb.js} +1 -1
- package/.next/static/css/1f6d2a1bf5e15e0f.css +1 -0
- package/.next/static/css/b420c193e0e99857.css +1 -0
- package/.next/static/e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2/_buildManifest.js +1 -0
- package/README.md +14 -4
- package/messages/en-US.json +46 -100
- package/messages/zh-CN.json +44 -98
- package/next.config.ts +6 -5
- package/package.json +5 -6
- package/scripts/build-identity.cjs +16 -5
- package/scripts/check-workspace-deps.cjs +3 -3
- package/scripts/purge-next-artifacts.cjs +8 -5
- package/scripts/upload-matrix.cjs +1 -2
- package/scripts/verify-next-static.js +1 -1
- package/.next/server/chunks/1001.js +0 -2
- package/.next/server/chunks/1243.js +0 -3
- package/.next/server/chunks/1928.js +0 -1
- package/.next/server/chunks/1936.js +0 -385
- package/.next/server/chunks/2328.js +0 -6
- package/.next/server/chunks/2434.js +0 -4
- package/.next/server/chunks/3806.js +0 -1
- package/.next/server/chunks/4974.js +0 -2
- package/.next/server/chunks/5746.js +0 -5
- package/.next/server/chunks/6321.js +0 -1
- package/.next/server/chunks/7848.js +0 -145
- package/.next/server/chunks/9666.js +0 -146
- package/.next/server/instrumentation.js +0 -1
- package/.next/server/instrumentation.js.nft.json +0 -1
- package/.next/server/pages/api/prompt.js +0 -2
- package/.next/server/pages/api/prompt.js.nft.json +0 -1
- package/.next/server/pages/api/system/logs.js +0 -2
- package/.next/server/pages/api/system/logs.js.nft.json +0 -1
- package/.next/server/pages/api/system/stats.js +0 -2
- package/.next/server/pages/api/system/stats.js.nft.json +0 -1
- package/.next/server/pages/canvas/[id].html +0 -1
- package/.next/server/pages/canvas/[id].js.nft.json +0 -1
- package/.next/server/pages/canvas.html +0 -1
- package/.next/server/pages/canvas.js.nft.json +0 -1
- package/.next/server/pages/guide.html +0 -1
- package/.next/server/pages/guide.js.nft.json +0 -1
- package/.next/server/pages/index.html +0 -1
- package/.next/server/pages/overview.html +0 -1
- package/.next/server/pages/overview.js.nft.json +0 -1
- package/.next/server/pages/prompt.html +0 -1
- package/.next/server/pages/prompt.js.nft.json +0 -1
- package/.next/server/pages/system/logs.html +0 -1
- package/.next/server/pages/system/logs.js.nft.json +0 -1
- package/.next/static/0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af/_buildManifest.js +0 -1
- package/.next/static/chunks/1141-d420a7685bc3623c.js +0 -1
- package/.next/static/chunks/1499-ff8f02f6bb6f3d45.js +0 -10
- package/.next/static/chunks/1702-f5e99af7aface475.js +0 -1
- package/.next/static/chunks/2864-b040f2bffa08c139.js +0 -6
- package/.next/static/chunks/3456-70bb03a39473f693.js +0 -1
- package/.next/static/chunks/3980-73841c40d55ddfa1.js +0 -1
- package/.next/static/chunks/4052-199e61ca9e6a33e7.js +0 -1
- package/.next/static/chunks/4337-a670a1a94ab505d9.js +0 -1
- package/.next/static/chunks/4530-8b9788da40548ec6.js +0 -1
- package/.next/static/chunks/4565-3c5ff667062ccec9.js +0 -21
- package/.next/static/chunks/4665-1984a3d8b0573fa1.js +0 -1
- package/.next/static/chunks/5061-80765d4a612286e0.js +0 -1
- package/.next/static/chunks/5544-d77b8289662b4c28.js +0 -4
- package/.next/static/chunks/5760-f4191aac081b12d4.js +0 -11
- package/.next/static/chunks/6409-5a3bb0fbad4f64b1.js +0 -14
- package/.next/static/chunks/6506-ac0ba7338cc84b7d.js +0 -1
- package/.next/static/chunks/6748-07b0b05bf03c72f0.js +0 -1
- package/.next/static/chunks/7217-416b8488e0d2d498.js +0 -1
- package/.next/static/chunks/7576-ba6fc03060415b0e.js +0 -1
- package/.next/static/chunks/7646-159733564c7eb8dc.js +0 -1
- package/.next/static/chunks/7795-c11ff1a81c67c5aa.js +0 -1
- package/.next/static/chunks/8318-cb3a94de1617f983.js +0 -1
- package/.next/static/chunks/8338-b2ea00050048ba9f.js +0 -4
- package/.next/static/chunks/8564-ac3e2f1bf87765b3.js +0 -1
- package/.next/static/chunks/8569-1d5c61a3f4fa0e26.js +0 -16
- package/.next/static/chunks/8715-ee013bd7f5ba38e8.js +0 -1
- package/.next/static/chunks/8750-a3c55a576effb3a6.js +0 -1
- package/.next/static/chunks/8787-49b1f35eb4acfac9.js +0 -10
- package/.next/static/chunks/9551-f4b09bf2213ad571.js +0 -16
- package/.next/static/chunks/9605-3dee531f8a7ecbe0.js +0 -4
- package/.next/static/chunks/9937-e4b2deadd24e3962.js +0 -1
- package/.next/static/chunks/framework-9cde5013cd555765.js +0 -1
- package/.next/static/chunks/main-b313efde54fa6d2e.js +0 -1
- package/.next/static/chunks/pages/_app-51c48c5efcf5c721.js +0 -140
- package/.next/static/chunks/pages/_error-c01b6fb772028676.js +0 -1
- package/.next/static/chunks/pages/canvas/[id]-18865f1b7e3a4696.js +0 -1
- package/.next/static/chunks/pages/canvas-1d3589790493e955.js +0 -1
- package/.next/static/chunks/pages/documents-a1af5c6be26daed2.js +0 -1
- package/.next/static/chunks/pages/guide-fdf0822dc1d28813.js +0 -1
- package/.next/static/chunks/pages/index-c572e9caa60cb278.js +0 -1
- package/.next/static/chunks/pages/jobs-ebd1877dbf788a83.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-b796702bb5f8ac50.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-6d7b21cdca1255f2.js +0 -1
- package/.next/static/chunks/pages/knowledge-2a776c1740386874.js +0 -1
- package/.next/static/chunks/pages/models-8a89dd5bf0f81242.js +0 -1
- package/.next/static/chunks/pages/overview-7e8018014009682e.js +0 -1
- package/.next/static/chunks/pages/prompt-11f87694feb6514c.js +0 -1
- package/.next/static/chunks/pages/settings-e8dcaba1551a0b2b.js +0 -1
- package/.next/static/chunks/pages/skills/[id]/edit-99e616d5019e80b1.js +0 -1
- package/.next/static/chunks/pages/skills/[id]-71f696be252bbf0d.js +0 -1
- package/.next/static/chunks/pages/skills/new-00886ea4c676f927.js +0 -1
- package/.next/static/chunks/pages/skills-8ad2577b4aa17f3b.js +0 -1
- package/.next/static/chunks/pages/system/logs-0856f7c65432befb.js +0 -1
- package/.next/static/css/2da1c822e3bdb4bb.css +0 -1
- package/.next/static/css/9eb02c1a401fd278.css +0 -1
- package/scripts/half-built-scan.allow.json +0 -152
- package/scripts/half-built-scan.baseline.json +0 -190
- package/scripts/half-built-scan.mjs +0 -287
- /package/.next/static/{0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af → e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2}/_ssgManifest.js +0 -0
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=2328,exports.ids=[2328],exports.modules={22328:(a,b,c)=>{c.d(b,{I4:()=>r,Q6:()=>q,WW:()=>t,oO:()=>p,oy:()=>n,rN:()=>m,xv:()=>o});var d=c(73024),e=c(76760),f=c(70949),g=c(77416),h=c(44533),i=c(58543),j=c(68023);class k extends Error{constructor(a,b,c){super(a),this.file=b,this.cause=c,this.name="RepairStoreError"}}function l(a,b){return e.join(b,`${a}.repairs.jsonl`)}function m(a,b,c){let f=l(a,c),g={v:1,t:Date.now(),request:b};try{d.mkdirSync(e.dirname(f),{recursive:!0}),d.appendFileSync(f,`${JSON.stringify(g)}
|
|
2
|
-
`)}catch(b){throw new k(`修复请求落盘失败(节点/修复日志是唯一真相源,不得静默丢):${a}`,f,b)}}function n(a,b){let c,e=l(a,b);try{c=d.readFileSync(e,"utf8")}catch{return[]}let f=new Map;for(let a of c.split("\n"))if(a.trim())try{let b=JSON.parse(a);if(b?.v!==1||!b.request?.id)continue;f.set(b.request.id,b.request)}catch{continue}return[...f.values()].sort((a,b)=>a.id.localeCompare(b.id))}function o(a){return a.targetNodeId||a.localization?.accepted?a.transaction?(0,j.Ui)(a.transaction.recheck.before,a.transaction.recheck.after)||a.transaction.recheck.after.contractQuality?.requestedChangeVerified!==!0?"unclassified":/资料|证据|材料|知识库/u.test(a.impact?.reason||"")?"material-insufficient":(0,j.Un)(a.transaction.recheck.before,a.transaction.recheck.after)?"unclassified":"writing-capacity":a.execution&&!a.execution.available?"rerun-with-feedback"===a.execution.action?"detector-unwired":/不在本文档节点表内/u.test(a.execution.unavailableReason||"")?"unclassified":"detector-unwired":"unclassified":(a.localization?.candidates?.length??0)===0?"detector-missing":"detector-unwired"}class p extends Error{constructor(){super("该历史文档没有冻结合同和统一文档模型,不能按新体系自动补写;历史正文与报告仍可读取"),this.code="NATIVE_REPAIR_CONTRACT_REQUIRED",this.name="NativeRepairContractRequiredError"}}function q(a){let b=(0,f.getGeneratedDocument)(a.documentId,a.projectRoot);if(!b)throw Error("待修订文档不存在");if(!(0,i.Jd)(b))throw new p;return(0,i.fC)({request:a.request,documentId:a.documentId,projectRoot:a.projectRoot??b.projectRoot??(0,h.aY)()})}function r(a){let b=[];for(let c of a.matchAll(/[「『“"《【]([^」』”"》】]{2,})[」』”"》】]/gu))b.push(c[1].trim());for(let c of a.matchAll(/[0-9A-Za-z一-龥][0-9A-Za-z一-龥0-9.-]{2,}/gu))b.push(c[0].trim());return[...new Set(b.filter(a=>a.length>=4))]}function s(a){let{request:b,at:c}=a,d=b.transaction?.recheck,e={at:c,requestId:b.id,nodeId:b.targetNodeId,nodeKind:b.transaction?.nodeKind,action:b.transaction?.action,actionSource:b.transaction?.actionSource,userMessage:b.userMessage,localization:{method:b.localization?.method,candidateCount:b.localization?.candidates?.length??0,acceptedNodeId:b.localization?.accepted},changes:(b.transaction?.changes||[]).map(a=>({nodeId:a.nodeId,beforeChars:a.beforeChars,afterChars:a.afterChars})),outcome:b.outcome||"unfixable",attribution:o(b),impactClass:b.impact?.class,notExecutedReason:b.notExecutedReason};if(d){let a=(0,j.Ui)(d.before,d.after)??("fixed"!==b.outcome&&"partial"!==b.outcome||(0,j.Un)(d.before,d.after)?void 0:"回执未证明请求修改已核验且同合同复验未退步");a&&(e.notExecutedReason=[e.notExecutedReason,`历史修复结果无法按当前固定合同验证:${a};原始 outcome 仅为历史记录,观察计数不代表七维验收。`].filter(Boolean).join(" ")),e.netEffect={blocking:[d.before.blocking,d.after.blocking],entityPlacement:[d.before.entityPlacement,d.after.entityPlacement],chars:[d.before.chars,d.after.chars]}}return e}function t(a,b){return(0,g.ZS)((function(a,b){let c,e=l(a,b);try{c=d.readFileSync(e,"utf8")}catch{return[]}let f=new Map;for(let a of c.split("\n"))if(a.trim())try{let b=JSON.parse(a);if(b?.v!==1||!b.request?.id)continue;f.set(b.request.id,{at:b.t,request:b.request})}catch{continue}return[...f.values()].sort((a,b)=>a.at-b.at||a.request.id.localeCompare(b.request.id))})(a,b).map(s))}},58543:(a,b,c)=>{c.d(b,{fC:()=>J,Du:()=>I,pA:()=>L,Jd:()=>G});var d=c(73024),e=c.n(d),f=c(77598),g=c(32460),h=c(70949),i=c(7942),j=c(35091),k=c(31698),l=c(61197),m=c(94173),n=c(19444),o=c(80408),p=c(12866),q=c(22157),r=c(59948),s=c(30839),t=c(72275),u=c(34680),v=c(96241),w=c(43800),x=c(41791),y=c(62065),z=c(51326),A=c(7661),B=c(51750),C=c(48479),D=c(6361);let E=a=>(0,f.createHash)("sha256").update(JSON.stringify(a)).digest("hex"),F=a=>Object.fromEntries(Object.entries(a.tasks).map(([a,b])=>[a,b.current.output]));function G(a){return!!(a.nativeRevision||a.reviewMetadata?.contractQuality||a.draft?.reviewMetadata?.contractQuality)}function H(a,b){if(!a.runId||!a.draft||["generating","queued"].includes(a.status))throw Error("结构化修复需要已经停止写入的文档运行及完整草稿资产");let c=(0,h.Gl)(b),d=(b,d)=>{let g=e().readFileSync((0,i.HM)(c,b,a.runId));if(d&&(0,f.createHash)("sha256").update(g).digest("hex")!==d)throw Error("结构化修订资产哈希不一致");return JSON.parse(g.toString("utf8"))},g=d("author-resume-state.json");(0,j.oH)(g.contract),(0,k.oG)(b,g.projectModel);let p=g.writerContext.sharedConstructionPlan;if(!p)throw Error("当前结构化文档缺少同版共享施工计划,不能恢复来源适用性校验");(0,l.wB)(p,g.contract,g.projectModel),(0,m.tD)(g.projectModel,g.contract.sections.map(a=>(0,l.G6)(p,g.projectModel,a.id))),(0,n.R)(g.projectModel,c,a.runId),(0,n.u)(g.projectModel,c,a.runId);let q=d(a.nativeRevision?.modelFile??"document-model-final.json",a.nativeRevision?.modelSha256),A=(0,u.Zk)();(0,o.cv)(A,g.contract,g.projectModel,{restore:q}),(0,j.qK)(A,g.contract);let B=a.nativeRevision?.accountingFile??"author-accounting-final.json";(a.nativeRevision?.accountingFile||e().existsSync((0,i.HM)(c,B,a.runId)))&&(0,r.zh)(A,d(B,a.nativeRevision?.accountingSha256)),(0,s.C)({directory:c,runId:a.runId,contractId:g.contract.id,diagnostics:A});let C={};(0,z.ST)(C),(0,z.er)(A,C);let D=(0,z.c9)(A),G=D.models.active,H=G&&D.models.list.find(a=>a.name===G.name&&a.provider===G.provider),I={origin:"current-user-selection-at-repair-start",active:G,selected:H?{provider:H.provider,name:H.name,thinking:H.thinking??"follow-task"}:null,configurationFingerprint:(0,z.Q6)(C)},J=(0,v.rZ)({generatedDir:c,projectRoot:b,documentId:a.id}),K=b=>(0,o.BO)(g.contract,b,a.title,a.draft.chapters,J.renderer),L=K(q);if((a.editedMarkdown??a.markdown)!==L.markdown||a.draft.markdown!==L.markdown)throw Error("当前正文已脱离统一模型;须先重建并复验,不能通过字符串修复覆盖原结构化资产");let M=a.nativeRevision?d(a.nativeRevision.qualityFile,a.nativeRevision.qualitySha256):a.reviewMetadata?.contractQuality??a.draft.reviewMetadata?.contractQuality;if(!M||M.version!==t.Ly||M.contractId!==g.contract.id||M.projectSnapshotId!==g.projectModel.snapshotId||M.documentHash!==(0,t.Sl)(L.chapters,L.markdown)||M.authorModelHash!==(0,t.Np)(F(q))||E(M.score)!==E((0,j._n)(g.contract,M.findings)))throw Error("当前七维回执与统一模型不一致,需要完整复验");if(!g.writerContext.resumeContext)throw Error("缺少写作及机械终检的冻结上下文,不能空跑后宣称修复通过");let N=function(a){let b=new w.h(a.signal);return{global:{input:{...a,signal:b.signal},preparationWork:b,emitProgress:()=>void 0,withProgressHeartbeat:async a=>a(),...void 0!==a.nodeLogBaseDir?{nodeLogBaseDir:a.nodeLogBaseDir}:{},chapterDrafts:[],checkpointChapterOrderIds:[]},prepare:{},understanding:{},planning:{},blueprint:{},chapterLoop:{}}}({});return(0,x.k)(N,g.writerContext.resumeContext),{base:g,model:q,quality:M,diagnostics:A,render:K,rendered:L,mechanical:a=>(0,y.u)({documentContract:g.contract,generationDiagnostics:A,projectMaterialSummary:N.prepare.projectMaterialSummary,bidComposition:N.understanding.bidComposition,hazardBindings:N.understanding.hazardResolution?.bindings},K(a),a),figures:J,directory:c,modelSelection:I}}function I(a,b,c){return Object.entries(H(a,b).model.tasks).flatMap(([a,b])=>{let d=c.filter(a=>b.current.markdown.includes(a));if(!d.length)return[];let e=b.current.markdown.indexOf(d[0]);return[{nodeId:a,score:d.reduce((a,b)=>a+b.length,0),excerpt:b.current.markdown.slice(Math.max(0,e-20),e+d[0].length+20)}]}).sort((a,b)=>b.score-a.score||a.nodeId.localeCompare(b.nodeId)).slice(0,5)}function J(a){let b,c,d=(0,h.CX)(a.documentId,a.projectRoot);if(!d)throw Error("待修复文档不存在");let e=H(d,a.projectRoot),j=E(d),k=`repair-${(0,f.randomUUID)()}`;(0,g.yY)(e.diagnostics,{generatedDir:e.directory,runId:k,contract:e.base.contract}),(0,i.tv)(e.directory,"repair-inputs.json",{repairRunId:k,originRunId:d.runId,documentId:d.id,request:a.request,modelSelection:e.modelSelection,originalRecordHash:j,contractId:e.base.contract.id,projectSnapshotId:e.base.projectModel.snapshotId,firstCandidateHashes:e.model.c0TaskHashes},k);let l=function(a,b,c){if(a.base.contract.sections.some(a=>a.id===c))return[c];let d=a.base.contract.chapters.find(a=>a.id===c||(0,C.Ts)(a.id)===c);if(d)return d.sectionIds;let e=(0,B.g0)(b.id,a.directory).find(a=>a.id===c),f=e?.metrics?.taskId;if("string"==typeof f&&a.base.contract.sections.some(a=>a.id===f))return[f];throw Error("目标节点没有固定作者任务身份,不能猜测修改范围")}(e,d,a.request.targetNodeId),m=(a,b,c)=>({blocking:e.mechanical(a).filter(a=>"error"===a.level||"blocker"===a.severity).length+b.score.blocking.length+(0,t.ie)(b).length,entityPlacement:Object.values(a.tasks).reduce((a,b)=>a+b.current.output.factBindings.length,0),chars:e.render(a).markdown.length,contractQuality:{contractId:b.contractId,unresolvedCount:b.findings.filter(a=>"met"!==a.status).length,requestedChangeVerified:c,findings:b.findings.map(({criterionId:a,status:b})=>({criterionId:a,status:b}))},judges:{mode:"full",executed:b.findings.filter(a=>"unmeasured"!==a.status).map(a=>a.criterionId),degraded:b.findings.filter(a=>"unmeasured"===a.status).map(a=>a.criterionId),missing:[],unavailableInputs:[]}});return{request:a.request,execution:{nodeKind:"writing-block",action:a.request.patch?"targeted-patch":"rerun-with-feedback",actionSource:a.request.patch?"explicit-patch":"default",available:!0,reason:"通过固定任务的统一模型执行,在全文累计轻修预算内复验后提交"},snapshot:async()=>{let a=E({model:e.model,quality:e.quality});return(0,i.tv)(e.directory,`native-snapshot-${a}.json`,{model:e.model,quality:e.quality},d.runId),`native:${a}`},apply:async()=>(0,s.e)({directory:e.directory,runId:d.runId,contractId:e.base.contract.id,diagnostics:e.diagnostics},async()=>{let c=a.request.patch;if(c){if(c.append||c.endText)throw Error("结构化定点修改须使用单一单元的逐字锚点;跨单元区间或追加须由作者提交完整结构化任务");let d=l.flatMap(a=>e.model.tasks[a]?.current.output.units.flatMap(b=>"paragraph"===b.kind&&b.text.includes(c.anchor)?[{taskId:a,unitId:b.id}]:"table"===b.kind?b.rows.flatMap(d=>b.columns.filter(a=>d.cells[a.key].includes(c.anchor)).map(c=>({taskId:a,unitId:b.id,rowId:d.id,columnKey:c.key}))):[])??[]);if(1!==d.length)throw Error("锚点必须唯一定位一个实际段落或表格字段,不能修改多个对象");let f=d[0];b=function(a){let{change:b}=a,c=a.model.tasks[b.taskId];if(!c||c.current.contentHash!==b.expectedContentHash)throw Error("待修改的任务不存在或内容已变更,原定位不能继续执行");if(!b.anchor.trim()||!b.reason.trim())throw Error("结构化修改须有逐字锚点和明确原因");let d=structuredClone(c.current.output),e=d.units.find(a=>a.id===b.unitId);if(!e)throw Error("目标单元不属于已定位的作者任务");let f=a=>{let c=a.indexOf(b.anchor);if(c<0||a.indexOf(b.anchor,c+b.anchor.length)>=0)throw Error("逐字锚点不存在或不唯一,不能模糊匹配修改");return a.slice(0,c)+b.replacement+a.slice(c+b.anchor.length)};if("paragraph"===e.kind){if(void 0!==b.rowId||void 0!==b.columnKey)throw Error("段落修改不能携带表格记录定位");e.text=f(e.text)}else if("table"===e.kind){let a=e.rows.find(a=>a.id===b.rowId);if(!a||!b.columnKey||!e.columns.some(a=>a.key===b.columnKey))throw Error("表格修改须明确定位真实记录与字段");a.cells[b.columnKey]=f(a.cells[b.columnKey])}else throw Error("流程图修改须提交完整节点与边的结构化事务,不能把图件字符串替换当成关系修改");let g=(0,u.Zk)();(0,o.cv)(g,a.contract,a.project,{restore:a.model});let h=(0,o.wI)(g,b.taskId,d,b.reason),i=a.contract.sections.find(a=>a.id===b.taskId).chapterId,j=a.contract.criteria.filter(a=>a.applicable&&(!a.chapterId||a.chapterId===i)).map(a=>a.id);return{...h,affectedCriterionIds:j}}({contract:e.base.contract,project:e.base.projectModel,model:e.model,change:{...f,expectedContentHash:e.model.tasks[f.taskId].current.contentHash,anchor:c.anchor,replacement:c.replacement,reason:a.request.userMessage}}).model}else{if(1!==l.length)throw Error("自然语言轻修须先定位一个固定作者任务;不能以整章重写替代局部修正");let c=e.base.contract.sections.find(a=>a.id===l[0]),f=e.model.tasks[c.id]?.current;if(!f)throw Error("本任务没有完整首候选,须继续生成,不能作为轻修处理");try{await (0,D.X4)({chapterId:c.chapterId,blockTitle:c.title,contractScoped:!0,maxAuthorSubmissions:1,maxTokens:Math.max(6e3,Math.ceil(1.8*f.markdown.length)),diagnostics:e.diagnostics,system:`你是专业文档作者智能体。按用户已定位的局部问题轻修,不改变其他信息单元、事实来源和方案决定。
|
|
3
|
-
${e.base.writerContext.promptTexts}`,prompt:`用户原话:${a.request.userMessage}
|
|
4
|
-
当前固定任务:${JSON.stringify(c)}
|
|
5
|
-
当前完整结构化产物:${JSON.stringify(f.output)}
|
|
6
|
-
完整返回同一任务;revisionReason说明改动。不能增删单元或改变事实、数值来源、未决事项。`,toolContext:(0,D.Vw)({projectRoot:a.projectRoot,projectModel:e.base.projectModel,contractScoped:!0,scopeRootNames:d.materialRoot?[d.materialRoot]:[]}),beforeAuthorSubmit:async a=>{let b=(0,p.validateAuthorTaskOutput)(a,{contract:e.base.contract,projectModel:e.base.projectModel,taskId:c.id},{deferSourceParaphrases:!0}).output;if(E(b.units.map(a=>[a.id,a.kind,a.criterionIds]))!==E(f.output.units.map(a=>[a.id,a.kind,a.criterionIds]))||E(b.factBindings)!==E(f.output.factBindings)||E(b.numericBindings??[])!==E(f.output.numericBindings??[])||E(b.decisionRequests)!==E(f.output.decisionRequests))throw Error("局部修复不能改变固定单元、职责、来源或方案决定")}})}finally{(0,g.MZ)(e.diagnostics),(0,i.tv)(e.directory,"repair-author-diagnostics.json",{diagnostics:e.diagnostics},k)}b=(0,o.l0)(e.diagnostics)}if(E(b)===E(e.model))throw Error("作者未提交实际变更,不能记为修复完成");return l.map(a=>({nodeId:a,beforeChars:e.model.tasks[a]?.current.markdown.length??0,afterChars:b.tasks[a]?.current.markdown.length??0,note:"统一模型候选尚未落盘;原C0及累计返工账保留"}))}),recheckAll:async()=>(0,s.e)({directory:e.directory,runId:d.runId,contractId:e.base.contract.id,diagnostics:e.diagnostics},async()=>{if(!b)return m(e.model,e.quality,!1);let a=new Set(e.mechanical(e.model).map(a=>E([a.provenance?.detectorId,a.message])));if(e.mechanical(b).some(b=>("error"===b.level||"blocker"===b.severity)&&!a.has(E([b.provenance?.detectorId,b.message]))))throw Error("候选引入新的结构、数据或明确禁令问题");let d=new Set(l.map(a=>e.base.contract.sections.find(b=>b.id===a).chapterId)),g=e.base.contract.criteria.filter(a=>a.applicable&&(!a.chapterId||d.has(a.chapterId))).map(a=>a.id);return c=await (0,t.u3)({contract:e.base.contract,projectModel:e.base.projectModel,...e.render(b),authorTasks:F(b),figureUrlFor:e.figures.renderer,diagnostics:e.diagnostics,previousReceipt:e.quality,affectedCriterionIds:g,onReviewAttempt:a=>(0,i.tv)(e.directory,`review-response-${(0,f.randomUUID)()}.json`,a,k)}),m(b,c,!0)}),commit:async()=>{if(!b||!c)throw Error("没有已复验的统一模型候选");if(E((0,h.CX)(d.id,a.projectRoot))!==j)throw Error("复验期间文档状态已经变更,旧候选不能覆盖并发修订");let f=E({requestId:a.request.id,model:b,quality:c}),g=`native-model-${f}.json`,k=`native-quality-${f}.json`;(0,i.tv)(e.directory,`native-commit-${E(a.request.id)}.json`,{requestId:a.request.id,revisionId:f,modelFile:g,qualityFile:k,beforeModelHash:E(e.model),afterTaskHashes:Object.fromEntries(l.map(a=>[a,b.tasks[a].current.contentHash]))},d.runId),K(e,d,b,c,a.projectRoot,f)},rollback:async()=>{throw Error("已提交的结构化修复撤销须作为新语义事务累计计账,不能恢复旧账抵消返工")},analyzeImpact:async()=>({class:"propagating",affectedNodeIds:l,reason:"复验完整变更章及全文共同约束;其他章结论只在内容与来源指纹一致时复用"})}}function K(a,b,c,d,f,g){let j=`native-model-${g}.json`,k=`native-quality-${g}.json`,l=(0,i.tv)(a.directory,j,c,b.runId),m=(0,i.tv)(a.directory,k,d,b.runId),n=`native-accounting-${g}.json`,o=(0,i.tv)(a.directory,n,(0,r.pE)(a.diagnostics),b.runId),p=a.render(c),s=a.mechanical(c),u=d.score.blocking.map(b=>({level:"error",severity:"blocker",category:"structure",message:`合同评价未满足或未判定:${a.base.contract.criteria.find(a=>a.id===b).description}`,provenance:{detectorId:"document-contract-quality",fingerprint:E(b)}})),v=new Set(a.mechanical(a.model).map(a=>E([a.provenance?.detectorId,a.message]))),w=b.draft.validationIssues.filter(a=>!["document-contract-quality","document-contract-professional-quality"].includes(a.provenance?.detectorId??"")&&!v.has(E([a.provenance?.detectorId,a.message]))),x=[...s,...u,...(0,t.vD)(a.base.contract,d),...(0,t.ie)(d),...w],y=x.filter(a=>"error"===a.level||"blocker"===a.severity),z=a.base.contract.sections.every(a=>c.tasks[a.id]&&!c.tasks[a.id].current.pendingCriterionIds.length),B=0===y.length&&(0,t.R3)(d)&&z&&"paused"!==b.status,C=JSON.parse(e().readFileSync((0,i.HM)(a.directory,"contract-quality-c0.json",b.runId),"utf8")),D={...b.draft.reviewMetadata,contractQuality:d,contractQualityStale:void 0,writingMetrics:(0,A.s)(a.base.contract,c,C,a.diagnostics)};(0,h.Yf)({...b,...p,editedMarkdown:void 0,nativeRevision:{modelFile:j,modelSha256:l.sha256,qualityFile:k,qualitySha256:m.sha256,revisionId:g,accountingFile:n,accountingSha256:o.sha256},wordCount:p.markdown.length,status:B?"completed":"paused"===b.status?"paused":"completed_with_issues",reviewMetadata:D,draft:{...b.draft,...p,reviewMetadata:D,validationIssues:x,validation:{passed:B,errors:y.map(a=>a.message),warnings:x.filter(a=>"warning"===a.level).map(a=>a.message)},exportGate:{...b.draft.exportGate,passed:B,blockingIssues:y,textFingerprint:(0,q.c6)(p.markdown),deliveryFingerprint:(0,q.c6)(p.markdown),checklist:b.draft.exportGate.checklist.map(a=>({...a,..."document-contract-quality"===a.key?{passed:d.score.deliveryReady}:"document-model-conservation"===a.key?{passed:!s.some(a=>"error"===a.level||"blocker"===a.severity)}:"generation-complete"===a.key?{passed:z&&"paused"!==b.status}:{}}))}}},f)}async function L(a,b,c){let d=(0,h.CX)(a.id,c);if(!d||d.runId!==a.runId||d.updatedAt!==a.updatedAt||E(d.nativeRevision??null)!==E(a.nativeRevision??null))throw Error("撤销输入已与当前持久记录身份不同,须重新读取文档");if(!/^native:[a-f0-9]{64}$/u.test(b.transaction?.snapshotHash??"")||!d.runId)throw Error("没有可核验的结构化修复快照");let f=H(d,c),g=E(d),j=JSON.parse(e().readFileSync((0,i.HM)(f.directory,`native-snapshot-${b.transaction.snapshotHash.slice(7)}.json`,d.runId),"utf8"));if(`native:${E(j)}`!==b.transaction.snapshotHash)throw Error("结构化修复快照哈希不一致");let k=JSON.parse(e().readFileSync((0,i.HM)(f.directory,`native-commit-${E(b.id)}.json`,d.runId),"utf8"));if(k.requestId!==b.id||k.beforeModelHash!==E(j.model))throw Error("撤销凭据不属于本次结构化修复");let l=new Set;for(let[a,c]of Object.entries(k.afterTaskHashes)){if(f.model.tasks[a]?.current.contentHash!==c)throw Error("该任务已有后续修订,旧修复不能覆盖新的内容;须重新定位");let d=j.model.tasks[a]?.current;if(!d)throw Error("快照缺少修复前的实际作者任务");(0,o.Y1)(f.diagnostics,a,d.output,`用户主动撤销修复${b.id},已发生的修改仍累计计账`),l.add(f.base.contract.sections.find(b=>b.id===a).chapterId)}let m=(0,o.l0)(f.diagnostics),n=await (0,s.e)({directory:f.directory,runId:d.runId,contractId:f.base.contract.id,diagnostics:f.diagnostics},()=>(0,t.u3)({contract:f.base.contract,projectModel:f.base.projectModel,...f.render(m),authorTasks:F(m),figureUrlFor:f.figures.renderer,diagnostics:f.diagnostics,previousReceipt:f.quality,affectedCriterionIds:f.base.contract.criteria.filter(a=>a.applicable&&(!a.chapterId||l.has(a.chapterId))).map(a=>a.id)}));if(E((0,h.CX)(d.id,c))!==g)throw Error("撤销复验期间文档状态已经改变,候选未提交");let p=E({undo:b.id,model:m,quality:n});return K(f,d,m,n,c,p),{beforeChars:f.rendered.markdown.length,afterChars:f.render(m).markdown.length}}}};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=2434,exports.ids=[2434],exports.modules={15762:(a,b,c)=>{c.d(b,{BI:()=>h,X5:()=>g,d3:()=>i});let d={role_binding:"项目角色配置绑定",knowledge_retrieval:"知识库证据检索",file_understanding:"项目资料理解",fact_extraction:"事实抽取",chapter_generation:"章节正文生成",llm_review:"独立复核",validation:"规则与准入校验",reference:"资料增强"},e={"knowledge-base":"知识库","document-readiness":"生成准备度检查","llm-json":"LLM 事实抽取"};function f(a){return a?e[a]:void 0}function g(a,b={}){let c={executionVersion:2,group:a.type,...a,...b},e=c.roleName||f(c.roleId),h=c.subtitle||e||f(c.roleId);return{...c,roleName:e,subtitle:h,title:function(a){var b;let c=d[b=a.type]??b,e=a.subtitle||a.roleName||f(a.roleId),g=e&&!c.includes(e)?`${c} \xb7 ${e}`:c,h="string"==typeof a.title&&a.title.length>0?a.title:void 0;return h&&h!==c?h:g}({...c,roleName:e,subtitle:h})}}let h="stage-details";function i(a){return a.source===h}},22157:(a,b,c)=>{c.d(b,{H1:()=>e,Kd:()=>k,Om:()=>h,TP:()=>j,Te:()=>i,c6:()=>f,lG:()=>g,lX:()=>l});var d=c(77598);function e(a){let b=new Set,c=[];for(let d of a){if(!b.has(d.id)){b.add(d.id),c.push(d);continue}let a=2,e=`${d.id}-dup${a}`;for(;b.has(e);)a+=1,e=`${d.id}-dup${a}`;b.add(e),c.push({...d,id:e})}return c}function f(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function g(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}}function h(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e+=1)d+=a[e]*b[e];return d}function i(a){if(a?.aborted)throw Error("用户中止")}function j(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let k=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标","异常低价","评标基准价"];function l(a){return a.filter(a=>{var b;return b=`${a.key||""} ${String(a.value)}`,!(k.some(a=>b.includes(a))||b.includes("廉洁从业")||/纪律|廉洁/u.test(b)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(b))})}},32434:(a,b,c)=>{c.d(b,{IA:()=>w,Qu:()=>u,SU:()=>v,UL:()=>n,ZR:()=>q});var d=c(76760),e=c(19898),f=c(44533),g=c(62576),h=c(15762),i=c(22157);function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function m(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}function n(a){let b=(0,f.Yy)(a),c=b.filter(l);return{groups:[...m(b).entries()].filter(([,a])=>a.some(a=>j(a.relativePath).includes("/"))).map(([a,b])=>{let c=o(b);return{root:a,fileCount:b.length,projectNos:c,mixedProjectNos:c.length>=2}}).sort((a,b)=>b.fileCount-a.fileCount||a.root.localeCompare(b.root,"zh-CN")),totalFiles:b.length,usableFiles:c.length}}function o(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function p(a,b,c="chosen"){let d=m(a),f=d.has(b)?b:[...d.keys()].find(a=>j(a)===j(b)),g=f?d.get(f):[],h=[...d.keys()].filter(a=>a!==f);if(!f||0===g.length)return{selectedRoots:[],selectedMaterialRoots:[],selectedFiles:[],totalAvailableFiles:a.length,ambiguous:!1,locked:!1,reason:`选定的项目资料「${b}」在本项目知识库里没有文件:请在知识库页确认资料目录存在,或重新选择。`,rejectedRoots:h,scopeHash:(0,i.c6)({chosenRoot:b,empty:!0})};let k=o(g);if(k.length>=2)return{selectedRoots:[],selectedMaterialRoots:[],selectedFiles:[],totalAvailableFiles:a.length,ambiguous:!0,locked:!1,reason:`项目资料「${f}」内检测到 ${k.length} 个不同项目编号(${k.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染;请把资料拆到各自的资料组后再生成`,rejectedRoots:h,scopeHash:(0,i.c6)({ambiguous:!0,mixedProjectNos:k})};let l=g.map(a=>a.relativePath);return{selectedRoots:[f],selectedMaterialRoots:function(a,b){let c=new Set((0,e.materialRootsOfFiles)(b));return(0,e.materialRootsOfScopeRoots)(a).filter(a=>c.has(a))}([f],l),selectedFiles:l,totalAvailableFiles:a.length,ambiguous:!1,locked:!0,reason:"sole-candidate"===c?`本次使用库里唯一的项目资料「${f}」(${l.length} 份文件)`:`本次使用选定的项目资料「${f}」(${l.length} 份文件)`,rejectedRoots:h,scopeHash:(0,i.c6)({selectedRoots:[f],selectedFiles:l})}}function q(a,b,c="",d={}){let e=(0,f.Yy)(a),g=String(d.materialRoot||"").trim();if(g)return p(e,g);let h=[...m(e).entries()].filter(([,a])=>a.some(a=>j(a.relativePath).includes("/"))).map(([a])=>a);if(1===h.length)return p(e,h[0],"sole-candidate");let k=[...m(e).keys()];return{selectedRoots:[],selectedMaterialRoots:[],selectedFiles:[],totalAvailableFiles:e.length,ambiguous:!0,locked:!1,reason:h.length>1?`未选择项目资料:本项目知识库里有 ${h.length} 个资料组(${h.slice(0,6).join("、")}${h.length>6?" 等":""}),请在生成入口选定本次要用哪一组。`:e.length>0?`知识库里只有 ${e.length} 份根目录散文件,没有项目资料组:请把资料放进以项目命名的目录(一个目录 = 一份项目资料)后再生成。`:"本项目知识库里没有可用资料:请先在知识库上传资料并完成索引。",rejectedRoots:k,scopeHash:(0,i.c6)({ambiguous:!0,reason:"material-root-required",rejectedRoots:k})}}function r(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,i.lG)(a.value)}`))}function s(a){return(0,i.lG)(a.value).replace(/\s+/gu," ").trim()}let t=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function u(a){let b=a.materialScope||q(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=function(a,b){let c=new Map((0,f.Yy)(a).map(a=>[a.relativePath,a])),e=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,i.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:e,totalFiles:e.length,totalChunks:e.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(e.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,i.c6)(e.map(a=>({path:a.path,hash:a.hash})))}}(a.projectRoot,b),e=function(a){let b=a.facts.filter(a=>!t.has(a.key)&&s(a)),c=r(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=r(b,/工期|日历天|进度|开工|竣工/u),e=r(b,/质量|验收|合格|标准|规范/u),f=r(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=r(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${s(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>s(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:s(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:s(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:s(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:s(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:r(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:s(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:r(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:s(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),g=Date.now();return{runId:`run-${g}-${(0,i.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:"project-graph-runtime",type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`当前来源事实摘要:${e.works.length}工程 ${e.resources.length}资源 ${e.schedule.length}工期 ${e.standards.length}标准`,metrics:{facts:a.facts.length,source:"current-source-facts"}}],facts:a.facts,baseProjectGraph:e,issues:[],createdAt:g}}function v(a){let b=[(0,h.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,h.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return b.push((0,h.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`当前来源事实摘要已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["使用本轮锁定资料的裁决事实进行预备分析;施工选型与来源适用性由主智能体及独立复核核定",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),b}function w(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{g.Rg.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,g.bx)(a),...(0,g.uv)(a),...(0,g.nP)(a)].slice(0,20)}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(22157),e=c(76228);async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??e.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,e.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async e=>{if(0===e.length)return[];let f=e.map(()=>!1),j=e.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>e[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,e)=>{let h=l[e];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>(0,d.Om)(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>(0,d.Om)(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},43378:(a,b,c)=>{function d(a){return a.replace(/\s+/gu,"").toLowerCase()}function e(a){return[...new Set(a)]}function f(a){if("forbidden"===a.bodyTablePolicy)return{chapters:a.chapters,unattachedRequiredTables:[]};let b=new Map,c=(a,c)=>{let f=c.title.trim();if(!f)return;let g=b.get(a)||[],h=e(c.fields.map(a=>a.trim()).filter(Boolean)),i=g.find(a=>d(a.title)===d(f));if(i){i.fields=e([...i.fields.map(a=>a.name),...h]).map(a=>({name:a})),i.required||=c.required,i.reason=e([i.reason,c.reason].filter(Boolean)).join(";");return}g.push({id:`planned-table-${a}-${g.length+1}`,title:f,chapterTitle:"",section:c.section||"",required:c.required,reason:c.reason,fields:h.map(a=>({name:a}))}),b.set(a,g)};for(let b of a.chapters)for(let d of a.plannedTables.get(b.id)||[])c(b.id,{title:d.title,fields:d.fields,required:!1,reason:"本章小节规划产出的表格需求(按章按节规划)。"});let f=[];for(let b of a.requiredTables||[]){let e,g=b.trim();if(!g)continue;let h=0;for(let b of a.chapters){let a=function(a,b){let c=d(a).replace(/表$/u,"");if(!c)return 0;let e=0;for(let a of[b.title,...b.sections||[]]){let b=d(a);if(b){if(b.includes(c)||c.includes(b)){e=Math.max(e,1);continue}e=Math.max(e,function(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},e=c(d(b)),f=[...c(d(a))];return 0===f.length?0:f.filter(a=>e.has(a)).length/f.length}(c,b))}}return e}(g,b);a>h&&(h=a,e=b)}if(!e||h<.3){f.push(g);continue}c(e.id,{title:g,fields:[],required:!0,reason:"用户提示词声明的必需表格。"})}return{chapters:a.chapters.map(a=>{let c=b.get(a.id);return c?.length?{...a,tableSections:e([...a.tableSections||[],...c.map(a=>a.title)]),tableRequirements:e([...a.tableRequirements||[],...c.filter(a=>a.required).map(a=>`${a.title}:用户提示词声明的必需表格,必须真实输出为 markdown 表格,表头与行数据必须与本章内容一致。`)]),tablePlans:c.map(b=>({...b,chapterTitle:a.title}))}:a}),unattachedRequiredTables:f}}c.d(b,{K9:()=>i,c$:()=>j,cR:()=>l,lR:()=>f}),RegExp(`^.{2,36}?表`,"u");let g="[\\d一二三四五六七八九十]+";RegExp(`^表\\s*${g}(?:[--..—]\\s*${g})?\\s*[::、..]?\\s`,"u");let h=[{pattern:/横道图|甘特图/u,instruction:"以表格式时间轴呈现(阶段与节点、起止时间、与工期目标的关系);表中时间节点必须与总工期及开工竣工日期一致"},{pattern:/网络图|关键线路/u,instruction:"以文字框图呈现(工作节点、先后衔接关系、关键线路标注),节点划分必须与本工程施工组织一致"},{pattern:/组织机构图|组织框图|机构框图|机构图/u,instruction:"以文字框图呈现组织机构层级(部门或岗位、隶属关系)"},{pattern:/平面布置图|布置图/u,instruction:"以分区布置的文字框图或布置要点表呈现(分区、布置内容、管控要求)"},{pattern:/流程图|工艺流程图/u,instruction:"以文字框图呈现流程步骤与衔接关系"}];function i(a){let b=[],c=new Set;for(let d of a){let a=`${d.text}
|
|
2
|
-
${d.coreTerms.join(" ")}`;for(let e of h){let f=e.pattern.exec(a);!f||c.has(f[0])||(c.add(f[0]),b.push({name:f[0],instruction:e.instruction,source:d.text}))}}return b}function j(a,b,c,d=.45){if(0===b.length||0===a.length)return{chapters:a,unattached:[]};let f=new Map,g=[];for(let e of b){let b=-1,h=0;if(a.forEach((a,d)=>{let f=c(e.source,a.title);f>h&&(h=f,b=d)}),b<0||h<d){g.push(e);continue}let i=f.get(b)||[];i.push(`「${e.name}」${e.instruction}(招标要求原文:「${e.source.length>80?`${e.source.slice(0,80)}…`:e.source}」)`),f.set(b,i)}return{chapters:a.map((a,b)=>{let c=f.get(b);return c?.length?{...a,diagramRequirements:e([...a.diagramRequirements||[],...c])}:a}),unattached:g}}function k(a){return d(a).replace(/[((][^))]*[))]/gu,"").replace(/[图表]+$/u,"")}function l(a,b){let c=[...a];for(let a of b){if("diagram"!==a.form&&"org_chart"!==a.form)continue;let b=(a.element||"").trim();b&&(c.some(a=>(function(a,b){let c=k(a),d=k(b);return!(c.length<2)&&!(d.length<2)&&(c.includes(d)||d.includes(c))})(a.name,b))||c.push({name:b,instruction:"org_chart"===a.form?"以文字框图呈现组织机构层级(部门或岗位、隶属关系)":"以文字框图或表格式时间轴呈现(内容要点完整)",source:a.sourceText}))}return c}},62576:(a,b,c)=>{c.d(b,{Rg:()=>d,kt:()=>f,CK:()=>n,nP:()=>m,uv:()=>l,bx:()=>i}),c(22157),c(73806),c(81024),c(41991),c(43378);let d=/知识库|系统暂未|项目资料暂未|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|COL\d+|可核验信息|以本项目招标文件明确内容为准/u,e=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;RegExp(String.raw`\S.+(?:\s|[。;;])${e}\S.+(?:\s|[。;;])${e}\S`,"u"),RegExp(`\r?
|
|
3
|
-
`,"u"),RegExp(`
|
|
4
|
-
{3,}`,"gu");let f=/(?<=^|[。;;\n])(?:本方案|本施工组织设计|本工程|本项目|项目部|我方|我公司|投标人)?(?:根据|依据|结合|按照)?(?:本项目|项目)?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单)(?:[、,,及和与\s]*(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单|现行规范|规范)){1,}(?:[^。;;\n]{0,40})?[,,]/gmu,g=RegExp(f.source,"mu"),h=/编制依据|编制说明|法律法规|规范标准|标准依据/u;function i(a){let b=[],c=!1;return a.split(/\r?\n/u).forEach((a,d)=>{let e=a.trim();if(/^#{2,4}\s+/u.test(e)){c=h.test(e.replace(/^#{2,4}\s+/u,""));return}!/^\s*\|/u.test(e)&&(g.test(a)&&!c&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现资料来源罗列话术:第 ${d+1} 行`,suggestion:"删除“根据/依据招标文件、清单、图纸”等来源罗列,直接保留项目事实、施工内容和控制措施;编制依据类小节可集中罗列依据文件。"}),/^\s*\*\*[^*]{2,40}表\*\*\s*$/u.test(a)&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",message:`正式正文不得用粗体段落充当表名:第 ${d+1} 行`,suggestion:"表名必须转换为 #### 四级标题,避免导出后混入正文段落。"}))}),b.slice(0,20)}let j=/(?:安全|管理|施工|质量|工期|进度|保障|体系|措施|控制|工程|项目|技术|方案|计划|组织|标准|规范|验收|方法|工艺|文明|绿色)/u,k=/(?:工程施工方案|安装工程施工方案|专业工程施工方案|专项施工方案)$/u;function l(a){let b=a.split(/\r?\n/u),c=[],{chapterOfLine:d,titleSets:e}=function(a){let b=[],c=[new Set],d=0;return a.forEach((a,e)=>{let f=a.trim();/^##\s+/u.test(f)&&(d+=1,c.push(new Set)),b[e]=d;let g=/^###\s+(.+)$/u.exec(f);g&&c[d].add(g[1].trim().replace(/^\d+(?:\.\d+)*\s*/u,""))}),{chapterOfLine:b,titleSets:c}}(b);return b.forEach((a,b)=>{let f=/^####\s+(.+)$/u.exec(a.trim());if(!f)return;let g=f[1].trim(),h=g.replace(/^\d+(?:\.\d+)*\s*/u,"").trim();if(!h)return;let i=e[d[b]]||new Set;if(i.has(h)||i.has(g))return void c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题与本章三级小节同名:${g}(第 ${b+1} 行)`,suggestion:`删除该 H4 块或改为三级小节「${h}」下的独立子主题标题,禁止与三级小节同名造成结构重复。`});let l=h.slice(-2);if(h.length>2&&!j.test(l)&&h.slice(0,-2).includes(l)){let a=new Map;for(let b=0;b<h.length-1;b+=1){let c=h.slice(b,b+2);j.test(c)||a.set(c,(a.get(c)||0)+1)}let d=[...a.entries()].filter(([,a])=>a>=2).map(([a])=>a);c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题疑似词尾粘连或多主题拼接:${g}(重复词:${d.join("、")},第 ${b+1} 行)`,suggestion:"重写为单一主题的短标题,去掉粘连重复的尾部词语。"});return}h.length>16&&!k.test(h)&&c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题过长疑似多主题拼接:${g}(${h.length} 字,第 ${b+1} 行)`,suggestion:"拆分为多个独立 H4 或压缩为单一主题短标题。"})}),c.slice(0,20)}function m(a){let b=a.split(/\r?\n/u),c=[],d=[],e=null,f=null,g=a=>{if(f)for(let b of a.replace(/^#{1,6}\s+/u,"").replace(/^\|.*\|$/u,"").trim().split(/[。;;]/u)){let a=b.trim();a.length>=24&&f.sentences.push(a.replace(/[\s\p{P}]+/gu,"").toLowerCase())}};for(let a of b){let b=/^##\s+(.+)$/u.exec(a.trim());if(b){e&&d.push(e),e={title:b[1].trim(),sections:[]},f=null;continue}let c=/^###\s+(.+)$/u.exec(a.trim());if(c&&e){f={title:c[1].trim(),sentences:[]},e.sections.push(f);continue}/^####\s+/u.test(a.trim())||g(a)}for(let a of(e&&d.push(e),d))for(let b=0;b<a.sections.length;b+=1)for(let d=b+1;d<a.sections.length;d+=1){let e=new Set(a.sections[b].sentences),f=new Set(a.sections[d].sentences);if(0===e.size||0===f.size)continue;let g=0;for(let a of e)f.has(a)&&(g+=1);let h=g/Math.min(e.size,f.size);h>=.3&&g>=3&&c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`${a.title} 内「${a.sections[b].title}」与「${a.sections[d].title}」正文重复(${g} 句重合,占 ${Math.round(100*h)}%)`,suggestion:"两个小节正文出现大量重复句子:后写的小节必须围绕本小节主题差异化重写,删除复制自另一小节的内容,只保留本小节专属做法与参数。"})}return c.slice(0,20)}function n(a){return a.chapters.map(a=>[`- ${a.title}`,a.sections?.length?` 规划小节:${a.sections.join("、")}`:"",a.tableSections?.length?` 表格小节:${a.tableSections.join("、")}`:"",a.tableRequirements?.length?` 表格内容要求:${a.tableRequirements.join(";")}`:"",a.tablePlans?.length?` 结构化表格规划:${a.tablePlans.map(a=>`${a.title}(${a.fields.map(a=>a.name).join("/")})`).join(";")}`:""].filter(Boolean).join("\n")).join("\n")}},76228:(a,b,c)=>{c.d(b,{Eh:()=>f,Mv:()=>o,VN:()=>h,Iu:()=>i});var d=c(19898),e=c(22157);let f=.6,g=null;function h(){return g||(g=new d.LocalTransformersEmbeddingProvider({})),g}async function i(){if("1"!==process.env.DOCUMENT_SKIP_EMBED_PREFLIGHT)try{await h().embedQuery("生成前置检查")}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`本地语义模型预热失败(生成前置检查,可用 DOCUMENT_SKIP_EMBED_PREFLIGHT=1 跳过):${a}`,{cause:b})}}let j=new Map,k=0,l=0;async function m(a,b){let c=b?await b(a):await h().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function n(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return m(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=j.get(f);if(a){c[b]=a,k+=1,j.delete(f),j.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await m(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],h=f[a],i=e.get(b);for(let a of i)c[a]=h;if(b.length<=2e3&&(l+=i.length,j.set(b,h),j.size>g)){let a=j.keys().next().value;void 0!==a&&j.delete(a)}}return c}async function o(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],f=await n(d,c),g=new Map;for(let a=0;a<d.length;a++)g.has(d[a])||g.set(d[a],f[a]);return(a,b)=>{let c=g.get(a),d=g.get(b);return c&&d?(0,e.Om)(c,d):0}}},81024:(a,b,c)=>{}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=3806,exports.ids=[3806],exports.modules={8753:(a,b,c)=>{c.d(b,{V:()=>h});var d=c(51342),e=c(73024),f=c(76760);let g={reviewStandardQueries:[],reviewChapterTemplateMatchers:[],reviewChapterSectionDefaults:{firstChapterSections:[],chapterSections:[],firstChapterTableSections:[],firstChapterTableRequirements:[]},qualityBenchmarks:[],autoSpecGates:[],chapterTitleFilters:[]};function h(){try{var a;let b=function(){let a=(0,d.J0)();return e.mkdirSync(a,{recursive:!0}),f.join(a,"engineering-document-config.json")}();if(!e.existsSync(b))return g;return a=JSON.parse(e.readFileSync(b,"utf-8")),{reviewStandardQueries:Array.isArray(a.reviewStandardQueries)?a.reviewStandardQueries.filter(Boolean):[],reviewChapterTemplateMatchers:Array.isArray(a.reviewChapterTemplateMatchers)?a.reviewChapterTemplateMatchers.filter(Boolean):[],reviewChapterSectionDefaults:{firstChapterSections:Array.isArray(a.reviewChapterSectionDefaults?.firstChapterSections)?a.reviewChapterSectionDefaults.firstChapterSections.filter(Boolean):[],chapterSections:Array.isArray(a.reviewChapterSectionDefaults?.chapterSections)?a.reviewChapterSectionDefaults.chapterSections.filter(Boolean):[],firstChapterTableSections:Array.isArray(a.reviewChapterSectionDefaults?.firstChapterTableSections)?a.reviewChapterSectionDefaults.firstChapterTableSections.filter(Boolean):[],firstChapterTableRequirements:Array.isArray(a.reviewChapterSectionDefaults?.firstChapterTableRequirements)?a.reviewChapterSectionDefaults.firstChapterTableRequirements.filter(Boolean):[]},qualityBenchmarks:Array.isArray(a.qualityBenchmarks)?a.qualityBenchmarks:[],technicalDetailGate:a.technicalDetailGate,autoSpecGates:Array.isArray(a.autoSpecGates)?a.autoSpecGates:[],chapterTitleFilters:Array.isArray(a.chapterTitleFilters)?a.chapterTitleFilters:[]}}catch{return g}}},73806:(a,b,c)=>{c.d(b,{GQ:()=>u,_9:()=>x,cs:()=>t,eI:()=>q,Ui:()=>s,bl:()=>r,ob:()=>h,YZ:()=>v,nz:()=>i});let d="[零〇一二三四五六七八九十百千万两]+";var e=c(77327);function f(a){return a.replace(/[☑✓✔☐□☒○●◉◇◆]/gu,"")}function g(a){let b=f(a.trim()),c="";for(;b!==c;)c=b,b=b.replace(RegExp(`^\\s*第(?:\\d{1,3}|${d})[章节]\\s*`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d})(?:[..]\\d{1,3})+(?:[..、))]\\s*|\\s+)`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d})[))、..]\\s*`,"u"),"").replace(RegExp("^\\s*[-*+]\\s+","u"),"").trim();return b.replace(/\s+/gu," ")}function h(a){let b=g(a).replace(/\s+/gu,"");if(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b)||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项/u.test(b)||/[::]$|[,、;。]$/u.test(b))return!0;let c=g(b).replace(/\s+/gu,"");if(!c||/^(?:如|若|如果|倘若|假如|当)[^,,。;]{0,24}[,,]/u.test(c)||/^(?:我(?:方|公司)|本(?:单位|公司|工程|项目)|投标人|承包人|中标人|发包人|供应商)[^,,。;]{0,14}(?:承诺|保证|响应|满足|确保|应|须|将|会)/u.test(c)||/(?:评标)?委员会[^,,。;]{0,10}(?:确定|认定|评审|判断|推荐)/u.test(c)||/^(?:不(?:得|应|宜|少于|超过|大于|小于|低于|高于)|超过|低于|高于|达到|不少于|不大于|不超过|偏差率|误差)\s*\d/u.test(c)||/^[^,,。;]{0,10}\d+(?:%|%)/u.test(c)||/^\d+\s*项/u.test(c)||/^\d+(?:[((]\d+[))])?\s*目/u.test(c)||/^\d+\s*对(?:与|于)/u.test(c)||/^\d{1,4}[a-zA-Z]{0,3}\d{0,4}\s*[::]/u.test(c)||/^\d{1,4}\s*(?:个)?(?:日历天|天|日|月|年)[,,、]/u.test(c)||/^\d{1,4}[^,,。;\s]{1,6}[,,、]/u.test(c)||/^\d{1,2}[一-龥]{2,10}$/u.test(c)&&!/^\d{1,2}(?:个|名|台|套|辆|份|种|类|层|栋|座|米|吨|年|月|天|日|周|次|项)/u.test(c)||/[((【[《]$/u.test(c)||/[((【[《][^))】]》]*$/u.test(c)||/以下简/u.test(c)||/^\d{1,4}\s*[a-zA-Z]/u.test(c)||/^(?:确定|计算|比较|推荐|审查|否决)(?:有效)?评标(?:基准)?价/u.test(c)||/^(?:其他要求|需要补充的其他内容|相当于或不低于|补充条款|建议编制要求|投标须知|评标办法)/u.test(c))return!0;let d=c.replace(/^\d{1,3}(?:[..]\d{1,3})*\s*/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(d)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(d)||/^(?:本(?:招标)?(?:项目|工程)|投标人|承包人|中标人|发包人|供应商|项目经理|技术负责人|施工单位)[^,,。;]{0,24}(?:不得|禁止|严禁|必须|应当)/u.test(d)||/(?:见|详见|参见|详见第)[^,,。;]{0,12}(?:招标公告|招标文件|投标人须知|补疑|澄清|工程量清单|图纸|合同条款|前附表)/u.test(d)||/^\d{1,3}\s*款/u.test(c)||/第\d+(?:\.\d+)?款[^,,。;]{0,20}(?:向(?:招标人|发包人|监理人?|承包人)|提出|告知|通知|送达|发出)/u.test(c)||/\d+(?:元|万元|㎡|m[²3]?|km|m|cm|mm|kg|t|L|㎡|立方米|平方米|公顷|亩|度|kPa|MPa)[((](?:保留|计算|填写|详见|见|按|不得|应|须)/u.test(c)||/[::].{0,30}(?:必须由|应由|须由)/u.test(c)||/(?:必须|应|须|需).{0,30}(?:由|按|须)$/.test(c)||/(?:\d+(?:\.\d+)*|第\d+(?:\.\d+)*)条(?:款)?的?(?:规定|约定)/u.test(c)||/另行(?:交纳|缴纳|支付|提交|办理|承担|履行)/u.test(c)||/^未(?:分部|分类|分组|归类|划分|分配)/u.test(c))||function(a){let b=a.replace(/\s+/gu,"").replace(/^\*+|\*+$/gu,"");if(!b)return!1;if((b.match(/[爀椀猟礀氀漀挀渀捁扄潓瑲湥獴慔汢]/gu)||[]).length>=2||/[\u2046-\u205F\u2070-\u209F\u2100-\u2102\u2104-\u214F\u21B0-\u21FF\u2270-\u22FF\u2400-\u243F\u249C-\u24FF\u2640-\u26FF\u27C0-\u27EF\u2900-\u297F\u2A00-\u2AFF\u2B00-\u2BFF\u2E00-\u2FFF\u3200-\u33FF]/u.test(b)||/[\u00A0-\u00AF\u00B4\u00B6\u00B8\u00BA-\u00FF]/u.test(b)||/[\u4e00-\u9fa5][A-Za-z][\u4e00-\u9fa5]/u.test(b)&&!/[\u4e00-\u9fa5][A-Za-z](?:值|级|类|区|型|构|段|座|轴|向|楼|层|栋|点|位)/u.test(b))return!0;let c=[...b];return c.filter(a=>/[\u4e00-\u9fa5A-Za-z0-9()()【】《》、,。;;::,.\-/㎡%°·±×÷≤≥—–]/u.test(a)).length/c.length<.6}(c)}function i(a){return u(a.replace(/\*+/gu,"")).replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分、..\s-]*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^[-—–]\s*/u,"").replace(/[<>]/gu,"").replace(/[::。;;,.,]+$/gu,"").replace(/\s*[((][^()()]{0,40}[a-zA-Z]{3,}[^()()]{0,40}[))]\s*$/u,"").trim()}function j(a){return 0===a.trim().length||h(a)}let k=/^[((]?\d{1,3}(?:[..]\d{1,3})+(?:[..、))]|\s+|[一-龥])/u,l=/^[((]\d{1,3}[))]/u,m=/^(?: {2,}|\t)/u,n=RegExp(`^(?:第(?:\\d{1,3}|${d})[章节]|\\d{1,3}[、))]|\\d{1,3}[..]\\s|(?:${d})[、..))])`,"u"),o="(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)",p=RegExp(`<\\s*${o}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/\\s*${o}\\s*>`,"giu");function q(a){return p.lastIndex=0,p.test(a)}function r(a){return RegExp(`^\\s*<\\s*${o}(?:\\s[^>]*)?>`,"iu").test(a)}function s(a){return RegExp(`^\\s*<\\/\\s*${o}\\s*>`,"iu").test(a)}function t(a){for(let b of a){let a=function(a,b,c){let e=[],f=null,h=a=>a.replace(/\s+/gu,"");for(let i of function(a,b){p.lastIndex=0;let c=[...a.matchAll(p)].map(a=>a[1]||"");if(c.length>0||b?.strict)return c;let d=/(?:<\s*)?(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>?\s*[::]?\s*([\s\S]*?)(?:<\/\s*(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>|END\s+(?:OUTLINE|CHAPTERS?)|$)/iu.exec(a);return d?.[1]?[d[1]]:[]}(a,c))for(let a of function(a){let b=`${d}`,c=[`第(?:\\d{1,3}|${b})[章节]\\s*`,`(?:\\d{1,3}[..]){1,2}\\d{1,3}[..、))]?(?=\\s|[一-龥])`,`(?:\\d{1,3})[、))]\\s*`,`(?:\\d{1,3})[..]\\s+(?!\\d)`,`(?:${b})[、..))]\\s*`,`[((](?:\\d{1,3}|${b})[))]\\s*`,"[-*+]\\s+"],e=a.replace(/\r?\n/gu,"\n");for(let a of c)e=(e=(e=e.replace(RegExp(`([;;。!?!?])\\s*(?=${a})`,"gu"),"$1\n")).replace(RegExp(`(?<=\\n)\\s+(?=${a})`,"gu"),"")).replace(RegExp(`(?<![\\d..])\\s+(?=${a})`,"gu"),"\n");return e.split(/\n|;|;/u).map(a=>(function(a){let b=a.replace(/\u3000/gu," "),c=b.replace(/^[-*+]\s+/u,"").trim();if(!c)return null;let d=g(a);return!d||j(d)?null:k.test(c)?{title:d,sectionCandidate:!0,kind:"dotted"}:l.test(c)?{title:d,sectionCandidate:!0,kind:"paren"}:n.test(c)?{title:d,sectionCandidate:!1,kind:"numbered"}:m.test(b)?{title:d,sectionCandidate:!0,kind:"indent"}:{title:d,sectionCandidate:!1,kind:"plain"}})(a)).filter(a=>!!a)}(i)){let c=e[e.length-1];if(c&&a.sectionCandidate&&f&&f!==a.kind){h(a.title)===h(c.title)||(c.sections||[]).some(b=>h(b)===h(a.title))||(c.sections=[...c.sections||[],a.title]);continue}e.push({id:`explicit-${b}-${e.length+1}`,title:a.title,purpose:`根据显式大纲章节生成正式正文:${a.title}`,requiredFacts:[],sections:[],queries:[a.title]}),f=a.kind}return e.filter(a=>!j(a.title))}(b.text||"",b.source,{strict:b.strict});if(a.length>=2)return a}return[]}function u(a){let b=f(a.replace(/^#+\s*/u,"").trim()),c="";for(;b&&b!==c;)c=b,b=b.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:[..]\d+)+(?![万亿千百十米㎡吨元A-Za-z\d])\s*[、..]?\s*/u,"").replace(/^\d+(?:[、,,]\s*|\s+|\.\s*(?![0-9])|.\s*(?![0-9]))(?![##号]|栋|幢|楼|区|期|馆|站|院|座|厂房)/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").trim();return b}function v(a){return u(a.replace(/\s+/gu," ").trim()).replace(/^[,,、;;::。.!!??\-—\s]+/u,"").trim()}function w(a,b){let c=new Set;return a.filter(a=>{let d=v(a.title);if(!d)return!1;if(!b?.preserveExplicitOutline&&(c.has(d)||/见(?:公告|文件|资料|附件)|按(?:资料|文件|相关要求)|质量标准[::]|范围[::].*依据/u.test(d)||b?.template&&(0,e.C)(d,b.template)))return!1;return c.add(d),a.title=d,!0})}function x(a,b,c){return!b||c?.preserveExplicitOutline?w([...a.chapters],{...c,template:a}):w([...a.chapters].map(a=>{let c=u(a.title),d=b.chapterRules.find(b=>b.id===a.id||u(b.title)===c);return{...a,title:c,purpose:a.purpose,requiredFacts:a.requiredFacts||[],queries:[...new Set([...a.queries||[],c,d?.generationHint||"",...a.sections||[]].filter(Boolean))]}}),{...c,template:a})}},77327:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(8753);function e(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function f(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,d.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>e(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>e(a,b)))}}};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=4974,exports.ids=[4974],exports.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
|
|
2
|
-
`)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},74974:(a,b,c)=>{c.r(b),c.d(b,{builtInDeniedMessage:()=>m,default:()=>w,isReservedSkillId:()=>l,listSkillCollection:()=>p,normalizeSkillForWrite:()=>t,persistSkill:()=>v,readBodyId:()=>s,respondMethodNotAllowed:()=>n,skillEditorOptions:()=>q,unsupportedFieldIssues:()=>u,withBuiltInFlag:()=>o});var d=c(16006),e=c(32374),f=c(13424),g=c(45304),h=c(89759);let i=[{value:"processCard",label:"工艺卡",note:"按名称多选(引用存在性由服务端校验)"}],j=[{value:"llmChecklist",label:"专业写作核对提示",note:"按具体对象选用;不评分,也不作为验收通过证明"}],k=["validate"];function l(a){return k.includes(a)}function m(a,b){return`「${a}」是内置技能:F.3 规定内置技能不随用户落盘(随应用版本升级),\xa717.3 / 附录 E 明确 builtIn 禁改禁删,故禁止${"edit"===b?"编辑":"delete"===b?"删除":"用内置 id 新建"}。请换一个 id 新建用户技能。`}function n(a){a.status(405).json({error:"Method not allowed"})}function o(a){return{...a,builtIn:"builtin"===a.source,displayName:(0,f.zg)(a)}}function p(){let{skills:a,invalid:b}=(0,g.LU)();return{skills:a.map(o),invalid:b}}function q(){return{contractVersion:f.SV,chapterDomains:f.ii.map(a=>({value:a,label:f.aq[a],note:f.tv[a]})),projectTypes:f.Av.map(a=>({value:a,label:f.zK[a]})),factSources:f.C3.map(a=>({value:a.id,label:a.label})),processCards:[...e.pw.values()].map(a=>({value:a.id,label:a.name})),knowledgeKinds:[...i],acceptanceKinds:[...j],isolationRules:f.TF,absentCarriers:f.uZ}}function r(a){if(!("object"!=typeof a||null===a||Array.isArray(a)))return a}function s(a){let b=r(a),c=b?.id;return"string"==typeof c&&c.trim().length>0?c:void 0}function t(a,b){let c=r(a)??{};return{id:b,version:"number"==typeof c.version?c.version:f.SV,source:"user",enabled:!1!==c.enabled,match:c.match,requires:c.requires,structure:c.structure,forbidden:c.forbidden,knowledge:c.knowledge,acceptance:c.acceptance,...void 0!==c.examples?{examples:c.examples}:{},...void 0!==c.outputTitle?{outputTitle:c.outputTitle}:{},...void 0!==c.chapterChecklist?{chapterChecklist:c.chapterChecklist}:{}}}function u(a){return(0,h.GO)(a)}function v(a){return(0,g.T$)({v:g.t1,id:a.id,enabled:!1!==a.enabled,skill:{...a,enabled:!1!==a.enabled}})}let w=(0,d.j)("api/skills",function(a,b){try{if("GET"===a.method){let{skills:a,invalid:c}=p();return b.status(200).json({skills:a,options:q(),invalid:c})}if("POST"===a.method){let c=s(a.body);if(!c)return b.status(400).json({error:"技能 id 必填(小写字母/数字/连字符,以字母开头)"});if(l(c))return b.status(400).json({error:`技能 id「${c}」是保留段(/api/skills/${c} 已被路由占用,建得出但改不了),请换一个 id`});if((0,e.LB)(c))return b.status(403).json({error:m(c,"create")});let d=u(a.body);if(d.length>0)return b.status(400).json({error:"技能含已退休字段,未落盘",errors:d,warnings:[]});let f=t(a.body,c),g=(0,h.Yb)(f);if(!g.ok)return b.status(400).json({error:"技能未通过校验,未落盘",errors:g.errors,warnings:g.warnings});let i=v(f);if(!i.ok)return b.status(i.errors.some(a=>"builtin-skill-not-persistable"===a.code||"overrides-not-applicable"===a.code)?403:400).json({error:"技能落盘被拒",errors:i.errors});return b.status(200).json({skill:o(f),skills:p().skills,warnings:g.warnings})}return n(b)}catch(a){return console.error("[api] skills",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}})}};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=5746,exports.ids=[5746],exports.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
|
|
2
|
-
`)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},44533:(a,b,c)=>{c.d(b,{E8:()=>v,K_:()=>r,NW:()=>n,VD:()=>t,VS:()=>x,Y8:()=>u,Yy:()=>w,a2:()=>m,aY:()=>q,getMultiProjectManager:()=>o,hy:()=>y});var d=c(51342),e=c(47774),f=c(19898),g=c(33873),h=c(29021),i=c(31421),j=c(77598);let k=globalThis,l=k.__customizeKbManagers??=new Map;function m(){return(0,d.J0)()}function n(a){return(0,f.getProjectKbPath)(g.resolve(a),m())}function o(){(0,e.jF)();let a=m(),b=l.get(a);return b||(b=new f.MultiProjectManager(a),l.set(a,b)),b}function p(a){let b=g.resolve(a),c=g.resolve((0,d.J0)());return!(h.existsSync(g.join(b,"pnpm-workspace.yaml"))&&h.existsSync(g.join(b,"apps","server")))&&(b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function q(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&h.existsSync(a)&&!p(a))return g.resolve(a);let b=function(){let a=g.join(m(),"projects","registry.db");if(!h.existsSync(a))return[];let b=new((0,f.loadBetterSqlite3)())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!p(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!p(process.env.INIT_CWD)?process.env.INIT_CWD:g.resolve(process.cwd(),"../..")}function r(a){if(a){let b=g.resolve(a);return h.existsSync(b)&&!p(b)?b:null}return q()}let s=new Map;function t(a,b){let c=g.join(m(),"projects",(0,f.computeProjectId)(g.resolve(a)),"kb.db");if(!h.existsSync(c))throw Error("知识索引不存在,无法固定解析产物身份");let d=h.statSync(c),e=`${d.dev}:${d.ino}`,i=s.get(c);if(i&&i.identity!==e&&(i.store.close(),s.delete(c),i=void 0),!i){if(s.size>=4){let a=s.keys().next().value;s.get(a).store.close(),s.delete(a)}i={identity:e,store:new f.IndexStateStore(c,{readonly:!0})}}s.delete(c),s.set(c,i);let j=i.store;return j.readSnapshot(()=>b(j))}function u(a,b){return t(a,a=>Object.fromEntries([...new Set(b)].sort().map(b=>[b,a.parsedFileFingerprint(b)])))}async function v(a,b,c){let d,e;c?.throwIfAborted();let k=[...new Set(b)].sort();if(!k.length)return{};t(a,a=>{d=a});let l=d,n=l.prepareParsedFingerprintRead(k);if(!n.missing.length)return l.acceptParsedFingerprintRead(n,{});for(let a of[__dirname,process.cwd()]){for(let b=g.resolve(a);;b=g.dirname(b)){for(let a of[b,g.join(b,"apps/server")])try{if("@customize-agent/server"===JSON.parse(h.readFileSync(g.join(a,"package.json"),"utf8")).name){e=h.realpathSync(a);break}}catch{}if(e||g.dirname(b)===b)break}if(e)break}let o=e&&g.join(e,"scripts/kb-fingerprint-worker.cjs");if(!o||!h.existsSync(o))throw Error("实际server包的选定资料解析身份worker缺失,不能退回同步阻塞计算");let p=h.realpathSync(o);if(g.dirname(p)!==h.realpathSync(g.join(e,"scripts")))throw Error("解析身份worker不属于实际server脚本目录");let q=(0,j.createHash)("sha256").update(h.readFileSync(p)).digest("hex"),r=g.join(m(),"projects",(0,f.computeProjectId)(g.resolve(a)),"kb.db"),s=(0,j.randomUUID)(),u=await new Promise((a,b)=>{let d,e,f,h=(0,i.fork)(p,[],{cwd:g.dirname(g.dirname(p)),stdio:["ignore","ignore","pipe","ipc"],execArgv:process.execArgv.filter(a=>!a.startsWith("--inspect"))}),j=!1,k="",l=!1,m=(g,h)=>{l||(l=!0,c?.removeEventListener("abort",t),clearTimeout(u),f&&clearTimeout(f),c?.aborted?b(c.reason??Error("解析身份计算已取消")):e?b(e):0!==g||void 0===d?b(Error(`解析身份worker未完整成功退出:${g??h};${k}`)):a(d))},o=()=>{h.kill("SIGTERM"),(f??=setTimeout(()=>{h.kill("SIGKILL")},2e3)).unref()},t=()=>{e=c?.reason??Error("解析身份计算已取消"),o(),h.pid||m(null,null)},u=setTimeout(()=>{e=Error(`本轮选定资料解析身份计算超时(180000ms),未接回任何摘要`),o(),h.pid||m(null,null)},18e4);u.unref(),c?.addEventListener("abort",t,{once:!0}),h.stderr?.on("data",a=>{k=(k+String(a)).slice(-4096)}),h.on("error",a=>{e??=a,h.pid?o():m(null,null)}),h.on("message",a=>{if(j||!a||a.requestId!==s||a.pid!==h.pid||a.scriptHash!==q||a.databaseIdentity!==n.token.databaseIdentity||JSON.stringify(a.paths)!==JSON.stringify(n.token.missing)||void 0===a.results&&"string"!=typeof a.error){e=Error("解析身份worker回执身份或完整路径组不一致"),o();return}if(j=!0,a.error){e=Error(a.error);return}d=a.results}),h.on("close",m),c?.aborted?t():h.send({requestId:s,scriptHash:q,databasePath:r,databaseIdentity:n.token.databaseIdentity,paths:n.missing},a=>{a&&(e=a,o())})});return c?.throwIfAborted(),l.acceptParsedFingerprintRead(n,u)}function w(a,b={}){let c=void 0===b.filePaths?void 0:new Set(b.filePaths);if(c?.size===0)return[];let e=new Map;for(let c of function(a,b){let c=g.join((0,d.J0)(),"projects",(0,f.computeProjectId)(g.resolve(a)),"kb.db");if(!h.existsSync(c))return[];let e=new f.IndexStateStore(c,{readonly:!0});try{return e.listDiscoveryRecords(b).map(a=>({...a,matchedBy:"metadata"}))}finally{e.close()}}(a,b))e.set(c.relativePath,c);for(let b of function(a){let b=n(a);if(!h.existsSync(b))return[];let c=[],d=a=>{for(let e of h.readdirSync(a,{withFileTypes:!0})){let f=g.join(a,e.name);if(e.isDirectory()){d(f);continue}if(e.name.endsWith(".source.txt"))continue;let i=h.statSync(f),j=g.relative(b,f).split(g.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:g.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:i.size,mtime:i.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){if(c&&!c.has(b.relativePath))continue;let a=e.get(b.relativePath);e.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(e.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function x(a,b={}){let c=[],d="not-run",e=(b.query||"").trim(),f=Math.max(1,Math.min(500,b.limit??50)),g=new Map,h=w(a,{category:b.category});for(let a of h)(!e||`${a.relativePath}
|
|
3
|
-
${a.category}
|
|
4
|
-
${a.format}
|
|
5
|
-
${a.status}`.toLowerCase().includes(e.toLowerCase()))&&g.set(a.relativePath,{...a,matchedBy:e?"path":a.matchedBy});if(e&&!1!==b.includeContent)try{let b=await o().search(a,e,{limit:Math.max(20,f)});for(let a of(c.push(...b.failures??[]),d=c.length?b.results.length?"partial":"failed":b.results.length?"success":"empty",b.results)){let b=a.filePath,c=g.get(b)||h.find(a=>a.relativePath===b);g.set(b,{...c||{relativePath:b,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:a.score})}}catch(a){d="failed",c.push({kind:"engine",reason:a instanceof Error?a.message:String(a)})}let i=Array.from(g.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:i.slice(0,f),total:i.length,failures:c,contentSearchStatus:d}}async function y(){let a=[...new Set([...l.values(),...k.__customizeKbManager?[k.__customizeKbManager]:[]])];await Promise.all(a.map(a=>a.shutdown())),l.clear(),delete k.__customizeKbManager}},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=6321,exports.ids=[6321],exports.modules={1168:(a,b,c)=>{c.d(b,{EL:()=>H,zT:()=>G,II:()=>F,bJ:()=>M,Jr:()=>D,O0:()=>V,uj:()=>u,GC:()=>t,qj:()=>P,x8:()=>E,Kg:()=>K,uH:()=>T,Qs:()=>B,PI:()=>N,dB:()=>W,Jy:()=>S,uv:()=>r,vp:()=>w,m_:()=>q,kH:()=>A,z9:()=>y,Aq:()=>R,RV:()=>O,Kq:()=>I});var d=c(82015),e=c(79270),f=c(28017);let g=["failed","paused","repairing","blocked","running","pending","completed"],h=["chars","costUsd"];function i(a,b){return a.seq!==b.seq?a.seq-b.seq:a.id===b.id?0:a.id<b.id?-1:1}function j(a){let b=new Map;for(let c of a){if(void 0===c.parentId)continue;let a=b.get(c.parentId);a?a.push(c):b.set(c.parentId,[c])}for(let a of b.values())a.sort(i);return b}function k(a){let b=new Map(a.map(a=>[a.id,a])),c=new Map;for(let d of a){let a=0,e=d,f=new Set([d.id]);for(;e?.parentId!==void 0;){let c=b.get(e.parentId);if(!c||f.has(c.id))break;f.add(c.id),a+=1,e=c}c.set(d.id,a)}return c}let l=new Set(["prepare","understand","plan","blueprint","write","close","deliver","chapter","block","turn","round","round.decide","round.fix","repair.request","repair.localize","repair.impact","repair.transaction","repair.recheck","supervisor","resume.plan","skill.load"]),m=new Set(["failed","paused","repairing","blocked","running","pending","completed"]);var n=c(30145);let o={pending:{key:"common.statusWaiting",text:"等待中",color:"default"},running:{key:"common.statusRunning",text:n.uh.running,color:"processing"},completed:{key:"common.statusCompleted",text:n.uh.success,color:"success"},paused:{key:"common.statusPaused",text:"已暂停",color:"gold"},repairing:{key:"common.statusRepairing",text:"修复中",color:"warning"},blocked:{key:"common.statusBlocked",text:"已放弃(阻塞)",color:"warning"},failed:{key:"common.statusAbnormal",text:"异常",color:"error"}};function p(a,b,c,d){let e=a[b];if(!e)return`未知${c}(${b||"空"})`;if(e.key&&d){let a=d(e.key);if(a&&a!==e.key)return a}return e.text}function q(a,b){return p(o,a,"状态",b)}function r(a){return o[a]?.color??"default"}let s={queued:{key:"common.statusWaiting",text:"排队中",color:"default"},generating:{key:"common.statusRunning",text:"生成中",color:"processing"},paused:{key:"common.statusPaused",text:"已暂停",color:"gold"},completed:{key:"common.statusCompleted",text:"已完成",color:"success"},completed_with_issues:{key:"common.statusReview",text:"完成(有需复核项)",color:"warning"},warning:{key:"common.statusReview",text:"需复核",color:"warning"},failed:{key:"common.statusAbnormal",text:"失败",color:"error"},aborted:{key:"common.statusAbnormal",text:"已中止",color:"default"}};function t(a,b){return p(s,a,"记录状态",b)}function u(a){return s[a]?.color??"default"}let v=["failed","paused","repairing","blocked","running","pending","completed"];function w(a){let b=v.indexOf(a);return b>=0?b:v.length}let x={prepare:"生成准备",understand:"资料理解",plan:"规划",blueprint:"蓝图",write:"正文撰写",close:"收口",deliver:"交付",chapter:"章节",block:"块",turn:"轮次",round:"收口轮","round.decide":"收口\xb7判定","round.fix":"收口\xb7修复","repair.request":"修复\xb7请求","repair.localize":"修复\xb7定位","repair.impact":"修复\xb7影响面","repair.transaction":"修复\xb7事务","repair.recheck":"修复\xb7复检","skill.load":"技能命中",supervisor:"调度决策","resume.plan":"续跑任务书"};function y(a){return a?x[a]??a:"未知节点"}let z={role_binding:(0,d.createElement)(e.LinkOutlined),knowledge_retrieval:(0,d.createElement)(e.SearchOutlined),file_understanding:(0,d.createElement)(e.FileSearchOutlined),fact_extraction:(0,d.createElement)(e.TableOutlined),chapter_generation:(0,d.createElement)(e.EditOutlined),llm_review:(0,d.createElement)(e.AuditOutlined),validation:(0,d.createElement)(e.SafetyCertificateOutlined),reference:(0,d.createElement)(e.BookOutlined),prepare:(0,d.createElement)(e.ToolOutlined),understand:(0,d.createElement)(e.DatabaseOutlined),plan:(0,d.createElement)(e.ApartmentOutlined),blueprint:(0,d.createElement)(e.DeploymentUnitOutlined),write:(0,d.createElement)(e.FormOutlined),chapter:(0,d.createElement)(e.FileTextOutlined),block:(0,d.createElement)(e.BlockOutlined),turn:(0,d.createElement)(e.SyncOutlined),round:(0,d.createElement)(e.RetweetOutlined),close:(0,d.createElement)(e.CompressOutlined),deliver:(0,d.createElement)(e.ExportOutlined),repair:(0,d.createElement)(e.BugOutlined),skill:(0,d.createElement)(e.EyeOutlined),supervisor:(0,d.createElement)(e.ClusterOutlined),resume:(0,d.createElement)(e.OrderedListOutlined),default:(0,d.createElement)(e.ToolOutlined)};function A(a){return z[a.split(".")[0]||a]??z.default}function B(a){return z[a]??z.default}function C(a){var b;let c=a.issues;return{id:a.id,...void 0!==a.parentId?{parentId:a.parentId}:{},type:a.type||"block",title:a.title??"",seq:"number"==typeof a.seq&&Number.isFinite(a.seq)?a.seq:0,status:"string"==typeof(b=a.status)&&m.has(b)?a.status:"failed",startedAt:"number"==typeof a.startedAt&&Number.isFinite(a.startedAt)&&a.startedAt>0?a.startedAt:0,...void 0!==a.completedAt?{completedAt:a.completedAt}:{},...a.progress?{progress:a.progress}:{},...a.metrics?{metrics:a.metrics}:{},...Array.isArray(c)&&c.length>0?{issues:c}:{},...void 0!==a.payloadRef?{payloadRef:a.payloadRef}:{}}}function D(a,b){let c=new Map(a.map(a=>[a.id,a]));return(function(a,b){let c=function(a){let b=j(a),c=k(a),d=[...a].sort((a,b)=>(c.get(b.id)??0)-(c.get(a.id)??0)||i(a,b)),e=new Map(a.map(a=>[a.id,a]));for(let a of d){let c=b.get(a.id);if(!c||0===c.length)continue;let d=c.map(a=>e.get(a.id)??a);e.set(a.id,function(a,b){if(0===b.length)return{...a};let c=[...b].sort(i),d={...a.metrics??{}};for(let b of h){let e=function(a,b,c){let d=0,e=!1,f=a.metrics?.[c];for(let a of("number"==typeof f&&Number.isFinite(f)&&(d+=f,e=!0),b)){let b=a.metrics?.[c];"number"==typeof b&&Number.isFinite(b)&&(d+=b,e=!0)}return e?d:void 0}(a,c,b);void 0===e?delete d[b]:d[b]=e}let e=a.progress?.label,f={current:c.filter(a=>"completed"===a.status).length,total:c.length,...void 0!==e?{label:e}:{}},j=function(a){let b=new Set,c=[];for(let d of a){let a=d.provenance?.fingerprint;if("string"==typeof a&&a.length>0){if(b.has(a))continue;b.add(a)}c.push(d)}return c}(c.flatMap(a=>a.issues??[])),k=function(a){let b,c=1/0;for(let d of a){let a=function(a){let b=g.indexOf(a);return b>=0?b:0}(d);a<c&&(c=a,b=d)}return b}(c.map(a=>a.status))??a.status;return{...a,status:k,progress:f,...Object.keys(d).length>0?{metrics:d}:{},...j.length>0?{issues:j}:{}}}(a,d))}return[...a].sort(i).map(a=>e.get(a.id)??a)}(a),d=j(c),e=new Set(c.map(a=>a.id)),f=1/0,l=(a,b)=>{let c=b+1<f?(d.get(a.id)??[]).filter(b=>b.id!==a.id).map(a=>l(a,b+1)):[];return{...a,children:c}},m=c.filter(a=>void 0===a.parentId||!e.has(a.parentId)).sort(i).map(a=>l(a,0)),n=new Set,o=a=>{for(let b of a)n.add(b.id),o(b.children)};for(let a of(o(m),c))n.has(a.id)||m.push(l(a,0));return m})(function(a,b){if(void 0===b)return[...a];let c=k(a),d=Math.max(0,Math.floor(b));return a.filter(a=>(c.get(a.id)??0)<d)}(a.map(C),b)).map(a=>(function a(b,c){let d=c.get(b.id),e=d?.type??String(b.type),f=b.issues;return{id:b.id,...void 0!==b.parentId?{parentId:b.parentId}:{},type:e,unknownType:!("string"==typeof e&&l.has(e)),title:b.title||y(e),seq:b.seq,status:b.status,..."number"==typeof b.startedAt&&b.startedAt>0?{startedAt:b.startedAt}:{},...void 0!==b.completedAt?{completedAt:b.completedAt}:{},...b.progress?{progress:b.progress}:{},metrics:b.metrics??{},issues:Array.isArray(f)?f:[],...void 0!==b.payloadRef?{payloadRef:b.payloadRef}:{},children:b.children.map(b=>a(b,c))}})(a,c))}function E(a){let b=[],c=a=>{for(let d of a)b.push(d),c(d.children)};return c(a),b.sort(i)}function F(a,b){let c=[],d=(a,e)=>{for(let f of a){if(f.id===b)return c.push(...e),!0;if(d(f.children,[...e,f.id]))return!0}return!1};return d(a,[]),c}let G=236,H=76;function I(a,b){if(!b)return a;let c=new Map(a),d=c.get(b.id)??{dx:0,dy:0};return c.set(b.id,{dx:d.dx+b.dx,dy:d.dy+b.dy}),c}let J=new Set(["running","repairing"]);function K(a){let b=new Set(a.nodes.filter(a=>J.has(a.node.status)).map(a=>a.node.id));if(0===b.size)return L;let c=new Set;for(let d of a.edges)b.has(d.fromId)&&c.add(d.id);return c}let L=new Set;function M(a,b){if(0===b.size)return a;let c=a.nodes.map(a=>{let c=b.get(a.node.id);return c?{...a,x:a.x+c.dx,y:a.y+c.dy}:a}),d=a.edges.map(a=>{let c=b.get(a.fromId),d=b.get(a.toId);return c||d?{...a,x1:a.x1+(c?.dx??0),y1:a.y1+(c?.dy??0),x2:a.x2+(d?.dx??0),y2:a.y2+(d?.dy??0)}:a});return{...a,nodes:c,edges:d}}function N(a){let b=[],c=[],d=0,e=(a,f)=>{let g,h=a.children,i=40+f*(G+72),j=h.map(a=>({id:a.id,...e(a,f+1)}));for(let e of(0===j.length?(g=40+d*(H+22),d+=1):g=(j[0].y+j[j.length-1].y)/2,b.push({node:a,x:i,y:g,depth:f}),j))c.push({id:`${a.id}->${e.id}`,fromId:a.id,toId:e.id,x1:i+G/2,y1:g+H,x2:e.x+G/2,y2:e.y});return{x:i,y:g}};for(let b of a)e(b,0),d+=1;let f=b.reduce((a,b)=>Math.max(a,b.x+G),0),g=b.reduce((a,b)=>Math.max(a,b.y+H),0);return{nodes:b,edges:c,width:f+40,height:g+40}}function O(a,b){let c=[`影响面:${b.kind}`,`波及 ${b.affectedNodeIds.length} 个节点`,...b.escalate?["超出阈值需人工确认"]:[],...b.rollbackable?[]:["不可回滚:按 11.1 需回滚或重新校准,不得当普通改动提交"]];return`请修复节点「${a}」(${c.join(",")})`}function P(a,b){let c=b>0?b:1;return{dx:a.dx/c,dy:a.dy/c}}let Q=(a,b)=>a.left<b.right&&a.right>b.left&&a.top<b.bottom&&a.bottom>b.top;function R(a){let{node:b,view:c,box:d,panelWidth:e,panelHeight:f,gap:g=12,margin:h=8,obstacles:i=[]}=a,j=(a,b,c)=>Math.min(Math.max(a,b),Math.max(b,c)),k=Math.min(e,Math.max(0,d.width-2*h)),l=b.x*c.k+c.x,m=b.y*c.k+c.y,n=m+H*c.k,o={left:l,top:m,right:l+G*c.k,bottom:n},p=d.width-k-h,q=(a,b)=>{let c=i.filter(c=>c.top>=b&&c.left<a+k&&c.right>a).map(a=>a.top-g);return Math.max(0,Math.min(d.height-h,...c,d.height-h)-b)},r=a=>{let b=d.height-a-h,e=(c,d)=>{if(c<h||d<h||c>p||d>b)return!1;let e={left:c,top:d,right:c+k,bottom:d+a};return!i.some(a=>Q(e,a))},f=l+(G+g)*c.k,r=l-k-g*c.k,s=n+g,t=m-a-g;for(let[a,b]of[[f,s],[f,t],[r,s],[r,t]])if(e(a,b))return{left:a,top:b,maxHeight:Math.max(0,Math.min(q(a,b),d.height-b-h))};let u=[f,r,h,p],v=[s,t,h,b,...i.flatMap(b=>[b.bottom+g,b.top-a-g])],w=null,x=1/0;for(let c of u)for(let d of v){let f=j(c,h,p),g=j(d,h,Math.max(h,b));if(!e(f,g))continue;let i={left:f,top:g,right:f+k,bottom:g+a},l=Math.max(Math.max(0,o.left-i.right,i.left-o.right),Math.max(0,o.top-i.bottom,i.top-o.bottom))+1e3*!!Q(i,o);l<x&&(x=l,w={left:f,top:g})}return w?{...w,maxHeight:q(w.left,w.top)}:null};if(a.pin){let b=j(a.pin.left,h,p),c=j(a.pin.top,h,Math.max(h,d.height-2*h));return{left:b,top:c,maxHeight:Math.max(0,Math.min(q(b,c),d.height-c-h))}}let s=Math.min(f,Math.max(0,d.height-2*h)),t=r(s);if(t)return t;let u=function(a,b,c=8){let d=a.height-c,e=b.map(a=>({start:Math.max(c,a.top),end:Math.min(d,a.bottom)})).filter(a=>a.end>a.start).sort((a,b)=>a.start-b.start),f=0,g=c;for(let a of e)a.start>g&&(f=Math.max(f,a.start-g)),g=Math.max(g,a.end);return Math.max(f,d-g)}(d,i,h)-g;if(u>0&&u<s){let a=r(Math.max(120,u));if(a)return a}return t??r(Math.max(120,u))??{left:j(l+(G+g)*c.k,h,p),top:h,maxHeight:Math.max(0,d.height-2*h)}}function S(a){if("number"!=typeof a.startedAt||a.metrics?.instantEvent===!0)return;let b=("number"==typeof a.completedAt?a.completedAt:Date.now())-a.startedAt;return b>=0?b:void 0}function T(a){return void 0===a?"—":(0,f.a)(a,{unit:"ms",style:"fine"})}let U=[{key:"note",format:a=>String(a)},{key:"chars",format:a=>`${Number(a).toLocaleString()} 字`},{key:"turn",format:a=>`第 ${a} 轮`},{key:"residual",format:a=>`残余 ${a}`},{key:"toolCalls",format:a=>`工具 ${a} 次`},{key:"attempt",format:a=>`第 ${a} 次尝试`},{key:"failureKinds",format:a=>String(a)},{key:"chapters",format:a=>`${a} 章`},{key:"facts",format:a=>`${a} 条事实`}];function V(a,b=2){let c=[];for(let{key:d,format:e}of U){let f=a[d];if(void 0===f||""===f||!1===f)continue;let g=e(f);if(g.trim()&&(c.push(g),c.length>=b))break}return c}function W(a,b=6){return Object.entries(a).slice(0,b).map(([a,b])=>({key:a,text:"number"==typeof b?`${a}: ${Number.isInteger(b)?b:b.toFixed(2)}`:`${a}: ${String(b)}`}))}},14352:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{_:()=>n});var e=c(8732),f=c(82015),g=c(60056),h=c(79270),i=c(94487),j=c(22147),k=c(26570),l=c(89668),m=a([i]);function n({currentDocumentId:a,projectRoot:b,onSelect:c,onCurrentDeleted:d}){let m=(0,i.Vr)(),{message:n}=g.qw.useApp(),p=(0,f.useRef)(null),[q,r]=(0,f.useState)([]),[s,t]=(0,f.useState)(!1),[u,v]=(0,f.useState)(!1),[w,x]=(0,f.useState)(1),[y,z]=(0,f.useState)(!1),[A,B]=(0,f.useState)([]),[C,D]=(0,f.useState)(!1),[E,F]=(0,f.useState)(null),[G,H]=(0,f.useState)(!0),I=(0,f.useRef)(null),J=(0,f.useCallback)(async()=>{t(!0);try{let a=await (0,j.cQ)(b||void 0);r(a.documents||[])}catch{r([])}finally{t(!1)}},[b]),K=(0,f.useMemo)(()=>q.slice((w-1)*8,8*w),[q,w]),L=(0,f.useCallback)(a=>!(0,k.Ce)(a.status),[]),M=K.filter(L).map(a=>a.id),N=()=>{if(!u){let a=p.current?.parentElement?.getBoundingClientRect(),b=p.current?.getBoundingClientRect();H(!a||!b||b.top-a.top>252)}v(a=>!a)},O=async c=>{try{await (0,j.QG)(c.id,c.projectRoot||b||void 0),n.success(m("common.success")),B(a=>a.filter(a=>a!==c.id)),c.id===a&&d(),await J()}catch{n.error(m("common.error"))}},P=async()=>{let c=q.filter(a=>A.includes(a.id)&&L(a));if(0!==c.length){D(!0);try{await Promise.all(c.map(a=>(0,j.QG)(a.id,a.projectRoot||b||void 0))),n.success(m("records.deletedCount").replace("{count}",String(c.length))),a&&c.some(b=>b.id===a)&&d(),B([]),z(!1),await J()}catch{n.error(m("common.error"))}finally{D(!1)}}},Q=E?{left:E.left,top:E.top}:{right:24,bottom:96};return(0,e.jsxs)("div",{className:"canvasRecordsBall",ref:p,style:{position:"absolute",zIndex:3,...Q},children:[u&&(0,e.jsxs)("div",{className:"canvasRecordsPanel",style:{position:"absolute",right:0,width:320,maxHeight:420,display:"flex",flexDirection:"column",...G?{bottom:52}:{top:52}},children:[(0,e.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-2 border-b border-[var(--canvasSectionBorder)] shrink-0",children:[(0,e.jsxs)("span",{className:"text-[13px] font-semibold text-[var(--colorText)]",children:[m("records.title"),(0,e.jsx)("span",{className:"ml-2 font-normal text-xs text-[var(--colorTextTertiary)]",children:q.length})]}),(0,e.jsx)("button",{type:"button",className:"canvasRecordsLink",onClick:()=>{z(a=>!a),B([])},children:y?m("common.cancel"):m("records.batch")})]}),(0,e.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:s&&0===q.length?(0,e.jsx)("div",{className:"py-10 text-center",children:(0,e.jsx)(g.tK,{size:"small"})}):0===q.length?(0,e.jsx)("div",{className:"py-8",children:(0,e.jsx)(g.Sv,{image:g.Sv.PRESENTED_IMAGE_SIMPLE,description:(0,e.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:m("records.empty")})})}):K.map(b=>{let d=b.id===a,f=L(b);return(0,e.jsxs)("div",{className:`group flex items-start gap-2 px-3 py-2 border-b border-[var(--canvasSectionBorder)] last:border-b-0 transition-colors ${d?"bg-[var(--colorBgSelected)]":"hover:bg-[var(--colorBgHover)]"}`,children:[y&&(0,e.jsx)("input",{type:"checkbox",className:"mt-1 shrink-0",disabled:!f,checked:A.includes(b.id),onChange:a=>B(c=>a.target.checked?[...c,b.id]:c.filter(a=>a!==b.id))}),(0,e.jsxs)("button",{type:"button",className:"min-w-0 flex-1 text-left bg-transparent border-0 p-0 cursor-pointer",title:b.title,onClick:()=>{c(b),v(!1)},children:[(0,e.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,e.jsx)("span",{className:`w-1.5 h-1.5 shrink-0 rounded-full ${o[b.status]??"bg-[var(--colorTextTertiary)]"}`}),(0,e.jsx)("span",{className:`truncate text-[13px] ${d?"font-semibold text-[var(--colorText)]":"text-[var(--colorText)]"}`,children:b.title}),d&&(0,e.jsx)("span",{className:"shrink-0 text-[10px] text-[var(--colorTextTertiary)]",children:m("records.current")})]}),(0,e.jsxs)("div",{className:"mt-0.5 pl-3 text-[11px] text-[var(--colorTextTertiary)]",children:[(0,e.jsx)(h.HistoryOutlined,{className:"mr-1"}),(0,l.fw)(b.updatedAt,"zh-CN")]})]}),!y&&f&&(0,e.jsx)(g.iS,{title:m("records.confirmDelete"),description:m("records.deleteHint"),onConfirm:()=>{O(b)},okText:m("common.confirm"),cancelText:m("common.cancel"),children:(0,e.jsx)("button",{type:"button",className:"canvasRecordsDelete",title:m("common.delete"),children:(0,e.jsx)(h.DeleteOutlined,{})})}),!y&&!f&&(0,e.jsx)(g.m_,{title:m("records.inFlightHint"),children:(0,e.jsx)("span",{className:"canvasRecordsDelete isDisabled",children:(0,e.jsx)(h.DeleteOutlined,{})})})]},b.id)})}),q.length>8&&(0,e.jsx)("div",{className:"flex justify-center px-3 py-2 border-t border-[var(--canvasSectionBorder)] shrink-0",children:(0,e.jsx)(g.dK,{size:"small",simple:!0,current:w,total:q.length,pageSize:8,onChange:x})}),y&&(0,e.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-2 border-t border-[var(--canvasSectionBorder)] shrink-0",children:[(0,e.jsx)("span",{className:"text-xs text-[var(--colorTextSecondary)]",children:m("records.checkedCount").replace("{count}",String(A.length))}),(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[(0,e.jsx)("button",{type:"button",className:"canvasRecordsLink",onClick:()=>B(A.length===M.length?[]:M),children:A.length===M.length&&M.length>0?m("records.clearSelect"):m("records.selectPage")}),(0,e.jsx)(g.iS,{title:m("records.confirmDeleteSelected").replace("{count}",String(A.length)),description:m("records.deleteHint"),disabled:0===A.length,onConfirm:()=>{P()},okText:m("common.confirm"),cancelText:m("common.cancel"),children:(0,e.jsxs)("button",{type:"button",className:"canvasRecordsDanger",disabled:0===A.length||C,children:[(0,e.jsx)(h.DeleteOutlined,{className:"mr-1"}),m("records.deleteSelected")]})})]})]})]}),(0,e.jsxs)("div",{className:"canvasRecordsBallBtn",role:"button",tabIndex:0,"aria-label":`${m("records.title")}(${q.length})`,style:{width:44,height:44},onPointerDown:a=>{let b=p.current?.parentElement?.getBoundingClientRect(),c=p.current?.getBoundingClientRect();if(b&&c){I.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,originLeft:c.left-b.left,originTop:c.top-b.top,moved:!1};try{a.currentTarget.setPointerCapture(a.pointerId)}catch{}}},onPointerMove:a=>{let b=I.current,c=p.current?.parentElement?.getBoundingClientRect();if(!b||b.pointerId!==a.pointerId||!c)return;let d=a.clientX-b.startX,e=a.clientY-b.startY;!b.moved&&5>Math.hypot(d,e)||(b.moved=!0,F({left:Math.min(Math.max(8,b.originLeft+d),Math.max(8,c.width-44-8)),top:Math.min(Math.max(8,b.originTop+e),Math.max(8,c.height-44-8))}))},onPointerUp:a=>{let b=I.current;I.current=null;try{a.currentTarget.releasePointerCapture(a.pointerId)}catch{}if(b){if(b.moved)return void F(a=>{if(a)try{window.localStorage.setItem("canvas:recordsBallPos",JSON.stringify(a))}catch{}return a});N()}},onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),N())},children:[(0,e.jsx)(h.HistoryOutlined,{}),(0,e.jsx)("span",{className:`canvasRecordsBallBadge${0===q.length?" isZero":""}`,children:q.length>99?"99+":q.length})]})]})}i=(m.then?(await m)():m)[0];let o={completed:"bg-[var(--colorOk)]",completed_with_issues:"bg-[var(--colorDanger)]",warning:"bg-[var(--colorWarning)]",failed:"bg-[var(--colorDanger)]",aborted:"bg-[var(--colorTextTertiary)]",generating:"bg-[var(--colorAccent)]",queued:"bg-[var(--colorTextTertiary)]",paused:"bg-[var(--colorWarning)]"};d()}catch(a){d(a)}})},15642:(a,b,c)=>{c.d(b,{_:()=>i});var d=c(8732),e=c(82015),f=c(60056),g=c(79270);let{Text:h}=f.o5;function i(a){let{value:b,onChange:c,onSend:i,generating:j,submitting:k,disabled:l,disabledReason:m,selectedNode:n,onMentionSelected:o,resumable:p,onContinue:q,quickActions:r,requireGenerationSetup:s=!1,promptOptions:t=[],projectOptions:u=[],selectedPrompts:v=[],selectedProject:w=null,onSelectPrompts:x,onSelectProject:y,onPreviewStructure:z,collapsed:A=!1,onToggleCollapsed:B}=a,[C,D]=(0,e.useState)(!A),E=(0,e.useRef)(null),[F,G]=(0,e.useState)(!1),H=s?[0===v.length?"提示词":"",!w?"项目":""].filter(Boolean):[],I=H.length>0,J=!s,K=b.trim().length>0,L=l?m||"当前不可发起生成":I?`请先用上方「+」选择${H.join(" 与 ")}——未选齐时不能发起生成`:j?"有任务正在运行:发送将加入生成队列(前面任务完成后自动开始)":J||K?"发送后将创建生成任务,画布随节点日志实时增长":"已选齐提示词与项目:需求可以不填,直接点「生成」",M=s?I?`先用输入框里的「+」选择${H.join(" 与 ")}——缺一不可`:"已选好提示词与项目:直接点「生成」即可;有额外要求再写在这里(可不填)":"描述你的需求;可用上面的 @ 提及把节点带进正文(Enter 发送,Shift+Enter 换行)。篇幅由招标文件页数上限与标书类型自动决定:需求里写字数/页数不会改变篇幅目标";return(0,d.jsxs)("div",{className:`canvasInputBar${A&&!C?" canvasInputBarCollapsed":""}`,children:[(0,d.jsx)("div",{className:"canvasInputHandleRow",children:(0,d.jsx)("button",{type:"button",className:"canvasInputHandle","aria-expanded":!A||!!C,"aria-label":A&&!C?"展开输入框":"收起输入框",onClick:()=>B?.(!(A&&!C)),children:A&&!C?(0,d.jsx)(g.UpOutlined,{}):(0,d.jsx)(g.DownOutlined,{})})}),C&&(0,d.jsxs)("div",{className:`canvasInputPanel${A?" isLeaving":""}`,children:[(0,d.jsxs)("div",{className:"canvasInputTopRow",children:[(0,d.jsxs)(f.$x,{wrap:!0,size:6,children:[n&&(0,d.jsx)(f.m_,{title:`把「@${n.title}」插入输入框(可见文本,可自行修改)`,children:(0,d.jsx)(f.vw,{color:"blue",style:{cursor:"pointer"},onClick:o,children:`@ ${n.title}`})}),!n&&(0,d.jsx)(h,{type:"secondary",style:{fontSize:12},children:"点选一个节点后可 @ 提及它"}),p&&!j&&(0,d.jsx)(f.$n,{size:"small",type:"link",onClick:q,children:"继续生成"}),r?.map(a=>(0,d.jsx)(f.$n,{size:"small",type:"link",onClick:a.onClick,children:a.label},a.key))]}),(0,d.jsx)(f.$x,{wrap:!0,size:10,children:(0,d.jsx)(f.AM,{trigger:"click",placement:"topLeft",open:F,onOpenChange:G,content:(0,d.jsxs)("div",{style:{width:360,display:"flex",flexDirection:"column",gap:8},children:[s&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{children:[(0,d.jsx)(h,{strong:!0,style:{fontSize:13},children:"提示词"}),(0,d.jsx)(f.l6,{mode:"multiple",style:{width:"100%",marginTop:4},value:v.map(a=>a.value),placeholder:0===t.length?"该项目暂无提示词":"选择提示词(至少一份;可多选)",options:t,onChange:a=>x?.(a)})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)(h,{strong:!0,style:{fontSize:13},children:"项目"}),(0,d.jsx)(f.l6,{style:{width:"100%",marginTop:4},value:w?.value,showSearch:!0,optionFilterProp:"label",placeholder:0===u.length?"本项目知识库里还没有资料:先到知识库页上传并入库":"选择项目(= 知识库里这个项目的资料,决定本次用哪份材料)",options:u,onChange:a=>y?.(a)})]}),(0,d.jsx)(h,{type:"secondary",style:{fontSize:12},children:"两者选齐后才能点「生成」。「项目」选的是入库到本地知识库的那份项目资料(清单/图纸/招标文件都在其中)——本次生成只用它,不会把库里别的项目材料混进来。提示词的正文按名字进入对应链路(总控/写作 → 写作链,清单/图纸/提取 → 事实抽取链,排版 → 格式链);章节大纲取自其中带 <OUTLINE> 的那一份,且只能有一份声明大纲。"})]}),!s&&(0,d.jsx)(h,{type:"secondary",style:{fontSize:12},children:"提示词与项目取自这条记录本身(章节结构由记录里那份提示词的大纲派生),不需要在这里再选。"}),(0,d.jsx)("div",{children:(0,d.jsx)(f.$n,{size:"small",block:!0,disabled:I,onClick:()=>{G(!1),z?.()},children:"结构预览(章清单与小节)"})})]}),children:(0,d.jsx)(f.$n,{size:"small",icon:(0,d.jsx)(g.PlusOutlined,{}),type:I?"primary":"default",children:"提示词 / 项目"})})})]}),(0,d.jsxs)("div",{className:"canvasInputRow",children:[(0,d.jsxs)("div",{className:`canvasComposer${l?" isDisabled":""}`,children:[(v.length>0||w)&&(0,d.jsxs)("div",{className:"canvasComposerChips",children:[v.map(a=>(0,d.jsx)(f.vw,{color:"blue",closable:!0,onClose:b=>{b.preventDefault(),x?.(v.filter(b=>b.value!==a.value).map(a=>a.value))},children:`提示词:${a.label}`},a.value)),w&&(0,d.jsx)(f.vw,{color:"geekblue",closable:!0,onClose:a=>{a.preventDefault(),y?.("")},children:`项目:${w.label}`})]}),(0,d.jsx)(f.pd.TextArea,{className:"canvasComposerInput",ref:E,value:b,onChange:a=>c(a.target.value),onPressEnter:a=>{!a.shiftKey&&b.trim()&&(a.preventDefault(),l||I||k||i())},autoSize:{minRows:1,maxRows:5},placeholder:M,disabled:l})]}),(0,d.jsx)(f.m_,{title:L,children:(0,d.jsx)(f.$n,{type:"primary",icon:(0,d.jsx)(g.SendOutlined,{}),loading:k,disabled:l||I||J&&!K,onClick:i,children:j?"排队提交":"生成"})})]})]})]})}},16258:(a,b,c)=>{c.d(b,{p:()=>d});function d(a,b){let c=`/canvas/${encodeURIComponent(a)}`;return b?`${c}?projectRoot=${encodeURIComponent(b)}`:c}},26570:(a,b,c)=>{c.d(b,{Ce:()=>n,tl:()=>p});var d=c(82015),e=c(28017),f=c(30145),g=c(79270),h=c(22147);async function i(a){let b,c=0;for(;;){let d;if(a.cancelled())throw Error("用户中止");try{d=await a.read(b)}catch(b){if(a.cancelled())throw Error("用户中止",{cause:b});1===(c+=1)&&a.connectionInterrupted?.(b),await a.delay(Math.min(2e3*c,15e3));continue}c=0;let e=d.document;if(!e){if(!d.unchanged&&!d.status)throw Error("未找到生成记录,无法读取该任务进度");["paused","failed","aborted","completed","completed_with_issues","warning"].includes(d.status??"")&&(b=void 0),await a.delay(1500);continue}if(b=e.updatedAt,a.apply(e),"paused"===e.status)return e;if("failed"===e.status||"aborted"===e.status)throw Error(e.error||("aborted"===e.status?"生成已中止":"生成失败"));if(["completed","completed_with_issues","warning"].includes(e.status)){if(e.draft)return e;throw Error(e.error||"服务任务已结束,但最终成稿未完成;已保存的正文可在生成记录中查看")}await a.delay(1500)}}let j=null,k=!1;function l(){j?.listeners.forEach(a=>a())}let m=f.i_;function n(a){return"completed"!==a&&"completed_with_issues"!==a&&"warning"!==a&&"failed"!==a&&"aborted"!==a&&"paused"!==a}function o(a){let b=a.agentWorkflow?.nodes;if(!b||0===b.length)return null;let c=[...b].sort((a,b)=>(a.seq??0)-(b.seq??0)).map(a=>{let b=m[a.type]||a.title||a.type||"节点",c="failed"===a.status||"blocked"===a.status?"error":"paused"===a.status||"repairing"===a.status?"warning":"running"===a.status?"process":"pending"===a.status?"wait":"finish",e=Object.entries(a.metrics||{}).slice(0,4).map(([a,b])=>`${a}:${String(b)}`).join(" ");return{key:a.id,title:b,subtitle:a.progress?`${a.progress.label||"进度"}:${a.progress.current}/${a.progress.total}`:"",description:e,status:c,icon:function(a){let b=a.split(".")[0]||a;return"role_binding"===a||"prepare"===b?(0,d.createElement)(g.ApartmentOutlined):"knowledge_retrieval"===a||"understand"===b?(0,d.createElement)(g.DatabaseOutlined):"file_understanding"===a||"skill"===b?(0,d.createElement)(g.EyeOutlined):"fact_extraction"===a?(0,d.createElement)(g.BulbOutlined):"chapter_generation"===a||"chapter"===b||"write"===b?(0,d.createElement)(g.FormOutlined):"llm_review"===a||"turn"===b||"round"===b?(0,d.createElement)(g.ThunderboltOutlined):"validation"===a||"repair"===b||"recheck"===b?(0,d.createElement)(g.SafetyCertificateOutlined):"plan"===b||"blueprint"===b?(0,d.createElement)(g.ApartmentOutlined):"rollback"===b||"snapshot"===b?(0,d.createElement)(g.HistoryOutlined):(0,d.createElement)(g.FileTextOutlined)}(a.type),subSteps:[]}}),e="generating"===a.status||"queued"===a.status?c.find(a=>"process"===a.status)?.key??c.at(-1)?.key??null:"failed"===a.status||"aborted"===a.status?c.find(a=>"error"===a.status)?.key??c.at(-1)?.key??null:null;return{steps:c,activeKey:e}}function p(a={}){let{projectRoot:b,documents:c,onNotice:f,t:m,onGenerated:q}=a,[r,s]=(0,d.useState)([]),[t,u]=(0,d.useState)(null),[v,w]=(0,d.useState)(!1),[x,y]=(0,d.useState)(null),[z,A]=(0,d.useState)(""),[B,C]=(0,d.useState)(null),[D,E]=(0,d.useState)(a.documentId??null),[F,G]=(0,d.useState)(null),[H,I]=(0,d.useState)(c??[]),[J,K]=(0,d.useState)(0),[L,M]=(0,d.useState)(null),[N,O]=(0,d.useState)([]),[P,Q]=(0,d.useState)(null),[R,S]=(0,d.useState)(null),T=(0,d.useRef)(""),U=(0,d.useRef)(new Map),V=(0,d.useRef)(new Map),W=(0,d.useRef)(!1),X=(0,d.useRef)(b),Y=(0,d.useRef)(D),Z=(0,d.useRef)(r),$=(0,d.useRef)(t),_=(0,d.useRef)(v),aa=(0,d.useRef)(m),ab=(0,d.useRef)(f),ac=(0,d.useRef)(q),ad=(0,d.useMemo)(()=>`activeGenDocId:${b||"default"}`,[b]),ae=(0,d.useCallback)(a=>{ab.current?.(a)},[]),af=(0,d.useCallback)((a,b)=>aa.current?.(a)??b,[]),ag=(0,d.useRef)(!1),ah=(0,d.useCallback)(async()=>{try{I((await (0,h.cQ)(X.current||void 0)).documents),ag.current=!1}catch{ag.current||(ag.current=!0,ae({kind:"error",text:"生成记录列表读取失败——界面显示的可能不是最新内容,请稍后重试或查看服务端日志"}))}},[ae]),ai=(0,d.useCallback)((a,b,c=_.current)=>{j?.loading&&(j.flowSteps=a,j.activeFlowKey=b,j.loading=c,l())},[]),aj=(0,d.useCallback)(a=>{let b=Date.now();for(let c of a){let a=U.current.get(c.key);"process"!==c.status||a?("finish"===c.status||"error"===c.status||"warning"===c.status)&&a&&!a.endedAt&&U.current.set(c.key,{...a,endedAt:b}):U.current.set(c.key,{startedAt:b})}},[]),ak=(0,d.useCallback)(a=>{let b=a.agentWorkflow?.nodes||[],c=`${a.id}|${a.updatedAt}|${a.status}|${a.error||""}|n${b.length}:${b.map(a=>`${a.id}=${a.status}:${a.progress?.current??0}/${a.progress?.total??0}`).join(",")}`;if(T.current===c)return;T.current=c,C(a);let{steps:d,activeKey:e}=function(a,b={}){return o(a)??{steps:[],activeKey:null}}(a);aj(d);let f=n(a.status);s(d),u(e),w(f),ai(d,e,f),G("failed"===a.status||"aborted"===a.status?a.error||("aborted"===a.status?"生成已中止":"生成失败"):null),("completed"===a.status||"completed_with_issues"===a.status||"warning"===a.status)&&(a.draft&&y(a.draft),A(a.editedMarkdown||a.markdown),O(a.exportReports||[]),S({docId:a.id,...a.deliveryQuality?.receipt||a.reviewMetadata?.contractQuality?{contractQuality:a.deliveryQuality?.receipt??a.reviewMetadata.contractQuality}:{},...a.deliveryQuality?.stale||a.reviewMetadata?.contractQualityStale?{contractQualityStale:a.deliveryQuality?.stale??a.reviewMetadata.contractQualityStale}:{},...a.projectRoot?{projectRoot:a.projectRoot}:{},...a.reviewMetadata?.telemetry?.repairChainNetChars?{netChars:a.reviewMetadata.telemetry.repairChainNetChars}:{}}))},[ai,aj]),al=(0,d.useCallback)(a=>{a.id&&E(a.id),ak(a)},[ak]),am=(0,d.useCallback)((a,b)=>i({cancelled:()=>!!b?.aborted,apply:ak,delay:a=>new Promise(b=>window.setTimeout(b,a)),connectionInterrupted:()=>ae({kind:"warning",text:"暂时无法读取生成进度,正在重新连接;生成状态以服务端回执为准"}),read:async c=>{let d=new AbortController;b&&(b.pollController=d);try{return await (0,h.v7)(a,!0,X.current||void 0,d.signal,c)}finally{b?.pollController===d&&(b.pollController=void 0)}}}),[ak,ae]),an=(0,d.useCallback)(async(a,b)=>{if(!a.specId)return;let c=a.title,e=a.promptIds,f=a.projectRoot||X.current;if(j?.aborted&&(j=null),j?.loading){if(W.current)return;if(!f)return void ae({kind:"error",text:"未识别当前项目,请先选择或打开项目后再生成文件"});W.current=!0;try{let a=await (0,h.OX)({promptIds:e,...c?{title:c}:{},requirement:b,projectRoot:f});await ah(),ae({kind:"info",text:a.queuePosition?`已加入生成队列(第 ${a.queuePosition} 位):前面任务完成后将自动开始`:"生成任务已创建"})}catch(a){ae({kind:"error",text:a instanceof Error?a.message:"创建生成任务失败"})}finally{W.current=!1}return}if(!f)return void ae({kind:"error",text:"未识别当前项目,请先选择或打开项目后再生成文件"});w(!0);let i=Z.current,m=i.length>0?i:[{key:"prepare",title:"正在创建生成任务",description:"系统正在创建后台生成任务,请稍候。",status:"process",icon:(0,d.createElement)(g.LoadingOutlined),subSteps:[{key:"start",title:"准备生成任务",status:"process"}]}],n=$.current||"prepare";s(m),u(n);let p=(0,h.OX)({promptIds:e,...c?{title:c}:{},requirement:b,projectRoot:f});j={id:Date.now(),specId:a.specId,loading:!0,flowSteps:m,activeFlowKey:n,promise:p,listeners:new Set};try{let b=await p;b.documentId&&(localStorage.setItem(ad,b.documentId),E(b.documentId),j?.promise===p&&(j.documentId=b.documentId)),await ah(),b.queuePosition&&ae({kind:"info",text:`已加入生成队列(第 ${b.queuePosition} 位):前面任务完成后将自动开始`});let c=b.documentId?await am(b.documentId,j?.promise===p?j:void 0):void 0;if(c?.status==="paused"){j?.promise===p&&(j.loading=!1,l(),j=null),localStorage.removeItem(ad),await ah(),ae({kind:"info",text:"生成已在节点边界暂停,已保存实际正文和执行状态"});return}let d=b.draft||c?.draft;if(!d)throw Error("生成结果为空");(b.documentId||c?.id)&&E(b.documentId||c.id),y(d),A(c?.editedMarkdown||c?.markdown||d.markdown),j?.promise===p&&(j.draft=d,j.content=c?.editedMarkdown||c?.markdown||d.markdown);let e=c||{id:b.documentId||`draft-${Date.now()}`,templateId:b.record?.templateId||b.documentSpec?.id||a.specId,templateName:b.record?.templateName||b.documentSpec?.title,title:d.title,requirement:d.requirement,projectRoot:d.projectRoot||X.current,projectId:d.projectId,markdown:d.markdown,status:d.validationIssues.some(a=>"error"===a.level||"warning"===a.level)||!d.exportGate.passed?"completed_with_issues":"completed",draft:d,executionStages:d.executionStages,assets:d.assets||[],createdAt:d.generatedAt,updatedAt:Date.now()},{steps:f}=o(e)??{steps:[],activeKey:null};s(f),ai(f,"done",!1),u("done"),j?.promise===p&&(j.activeFlowKey="done",j.loading=!1,l(),j=null),localStorage.removeItem(ad),await ah(),ae("completed"===e.status?{kind:"success",text:"生成完成,专业交付检查已通过"}:{kind:"warning",text:"本轮运行已结束,实际稿仍有问题待复核,可导出审阅稿"}),(b.documentId||c?.id)&&ac.current?.(b.documentId||c.id)}catch(d){localStorage.removeItem(ad);let a=d instanceof Error?d.message:af("common.error","出错了"),b=k;k=!1;let c=!b&&"用户中止"===a;G(a),b||s(b=>{let c=b.map(b=>"process"===b.status?{...b,status:"error",description:a,subSteps:b.subSteps.map((a,b)=>({...a,status:0===b?"error":a.status}))}:b);return ai(c,$.current,!1),c}),j?.promise===p&&(j.loading=!1,j.error=a,l(),j=null),await ah(),c?ae({kind:"warning",text:"生成任务已被中止(可能来自其他窗口):可在列表中点击「继续生成」恢复"}):b||ae({kind:"error",text:a})}finally{w(!1),k=!1,j?.promise===p&&(j.loading=!1,l())}},[ae,ah,ai,ad,af,am]),ao=(0,d.useCallback)(a=>{let b=V.current.get(a);b&&(clearInterval(b),V.current.delete(a))},[]),ap=(0,d.useCallback)((a,b)=>{ao(a);let c=setInterval(()=>{(async()=>{try{let{document:c}=await (0,h.v7)(a,!0,b||X.current||void 0);if(!c)return;ak(c),await ah(),n(c.status)||(ao(a),localStorage.removeItem(ad))}catch{}})()},2e3);V.current.set(a,c)},[ak,ah,ao,ad]),aq=(0,d.useCallback)(a=>{let b=U.current.get(a);if(!b)return null;let c=b.endedAt??Date.now(),d=(0,e.a)(c-b.startedAt,{unit:"ms",style:"fine"});return b.endedAt?d:`${d}(运行中)`},[J]),ar=(0,d.useCallback)(async a=>{j&&(k=!0);let b=Y.current,c=null;for(let d of(b&&await (0,h.r)(b,a||X.current||void 0).catch(a=>{c=a}),j&&(j.aborted=!0,j.pollController?.abort(),j.loading=!1,j.error="用户中止",l(),j=null),localStorage.removeItem(ad),V.current.values()))clearInterval(d);V.current.clear(),w(!1),s([]),u(null),G("用户中止"),await ah(),ae(c?{kind:"error",text:`本地已停止跟踪,但服务端未确认中止(${c instanceof Error?c.message:String(c)})——任务可能仍在后台运行,请稍后重试或查看服务端日志`}:{kind:"success",text:"已中止生成任务"})},[ae,ah,ad]),as=(0,d.useCallback)(async a=>{j?.loading&&j.documentId===a.id&&(k=!0,j.aborted=!0,j.pollController?.abort(),j.loading=!1,j.error="用户中止",l(),j=null,w(!1)),localStorage.removeItem(ad),ao(a.id);try{await (0,h.r)(a.id,a.projectRoot||X.current||void 0),ae({kind:"success",text:"queued"===a.status?"已取消排队任务":"已中止生成任务"})}catch{ae({kind:"info",text:"任务已不在运行,已刷新状态"})}finally{await ah(),Y.current===a.id&&(E(null),C(null),y(null),A(""))}},[ae,ah,ao,ad]),at=(0,d.useCallback)(async a=>{try{E(a.id),w(!0);let b=await (0,h.UQ)(a.id,a.projectRoot||X.current||void 0);localStorage.setItem(ad,b.documentId),await ah();let c=await am(b.documentId);c.draft&&(y(c.draft),A(c.editedMarkdown||c.markdown||c.draft.markdown)),localStorage.removeItem(ad),await ah(),ae("paused"===c.status?{kind:"info",text:"生成已暂停,实际稿已保存"}:"completed"===c.status?{kind:"success",text:"已继续生成并通过专业交付检查"}:{kind:"warning",text:"继续生成已结束,实际稿仍待复核,可导出审阅稿"})}catch(a){ae({kind:"error",text:a instanceof Error?a.message:"继续生成失败"})}finally{w(!1)}},[ae,ah,ad,am]),au=(0,d.useCallback)(async(a,b)=>{let c=await fetch(`/api/documents/generated/${encodeURIComponent(a)}/pause`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:b||X.current||void 0})});if(!c.ok)throw Error(await c.text()||`HTTP ${c.status}`);let d=await c.json();return ae({kind:"success",text:d.message||"已请求暂停:正在取消模型调用并保存已完成正文"}),await ah(),ap(a,b),d},[ae,ah,ap]),av=(0,d.useCallback)(async(a,b)=>{let c=await fetch(`/api/documents/generated/${encodeURIComponent(a)}/resume-generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:b||X.current||void 0})});if(!c.ok)throw Error(await c.text()||`HTTP ${c.status}`);let d=await c.json().catch(()=>void 0),e=d?.resumeReuse;ae(e?{kind:0===e.blockers.length?"info":"warning",text:`已请求继续:${e.reason}`}:{kind:"info",text:"已请求继续:将复用已保存的检查点"}),await ah()},[ae,ah]),aw=(0,d.useCallback)((a,b,c)=>{let d=new Blob([a],{type:c}),e=URL.createObjectURL(d),f=document.createElement("a");f.href=e,f.download=b,f.target="_self",f.rel="noopener",f.style.display="none",document.body.appendChild(f),f.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window})),f.remove(),window.setTimeout(()=>URL.revokeObjectURL(e),1e3)},[]),ax=(0,d.useCallback)(async(a,b)=>{let c=await (0,h.hU)(a,b);aw(c.blob,c.filename,"application/json;charset=utf-8")},[aw]),ay=(0,d.useCallback)(async(a,b,c)=>{try{let{blob:d,filename:e,receipt:f,gateIssues:g}=await (0,h.UE)(a);aw(d,e||b,c),Q("review"===f.exportPurpose?{at:Date.now(),count:g.length,issues:g}:null),f.issuesReport&&await ax(a,f.issuesReport)}catch(b){throw b instanceof h.GA&&b.receipt.issuesReport&&await ax(a,b.receipt.issuesReport),b}},[aw,ax]),az=(0,d.useMemo)(()=>({markdown:"text/markdown;charset=utf-8",html:"text/html;charset=utf-8",pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}),[]),aA=(0,d.useCallback)(async(a,b)=>{let c=void 0!==a.editedMarkdown?a.editedMarkdown:a.markdown||a.draft?.markdown||"",d=void 0===a.editedMarkdown&&a.checkpointChapters?.some(a=>a.content?.trim());if(!c.trim()&&!d)return void ae({kind:"warning",text:"该记录暂无可导出的正文内容"});M(b);let e={exportPurpose:"review",documentId:a.id,title:a.title,format:b,projectRoot:a.projectRoot||X.current||void 0};try{await ay(e,`${a.title}.${b}`,az[b])}catch(a){ae({kind:"error",text:a instanceof Error?a.message:"导出失败"})}finally{M(null)}},[ay,az,ae]),aB=(0,d.useCallback)(async a=>{if(!x)return;M(a);let b="markdown"===a?"md":a,c={exportPurpose:"review",documentId:Y.current||void 0,title:x.title,markdown:z,format:a,exportGate:x.exportGate,useClientMarkdown:!0,projectRoot:x.projectRoot||X.current||void 0};try{if(await ay(c,`${x.title}.${b}`,az[a]),Y.current)try{let{document:a}=await (0,h.v7)(Y.current,!1,x.projectRoot||X.current||void 0);a&&O(a.exportReports||[])}catch{}}catch(a){ae({kind:"error",text:a instanceof Error?a.message:"导出失败"})}finally{M(null)}},[z,ay,x,az,ae]),aC=D?H.find(a=>a.id===D)??B:B,aD=function(a,b){if(!a)return b?"running":"idle";switch(a){case"queued":return"queued";case"generating":return"running";case"paused":return"paused";case"failed":case"aborted":return"stopped";case"completed_with_issues":case"warning":return"issues";case"completed":return"done";default:return"idle"}}(aC?.status,v);return{flowSteps:r,activeFlowKey:t,loading:v,draft:x,content:z,workflowRecord:B,documentId:D,documents:H,error:F,phase:aD,flowTick:J,boundRecord:aC,canResume:function(a){if(!a)return{resumable:!1,kind:"not-resumable",reason:"记录不存在"};let b=String(a.status||""),c=a.checkpointChapters?.length??0,d=c>0,e="number"==typeof a.interruptedAt||!!a.interruptionReason;if(a.running??("generating"===b||"queued"===b))return{resumable:!1,kind:"not-resumable",reason:"这次生成还在跑(续跑入口不该在运行态出现)"};if("paused"===b)return{resumable:!0,kind:"paused",reason:"暂停是可逆的:从检查点接着跑,未受影响的章会被复用"};if(e)return d?{resumable:!0,kind:"interrupted",reason:`上次运行被中断(${a.interruptionReason??"中断标记"})且留有 ${c} 个检查点章:续跑只补未完成的章`}:{resumable:!1,kind:"not-resumable",reason:"这次运行被中断且**没有检查点章**:续跑等于全量重跑,请用新建生成(这里不伪装成续跑)"};if("warning"===b)return d?{resumable:!0,kind:"interrupted",reason:`上次运行留下了 ${c} 个检查点章(状态 warning):续跑只补未完成的章`}:{resumable:!1,kind:"not-resumable",reason:"warning 且没有检查点章:没有可接着跑的东西,请用新建生成"};let f=a.draft?.exportGate??a.exportGate;if(f?.passed===!1){let a=f.blockingIssues?.length??0;return{resumable:!0,kind:"gate-blocked-repair",reason:`门禁未过(${a>0?`${a} 项阻断`:"阻断清单未随记录落盘"}):续跑把阻断项交回生成侧修复(回源修复,不是重新生成)`}}return"completed"===b?{resumable:!1,kind:"not-resumable",reason:'这份稿已完成:要再跑请新建生成("继续"会把已定的交付物再推一遍)'}:"completed_with_issues"===b||"failed"===b||"aborted"===b?{resumable:!0,kind:"resumable-terminal",reason:"completed_with_issues"===b?`已收口但有未过项:续跑把未过项交回生成侧修复(回源修复,不是重新生成)${d?`;复用 ${c} 个检查点章`:""}`:"aborted"===b?`这份稿被中止过:续跑从中断处接着跑${d?`(复用 ${c} 个检查点章)`:"(无检查点 ⇒ 全量重跑)"}`:`上次生成失败:续跑接着跑${d?`(复用 ${c} 个检查点章)`:"(无检查点 ⇒ 全量重跑)"}`}:{resumable:!1,kind:"not-resumable",reason:`当前状态(${b||"未知"})没有可续跑的线索`}}(aC).resumable,startGeneration:an,abortGeneration:ar,abortDocument:as,resumeDocument:at,pauseDocument:au,resumePausedDocument:av,applyRecord:al,refreshDocuments:ah,waitForDoc:am,stepDurationText:aq,setDraft:y,setContent:A,setExportReports:O,export:{exporting:L,nonDeliverableExport:P,exportRecord:aA,exportEditor:aB,downloadExport:ay,exportReports:N},deliveryReadings:R}}},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})}},30145:(a,b,c)=>{c.d(b,{i_:()=>d,uh:()=>e});let d={role_binding:"项目角色配置绑定",knowledge_retrieval:"知识库证据检索",file_understanding:"项目资料理解",fact_extraction:"事实抽取",chapter_generation:"章节正文生成",llm_review:"独立复核",validation:"规则与准入校验",reference:"资料增强"},e={success:"完成",running:"进行中",failed:"失败",skipped:"跳过",partial:"部分生效",pending:"等待中"}},62025:(a,b,c)=>{c.d(b,{B:()=>g});var d=c(8732),e=c(60056);let{Paragraph:f}=e.o5;function g(a){let{open:b,title:c,chapters:g,outlineSource:h,materialScope:i,onClose:j}=a,k=g.length>0?`结构预览:${c}(${g.length} 章${h?`,大纲来源:${h}`:""})`:`结构预览:${c}`;return(0,d.jsxs)(e.aF,{open:b,title:k,centered:!0,onCancel:j,width:640,styles:{container:{maxHeight:"calc(100vh - 48px)",display:"flex",flexDirection:"column"},body:{overflowY:"auto",flex:1,minHeight:0}},footer:(0,d.jsx)(e.$n,{type:"primary",onClick:j,children:"知道了"}),children:[(0,d.jsx)(f,{type:"secondary",style:{fontSize:12,marginBottom:8},children:"章和已声明小节来自用户提示词大纲。技能候选尚未确定位置;生成时会结合真实资料和技术职责进行专业规划,可能合并、调整或归入其他章节。 最终目录以完成规划后的文档为准。"}),i&&(0,d.jsx)(e.Fc,{type:"info",showIcon:!0,style:{marginBottom:8},message:`本次项目资料:${i.root||"(未指定)"}(${i.fileCount} 份文件)`,description:"资料范围已锁定在所选项目资料内:库里其它项目的材料不会进入本篇。"}),0===g.length&&(0,d.jsx)(e.Fc,{type:"info",showIcon:!0,message:"本次没有派生出章清单",description:"派生的硬约束是提示词(或输入框要求)里要有 ≥2 章的显式大纲;缺大纲时服务端会直接拒绝这次生成,并在提示里说清缺什么。"}),(0,d.jsx)(e.B8,{size:"small",dataSource:g,renderItem:(a,b)=>(0,d.jsx)(e.B8.Item,{children:(0,d.jsx)(e.B8.Item.Meta,{title:`${b+1}. ${a.title}`,description:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{children:["用户声明:",(0,d.jsx)("span",{children:a.sections.length>0?a.sections.join("、"):"(未声明小节)"})]}),a.candidateSections?.length?(0,d.jsxs)("div",{children:["技能候选(待规划):",(0,d.jsx)("span",{children:a.candidateSections.join("、")})]}):null]})})})})]})}},85202:(a,b,c)=>{c.d(b,{B:()=>j,VF:()=>f,WF:()=>h,be:()=>i,s_:()=>k,xA:()=>g});var d=c(82015),e=c(1168);let f=24;function g(a,b,c,d,e=.15){let f=d&&d.right>d.left&&d.bottom>d.top?d:{left:0,top:0,right:c.width,bottom:c.height},h=Math.max(1,f.right-f.left),i=Math.max(1,f.bottom-f.top),j=a.x*b.k+b.x,k=a.y*b.k+b.y,l=j+a.width*b.k,m=k+a.height*b.k,n=f.left+h*e,o=f.right-h*e,p=f.top+i*e,q=f.bottom-i*e;return j<n||k<p||l>o||m>q}let h=12e3;function i(a){if(!a.following)return{label:"跟随最新",title:"跟随已关闭:点一下重新打开(打开后会跟着当前活跃节点走)",paused:!1};if(a.pausedUntil>a.now){let b=Math.max(1,Math.ceil((a.pausedUntil-a.now)/1e3));return{label:"跟随暂停中",title:`跟随暂停:${b}s 后自动恢复(你刚动过视口;不是关掉了)`,paused:!0}}return a.node?{label:"跟随中",title:`正在跟随:${a.node.title}${void 0!==a.node.round?`(第 ${a.node.round} 轮)`:""}`,paused:!1}:{label:"跟随中",title:"跟随中:当前没有活跃节点可跟(生成开始后会自动跟上)",paused:!1}}function j(a,b,c,d=24){let e=b.x,f=b.y,g=b.x+a.width*b.k,h=b.y+a.height*b.k,i=Math.min(g,c.right)-Math.max(e,c.left),k=Math.min(h,c.bottom)-Math.max(f,c.top);return i>=d&&k>=d?{dx:0,dy:0}:{dx:c.left+d-e,dy:c.top+d-f}}function k(){let[a,b]=(0,d.useState)({x:0,y:0,k:1}),c=(0,d.useRef)(null),f=(0,d.useRef)(null),g=(0,d.useRef)(a),h=(0,d.useCallback)((a,d,e)=>{b(b=>{let f=Math.min(2,Math.max(.1,b.k*a)),g=c.current?.getBoundingClientRect();if(!g||void 0===d||void 0===e)return{...b,k:f};let h=(d-g.left-b.x)/b.k,i=(e-g.top-b.y)/b.k;return{k:f,x:d-g.left-h*f,y:e-g.top-i*f}})},[]),[i,j]=(0,d.useState)(null),k=(0,d.useCallback)(a=>{if(0!==a.button)return;a.currentTarget.setPointerCapture(a.pointerId);let b=g.current;f.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,originX:b.x,originY:b.y}},[]),l=(0,d.useCallback)(a=>{let c=f.current;c&&c.pointerId===a.pointerId&&b(b=>({...b,x:c.originX+(a.clientX-c.startX),y:c.originY+(a.clientY-c.startY)}))},[]),m=(0,d.useCallback)(()=>{f.current=null},[]),n=(0,d.useCallback)(()=>b({x:0,y:0,k:1}),[]),o=(a,b)=>b??{left:0,top:0,right:a.width,bottom:a.height},p=(0,d.useCallback)((a,d,e)=>{b(b=>{let f=c.current?.getBoundingClientRect();if(!f||a<=0||d<=0)return{...b,x:0,y:0};let g=o(f,e),h=Math.max(1,g.right-g.left),i=Math.max(1,g.bottom-g.top),j=Math.min(2,Math.max(.1,Math.min(h/a,i/d)));return{k:j,x:g.left+(h-a*j)/2,y:g.top+(i-d*j)/2}})},[]),q=(0,d.useCallback)((a,d,f,g)=>{b(b=>{let h=c.current?.getBoundingClientRect();if(!h)return b;let i=o(h,g),j=f??b.k,k=(i.left+i.right)/2,l=(i.top+i.bottom)/2;return{k:j,x:k-(a+e.zT/2)*j,y:l-(d+e.EL/2)*j}})},[]);return{view:a,containerRef:c,zoomAt:h,onPointerDown:k,onPointerMove:l,endDrag:m,reset:n,fit:p,centerOn:q,panBy:(0,d.useCallback)((a,c)=>{(0!==a||0!==c)&&b(b=>({...b,x:b.x+a,y:b.y+c}))},[])}}},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"}}};
|