@customize-agent/server 4.60.35 → 4.60.37
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/3239.js +7 -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/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/32e126df53e20cd9bcca5e12141140949358a0d11d2383f7242277a4f8acbf1d/_buildManifest.js +1 -0
- 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]-83db154d46fd7aeb.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/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 +14 -16
- 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/package.json +0 -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 -3
- 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 -144
- 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/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/.next/static/e598c2bda8274fb1bb8f7e00f0f36fd4deae91b11929c9f04f17e1ae36b34697/_buildManifest.js +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/{e598c2bda8274fb1bb8f7e00f0f36fd4deae91b11929c9f04f17e1ae36b34697 → 32e126df53e20cd9bcca5e12141140949358a0d11d2383f7242277a4f8acbf1d}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=8176,exports.ids=[8176],exports.modules={2313:(a,b,c)=>{c.d(b,{U:()=>e,u:()=>d});class d extends Error{constructor(a,b){super(a.reason,b),this.receipt=a,this.name="DocumentTransportAnomaly"}}let e=a=>a instanceof d},8176:(a,b,c)=>{c.d(b,{a:()=>n,x:()=>u});var d=c(77598),e=c(95393),f=c(68515),g=c(98943),h=c(2313),i=c(24245);let j=(a,b)=>a+"/"+b.replace(/~/gu,"~0").replace(/\//gu,"~1");function k(a,b=""){return Array.isArray(a)?a.length>48?{workspaceArrayIndexed:!0,path:b,total:a.length,reading:"完整数组保留在原回执;用read_receipt按此path和offset/limit逐页读取,或原工作台工具查当前值。"}:a.map((a,c)=>k(a,j(b,String(c)))):a&&"object"==typeof a?Object.fromEntries(Object.entries(a).map(([a,c])=>[a,k(c,j(b,a))])):a}function l(a,b,c,d){if(!Array.isArray(a)){if(void 0!==c||void 0!==d)throw Error("offset/limit须选择实际数组path");return k(a,b)}let e=function(a=0,b=24){if(!Number.isSafeInteger(a)||a<0||!Number.isSafeInteger(b)||b<1||b>48)throw Error("工作台分页须使用非负整数offset及1–48的limit");return{offset:a,limit:b}}(c,d),f=a.slice(e.offset,e.offset+e.limit);return{workspaceArrayPage:!0,path:b,total:a.length,offset:e.offset,records:f.map((a,c)=>k(a,j(b,String(e.offset+c)))),nextOffset:e.offset+f.length<a.length?e.offset+f.length:null,originalAvailable:!0}}function m(a){try{let b=JSON.parse(a);if(b&&"object"==typeof b&&!Array.isArray(b)&&"boolean"==typeof b.performed&&(Array.isArray(b.progressKeys)||Array.isArray(b.notificationKeys)||b.progressLedger)){let{progressKeys:a,notificationKeys:c,progressLedger:d,...e}=b;return JSON.stringify(e)}}catch{}return a}class n extends Error{constructor(a,b,c){super(c),this.checkpoint=a,this.reason=b,this.name="DomainAgentPausedError"}}let o=a=>Array.isArray(a)?a.map(o):a&&"object"==typeof a?Object.fromEntries(Object.entries(a).sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>[a,o(b)])):a,p=a=>(0,d.createHash)("sha256").update(JSON.stringify(o(a))).digest("hex"),q=a=>{try{return JSON.stringify(o((0,e.parseJsonWithoutDuplicateKeys)(a)))}catch{return a}},r=a=>{try{let b=(0,e.parseJsonWithoutDuplicateKeys)(a);return Object.fromEntries(Object.entries(b).map(([a,b])=>[a,"string"==typeof b&&b.length>240?{preview:b.slice(0,160),chars:b.length}:Array.isArray(b)&&JSON.stringify(b).length>240?{count:b.length,...b.length&&b.every(a=>"number"==typeof a&&Number.isFinite(a))?{min:Math.min(...b),max:Math.max(...b)}:{}}:b&&"object"==typeof b&&!Array.isArray(b)?{fields:Object.keys(b)}:b]))}catch{return{originalArgumentChars:a.length}}},s=(a,b="",c=0)=>{let d=Array.isArray(a)?"array":null===a?"null":typeof a;return Array.isArray(a)?{path:b,type:d,count:a.length,itemFields:a[0]&&"object"==typeof a[0]?Object.keys(a[0]):void 0}:a&&"object"==typeof a?{path:b,type:d,fieldCount:Object.keys(a).length,...c<2?{fields:Object.entries(a).map(([a,d])=>s(d,b+"/"+a.replace(/~/gu,"~0").replace(/\//gu,"~1"),c+1))}:{fieldNames:Object.keys(a)}}:{path:b,type:d,..."string"==typeof a?{chars:a.length}:{}}},t=a=>{if(Array.isArray(a))return a.map(t);if(!a||"object"!=typeof a)return a;let b="string"==typeof a.type,c=Object.fromEntries(Object.entries(a).filter(([a])=>!b||"nullable"!==a).map(([a,b])=>[a,t(b)]));return b&&!0===a.nullable&&(c.type=[a.type,"null"]),c};async function u(a){if(new Set(a.tools.map(a=>a.name)).size!==a.tools.length)throw Error("智能体工具身份重复");if(a.resume&&a.resume.identity!==a.identity)throw Error("智能体检查点与当前任务及来源身份不一致");let b=a.resume?structuredClone(a.resume):{identity:a.identity,messages:[{role:"user",content:a.goal},...a.stableContext?[{role:"user",content:a.stableContext}]:[]],pending:[],executed:{},progressKeys:[...a.initialProgressKeys??[]],stalledFeedback:[],rounds:0,status:"running"},c=async()=>{await a.onCheckpoint?.(structuredClone(b))},d=a.options?.signal,j=()=>d?.throwIfAborted(),o=a.directive&&b.observedExecutionContexts?.some(b=>b.id===a.directive.id)?void 0:a.directive;if("completed"===b.status){if(o&&"execution-context"!==o.kind&&o.id!==b.directive?.id){if(!o.reason.trim())throw Error("已完成角色重新工作须有实际修订原因")}else{let c=a.resumeCompleted?.();if(!c)return{result:b.result,checkpoint:b};b.messages.push({role:"user",content:c}),b.stalledFeedback=[],b.noProgressRounds=0,a.factDrivenWake&&(b.housekeepingSinceProgress=[])}b.status="running",delete b.result}if("waiting"===b.status){if(!(o&&"execution-context"!==o.kind&&o.id!==b.directive?.id)&&!a.resumeWaiting?.())return{result:b.result,checkpoint:b};delete b.result,a.factDrivenWake&&(b.housekeepingSinceProgress=[])}if(o&&(b.directive=structuredClone(o)),"blocked"===b.status||"paused"===b.status){let c="paused"===b.status,d=b.blockedReason??(b.stalledFeedback.join(";")||"原因未记录");b.messages.push({role:"user",content:c?"budget"===b.blockedReason?"【恢复反馈】上次任务因调用数预算到界暂停:检查点、原稿、已执行事务与费用账均保留。补充预算后继续;先依据已读回执推进实际成果,不要原样重复已执行动作。":`【恢复反馈】上次任务因状态停滞暂停:${d}。原目标、实际证据与已执行事务均保留。先依据已读回执改变策略:需要新证据时明确不同的待查问题;已有证据足够时形成或修订成果;不能再次原样执行已无进展的动作。`:`【恢复反馈】上次任务因重复无进展暂停:${d}。原目标、实际证据、已执行事务和无进展记录均保留,未重置。先依据已读回执改变策略:需要新证据时明确不同的待查问题;已有证据足够时形成或修订成果;不能再次原样执行已无进展的动作。`}),c&&(b.stalledFeedback=[],b.noProgressRounds=0,b.housekeepingSinceProgress=[],b.maintenanceErrorRounds=0,delete b.lastMaintenanceError,delete b.blockedReason,delete b.blockedMessage),!c&&a.factDrivenWake&&(b.housekeepingSinceProgress=[])}"yielded"===b.status&&(delete b.invocationBoundary,delete b.result),b.status="running";let u=new Set(b.progressKeys),v=new Set(b.stalledFeedback),w=!!a.contextForTurn&&!1!==a.memoryTools,x=b.memory??={notes:"",observations:[],retained:[],pinned:[]},y=new Set,z="actor:"+p(a.identity).slice(0,20),A=c=>{if(void 0===c.receiptNamespace&&void 0!==c.namespace&&(c.receiptNamespace=c.namespace),void 0!==c.receiptNamespace&&c.receiptNamespace!==z)throw Error("RECEIPT_ACTOR_NAMESPACE_MISMATCH:只能读取当前 actor 命名空间的回执");if((b.contextLifecycle||a.options?.actorId)&&void 0!==c.receiptId&&c.receiptNamespace!==z)throw Error(`RECEIPT_ACTOR_NAMESPACE_REQUIRED:读取 receiptId 须同时传 receiptNamespace="${z}";用 catalog 查看本 actor 目录`)},B=(a,b)=>{let c=a=>{try{return(0,e.parseJsonWithoutDuplicateKeys)(a)}catch{return}};var d=[c(a),c(b)];let f=new Set,g=a=>{if(Array.isArray(a)){for(let b of a)g(b);return}if(a&&"object"==typeof a)for(let[b,c]of Object.entries(a)){if(/^(?:id|entityIds?|unitEntityIds?|writingUnitIds?|evidenceIds?|certificateIds?|decisionIds?|sourceEntityIds?|factKeys|quantityKeys)$/u.test(b))for(let a of Array.isArray(c)?c:[c])"string"==typeof a&&f.add(a);g(c)}};return g(d),[...f]},C=(a,b)=>{let c={},d=a=>{if(Array.isArray(a))return void a.forEach(d);if(!a||"object"!=typeof a)return;let b=a.entityId??a.unitEntityId??a.id,e=a.entityVersion??a.unitVersion??a.version;"string"==typeof b&&Number.isSafeInteger(e)&&Number(e)>=1&&(c[b]=Number(e)),Object.values(a).forEach(d)};for(let c of[a,b])try{d((0,e.parseJsonWithoutDuplicateKeys)(c))}catch{}return c},D=(b,c)=>{let d=a.tools.find(a=>a.name===b);if(!d||d.readOnly||d.housekeeping||"workspace-view"===d.observationKind)return!1;let e=JSON.parse(c);return!1===e.performed||!!(e.data&&["changedEntityIds","changedEntities","submitted","nextAction","invocationBoundary"].some(a=>Object.hasOwn(e.data,a)))},E=a=>{if(!a.dependencyKeys){let c=b.executed[a.operationId]?.result;a.dependencyKeys=c?B(a.arguments,c):[]}if(!a.dependencyVersions){let c=b.executed[a.operationId]?.result;a.dependencyVersions=c?C(a.arguments,c):{}}let c=b.contextLifecycle?.dependencyVersions;return!c||!(a.dependencyKeys??[]).some(b=>void 0!==c[b]&&a.dependencyVersions[b]!==c[b])},F=a=>Array.isArray(a)?a.map(F):a&&"object"==typeof a?Object.fromEntries(Object.entries(a).map(([a,b])=>[a,"current"!==a&&F(b)])):a,G=(a,c=!1)=>{let d=b.contextLifecycle;if(d&&!a.dependencyKeys){let c=b.executed[a.operationId];c&&(a.dependencyKeys=B(a.arguments,c.result))}return!!(!d||c||(x.pinned??[]).includes(a.index)||y.has(a.operationId))||!(!E(a)||a.focusId!==d.focusId&&D(a.name,b.executed[a.operationId].result))&&(a.focusId===d.focusId||a.dependencyKeys?.some(a=>d.dependencyKeys?.includes(a)))},H=(a,b)=>{let c=a,d=0;for(let a of b?b.slice(1).split("/").map(a=>a.replace(/~1/gu,"/").replace(/~0/gu,"~")):[]){if(!c||"object"!=typeof c||!Object.hasOwn(c,a))return{found:!1,value:void 0,depth:d,available:Array.isArray(c)?`(该层是数组,共 ${c.length} 项)`:c&&"object"==typeof c?Object.keys(c).slice(0,12).join("、"):"(该层不是对象)"};c=c[a],d+=1}return{found:!0,value:c,available:"",depth:d}},I=(a,c,d="result")=>{let f,g=x.observations.find(b=>b.index===a);if(!g)throw Error("当前任务没有这条实际回执");if("arguments"===d)try{f=(0,e.parseJsonWithoutDuplicateKeys)(g.arguments)}catch{f=g.arguments}else f=JSON.parse(m(b.executed[g.operationId].result));if(c&&!c.startsWith("/"))throw Error("回执路径必须是JSON Pointer");let h="",i=-1;for(let a of((a,b)=>{if(!b)return[""];let c=[b],d=a=>{a&&!c.includes(a)&&c.push(a)};if(b.startsWith("/data/value/data/")&&d("/data/"+b.slice(17)),b.startsWith("/data/value/")&&d("/data/"+b.slice(12)),("/data/value"===b||"/value"===b)&&d("/data"),"/result"===b&&d("/data"),b.startsWith("/value/")&&d("/data/"+b.slice(7)),b.startsWith("/items")&&d("/data/items"),b.startsWith("/records")&&d("/data/records"),b.startsWith("/memberSourceFiles")&&d("/data/memberSourceFiles"),b.startsWith("/data/evaluation/")&&d("/data/"+b.slice(17)),"/data/evaluation"===b&&d("/data"),"submit_for_independent_review"!==a)return c;if(b.startsWith("/data/")){let a=b.slice(6);a.startsWith("reviewSummary/")||d("/data/reviewSummary/"+a);let c=a.startsWith("value/")?a.slice(6):a;c&&!c.startsWith("reviewSummary/")&&d("/data/reviewSummary/"+c),["unreviewedUnits","actions","unitsWithFindings","criteria","openFindings","mechanical"].includes(c.split("/")[0]??"")&&d("/data/reviewSummary/revisionPlan/"+c)}return c})(g.name,c)){let b=H(f,a);if(b.found)return{observation:g,value:b.value,...a!==c?{resolvedPath:a}:{}};b.available&&b.depth>i&&(h=b.available,i=b.depth)}for(let a of((a,b)=>{if(!b.startsWith("/"))return[];let c=a=>a.replace(/~/gu,"~0").replace(/\//gu,"~1"),d=[],e=[b],f=new Set(e);for(;e.length&&d.length<4;){let b=e.shift(),g=b.slice(1).split("/").map(a=>a.replace(/~1/gu,"/").replace(/~0/gu,"~")),h=a,i=!1;for(let a=0;a<g.length;a+=1){let d=g[a];if(!(!h||"object"!=typeof h||!Object.hasOwn(h,d))){h=h[d];continue}i=!0;let j=[];if(0===a&&h&&"object"==typeof h&&Object.hasOwn(h,"data")&&j.push("/data"+b),!Array.isArray(h)&&h&&"object"==typeof h)if(/^\d+$/u.test(d)){let b=Object.keys(h).filter(a=>Array.isArray(h[a]));1===b.length&&j.push("/"+[...g.slice(0,a),b[0],...g.slice(a)].map(c).join("/"))}else if(a<g.length-1||"value"===d||"result"===d)j.push("/"+[...g.slice(0,a),...g.slice(a+1)].map(c).join("/"));else{let b=Object.keys(h).filter(a=>Array.isArray(h[a]));1===b.length&&j.push("/"+[...g.slice(0,a),b[0]].map(c).join("/"))}for(let a of j)f.has(a)||(f.add(a),e.push(a));break}i||d.push(b)}return d})(f,c)){let b=H(f,a);if(b.found)return{observation:g,value:b.value,...a!==c?{resolvedPath:a}:{}}}let j="section_workspace"===g.name?"section_workspace 回执是工作区壳:单元状态/审查档位在每轮上下文 workspaceLive,本节合同项在 sectionBrief,工作包清单在 data.value.sections。":"plan_section"===g.name?"plan_section 回执的小节明细在 data.value.subsections(数组);逐小节 contentContract/writingOutline 见 subsections/<下标>。":"/arguments"===c?'原参数不在 /arguments:读历史回执的原始参数请用 read_receipt { receiptId, part:"arguments" };读结果用默认 part:"result" 或 path:"/data"。':"delegate_construction_responsibility"===g.name?'delegate 回执的 data 含 actorId/instructionId;原参数用 part:"arguments",不要用 path:"/arguments"。':f&&"object"==typeof f&&Object.hasOwn(f,"error")&&!Object.hasOwn(f,"data")?"该回执是失败回执:只有 performed/error,没有 data 层;按 error 里的说明修正动作,不要读 /data。":"";throw Error(`回执 ${a}(${g.name} ${g.arguments.slice(0,100)})不存在路径「${c}」;在该层可用的字段:${h||"(无)"}。按字段大纲里的实际 path 读取,不要猜层级。${j}`)},J=(a,b,c="",d="result")=>"context-restored:"+p([a,d,c,b]),K=(a,b="",c=0)=>c>2||null===a||"object"!=typeof a?[]:Array.isArray(a)?[b||"/",...a.length?[`${b}/0`]:[]]:Object.keys(a).slice(0,16).flatMap(d=>{let e=`${b}/${d.replace(/~/gu,"~0").replace(/\//gu,"~1")}`;return[e,...K(a[d],e,c+1)]}).slice(0,40),L=w?[{name:"read_receipt",housekeeping:!0,description:"按回执索引读取实际原回执(分页)或查看历史回执目录;目录只读、恢复原字都不算业务进展。默认只有最近一条业务回执常驻;retain=true 把所选页固定到后续上下文。原资料回执的翻页用产生它的原工具自己的分页参数;动态工作台视图可用本工具的 offset/limit。**不确定字段路径时先用 view=catalog 看目录、或用 outline=true 取字段大纲,按大纲里的实际 path 读取,不要猜层级。**",parameters:{type:"object",additionalProperties:!1,properties:{view:{type:"string",enum:["catalog","receipt","original"],description:"catalog=历史回执目录(分页);receipt=按 receiptId 读取(工作台页默认索引);original=返回完整原页"},receiptId:{type:"integer",minimum:0},receiptNamespace:{type:"string",description:"回执所属 actor 的命名空间;从当前 memory/catalog 复制。跨 actor 的同号回执不能互换。"},namespace:{type:"string",description:"receiptNamespace 的别名,二选一即可;两者都传时以 receiptNamespace 为准"},path:{type:"string",description:"JSON Pointer;默认整条回执"},part:{type:"string",enum:["result","arguments"]},retain:{type:"boolean",description:"true=把所选页固定到后续上下文(默认不常驻)"},outline:{type:"boolean",description:"只取所选页的字段大纲,不返回整页"},release:{type:"boolean",description:"取消该回执的固定(释放上下文,原回执仍永久保留)"},offset:{type:"integer",minimum:0},limit:{type:"integer",minimum:1,maximum:48},tool:{type:"string",description:"catalog:按工具名过滤"},query:{type:"string",description:"catalog:按查询参数关键词过滤"}}},housekeepingIdentity:a=>"catalog"===a.view||void 0===a.receiptId?"receipt-catalog:"+String(a.tool??"")+":"+String(a.query??"")+":"+String(a.offset??0):J("read_receipt",[a.receiptId,a.path??"",a.part??"result",a.view??"receipt",a.offset??0,a.limit??null]),invoke:c=>{if(A(c),"catalog"===c.view||void 0===c.receiptId){let a=x.observations.filter(a=>(!c.tool||a.name===c.tool)&&(!c.query||a.arguments.includes(String(c.query)))),b=Number(c.offset??0),d=a.slice(b,b+Number(c.limit??24));return{data:{view:"catalog",receiptNamespace:z,total:a.length,offset:b,records:d.map(a=>({receiptId:a.index,receiptNamespace:z,tool:a.name,query:r(a.arguments),retained:x.retained.includes(a.index)})),nextOffset:b+d.length<a.length?b+d.length:null,reading:"目录只读;用 read_receipt { receiptId } 按需取原字,不要重复读同一页。"}}}let d=String(c.path??""),e="arguments"===c.part?"arguments":"result",{observation:f,value:g,resolvedPath:h}=I(Number(c.receiptId),d,e),i=a.tools.find(a=>a.name===f.name)?.observationKind==="workspace-view",j=void 0!==c.offset||void 0!==c.limit;if(j&&!i&&!Array.isArray(g))throw Error(`回执 ${f.index}(${f.name})的路径「${d}」不是数组,不能用 offset/limit 分页;先按字段大纲读取实际字段,或改用产生这条回执的原工具自己的分页参数。`);let k=j?Number(c.offset??0):0,m=j?Math.min(Number(c.limit??24),200):24;if(j&&(!Number.isSafeInteger(k)||k<0||!Number.isSafeInteger(m)||m<1))throw Error("回执分页须使用非负整数 offset 及 1–200 的 limit");let n="result"===e&&(!d||"/data"===d)&&i,o=i?l(g,d,c.offset,c.limit):j&&Array.isArray(g)?{arrayPage:!0,path:d,total:g.length,offset:k,records:g.slice(k,k+m),nextOffset:k+m<g.length?k+m:null,originalAvailable:!0}:g;if(n&&"original"!==c.view&&!0!==c.retain||!0===c.outline)return{data:{view:"receipt",receiptId:f.index,receiptNamespace:z,originalTool:f.name,part:e,path:d,viewKind:"outline",originalAvailable:!0,value:s(g,d),reading:"原页未改写。按 path 读取所需原字段,大派生数组按 offset/limit 取全部原记录;动态工作台当前值用原工具按实体 ID 查。"}};let p=W(f.index)<=V,q=!0!==c.release&&(!0===c.retain||!b.contextLifecycle&&p&&(n?"original"===c.view:""===d&&"result"===e));return!0===c.release?(x.pinned=(x.pinned??[]).filter(a=>a!==f.index),x.retained=x.retained.filter(a=>a!==f.index),x.projections=x.projections?.filter(a=>a.observationIndex!==f.index),{data:{view:"receipt",receiptId:f.index,receiptNamespace:z,originalTool:f.name,released:!0,retained:!1,pinned:!1,originalAvailable:!0}}):(q&&(x.retained.includes(f.index)||x.retained.push(f.index),(x.pinned??=[]).includes(f.index)||x.pinned.push(f.index)),q&&!d&&"result"===e?(x.projections=x.projections?.filter(a=>a.observationIndex!==f.index),a.tools.some(a=>a.name===f.name&&(a.presentObservation||a.presentHistoryObservation||a.observationGroup))&&(x.projections??=[]).push({observationIndex:f.index,path:"",...b.contextLifecycle?{focusId:b.contextLifecycle.focusId}:{},...!0===c.retain?{pin:!0}:{}})):(d||"arguments"===e||j||b.contextLifecycle)&&(x.projections=x.projections?.filter(a=>a.observationIndex!==f.index||(a.path!==d||(a.part??"result")!==e)&&""!==a.path),(x.projections??=[]).push({observationIndex:f.index,path:d,..."arguments"===e?{part:"arguments"}:{},...b.contextLifecycle?{focusId:b.contextLifecycle.focusId}:{},...(i||Array.isArray(g))&&j?{offset:k,limit:m}:{},...!0===c.retain?{pin:!0}:{}})),{data:{view:"receipt",receiptId:f.index,receiptNamespace:z,originalTool:f.name,part:e,path:d,...h&&h!==d?{resolvedPath:h}:{},retained:x.retained.includes(f.index),pinned:(x.pinned??[]).includes(f.index),...!E(f)?{current:!1,historicalSnapshot:!0}:{},value:E(f)?o:F(o),validPaths:K(o,(h??d)||"")}})}}]:[],M=a.options?.taskKind==="reasoning"||a.options?.taskKind==="agent-action",N=0,O=M?[{name:"think",housekeeping:!0,description:"对当前确有复杂工程取舍、接口冲突或专业论证的问题,请求下一轮深入推演。须给出具体问题;下一轮保留相同模型、已读证据和全部工具,用供应商默认输出容量完成推演及行动,此后回到日常工具操作强度。普通查源、改字段、等子任务无需调用。此请求本身不算工程进展,也不代替计算或独立评审。",parameters:{type:"object",required:["question"],properties:{question:{type:"string",minLength:1}},additionalProperties:!1},invoke:c=>{if(void 0!==a.thinkBudget&&N>=a.thinkBudget)throw Error(`THINK_BUDGET_EXCEEDED:本职责推演次数已达上限 ${a.thinkBudget} 次;请依据已读证据直接行动或登记问题。`);return N+=1,b.deliberation={question:String(c.question)},{data:{nextTurn:"deliberation",question:c.question}}}}]:[],P=[...a.tools,...L,...O];if(new Set(P.map(a=>a.name)).size!==P.length)throw Error("业务工具与运行时工作记忆工具重名");P.sort((a,b)=>a.name.localeCompare(b.name));let Q=JSON.stringify(P.map(({name:a,description:b,parameters:c})=>({name:a,description:b,parameters:t(c)}))).length,R=(a,b)=>""===a||b===a||b.startsWith(a+"/"),S=a=>{let b=[];for(let c of a){let a=c.part??"result",d=a=>a.focusId===c.focusId&&a.pin===c.pin,e=(a,b)=>R(a.path??"",b.path??"")&&(void 0===a.offset&&void 0===a.limit||a.path===b.path&&a.offset===b.offset&&a.limit===b.limit);if(!b.some(b=>d(b)&&b.observationIndex===c.observationIndex&&(b.part??"result")===a&&e(b,c))){for(let f=b.length-1;f>=0;f-=1){let g=b[f];d(g)&&g.observationIndex===c.observationIndex&&(g.part??"result")===a&&e(c,g)&&b.splice(f,1)}b.push(c)}}return b},T=(a,c,d,f=!1)=>{if(f&&w&&M){let e=b.messages.findLast(a=>"assistant"===a.role);e&&void 0===e.thinkingContent&&e.toolCalls?.some(e=>e.name===a&&e.arguments===c&&b.executed[p([b.identity,b.rounds,e.id])]?.result===d)&&(f=!1)}let g=P.find(b=>b.name===a),h=f?g?.presentHistoryObservation??g?.presentObservation:g?.presentObservation??(g?.observationKind==="workspace-view"?g.presentHistoryObservation:void 0),i=m(d);if("read_receipt"===a){let a=(0,e.parseJsonWithoutDuplicateKeys)(c),b=JSON.parse(i),d=x.observations.find(b=>b.index===a.receiptId);if(b.performed&&b.data?.viewKind!=="outline"&&Object.hasOwn(b.data??{},"value")&&P.find(a=>a.name===d?.name)?.observationKind==="workspace-view"){let c=String(a.path??""),d="arguments"===a.part?"arguments":"result",e=I(Number(a.receiptId),c,d);return JSON.stringify({...b,data:{...b.data,value:l(e.value,c,a.offset,a.limit),originalAvailable:!0}})}}if(!h){if(f&&g?.observationKind==="workspace-view"){let a=JSON.parse(i);if(a.performed)return JSON.stringify({...a,data:{historicalViewIndexed:!0,originalAvailable:!0,fields:s(a.data,"/data")}})}return g?.observationKind==="workspace-view"?JSON.stringify(k(JSON.parse(i))):i}let j=JSON.parse(i);if(!0===j.originalObservationAvailable&&(!f||!g?.presentHistoryObservation))return g?.observationKind==="workspace-view"?JSON.stringify(k(j)):i;if(!j.performed)return i;let n={...j,data:h((0,e.parseJsonWithoutDuplicateKeys)(c),j.data),originalObservationAvailable:!0};return JSON.stringify(g?.observationKind==="workspace-view"?k(n):n)},U=a=>{if(!x.retained.includes(a.index)||!G(a))return!1;let b=P.find(b=>b.name===a.name),c=(0,e.parseJsonWithoutDuplicateKeys)(a.arguments);if(b?.observationGroup){let d=b.observationGroup(c);if(x.observations.some(c=>x.retained.indexOf(c.index)>x.retained.indexOf(a.index)&&c.name===a.name&&x.retained.includes(c.index)&&b.observationGroup((0,e.parseJsonWithoutDuplicateKeys)(c.arguments))===d))return!1}return!0},V=Number.isSafeInteger(a.memoryRetainedChars)&&Number(a.memoryRetainedChars)>=1e3?Number(a.memoryRetainedChars):8e3,W=a=>{let c=x.observations.find(b=>b.index===a),d=c&&b.executed[c.operationId];return d?String(d.result).length:0},X=()=>{(x.pinned?.length??0)>2&&(x.pinned=x.pinned.slice(-2));let a=0,b=[];for(let c of[...x.retained].reverse()){let d=W(c);b.length&&a+d>V||(b.push(c),a+=d)}x.retained=b.reverse(),x.pinned=(x.pinned??[]).filter(a=>b.includes(a))},Y=(a,b,c)=>{let d=P.find(b=>b.name===a);if(d?.observationGroup)try{let f=a+":"+d.observationGroup((0,e.parseJsonWithoutDuplicateKeys)(b));(x.lastRead??={})[f]=c}catch{}},Z=(a,c,d,e=!0)=>{if(!w||[...L,...O].some(b=>b.name===a.name))return;let f=p([a.name,a.arguments,d]),g=x.observations.find(a=>a.fingerprint===f);if(g){let c=U(g);return e&&b.contextLifecycle&&(g.focusId=b.contextLifecycle.focusId),e&&(x.retained=[...x.retained.filter(a=>a!==g.index),g.index]),Y(a.name,a.arguments,g.index),X(),{index:g.index,wasResident:c}}let h=x.observations.length;return x.observations.push({index:h,operationId:c,name:a.name,arguments:a.arguments,fingerprint:f,...b.contextLifecycle?{focusId:b.contextLifecycle.focusId}:{},dependencyKeys:B(a.arguments,d),dependencyVersions:C(a.arguments,d)}),x.retained.push(h),Y(a.name,a.arguments,h),X(),{index:h,wasResident:!1}};if(w){let a=new Map(b.messages.flatMap(a=>a.toolCalls??[]).map(a=>[p([a.name,a.arguments]),a]));for(let[c,d]of Object.entries(b.executed)){let b=a.get(d.inputHash);b&&!x.observations.some(a=>a.operationId===c)&&Z(b,c,d.result,!1)}}let $=a.progressSnapshot?.(),_=(c,d=[],e=!1,f=!0)=>{let g=d.filter(a=>!u.has(a));for(let a of d)u.add(a);let h=a.progressSnapshot?.(),i=void 0!==h&&h!==$;if(void 0!==h&&($=h),g.length||i)v.clear(),b.noProgressRounds=0,b.housekeepingSinceProgress=[],b.maintenanceErrorRounds=0,delete b.lastMaintenanceError,delete b.blockedReason;else if(e)b.maintenanceErrorRounds=0,delete b.lastMaintenanceError,b.messages.push({role:"user",content:`【运行反馈】${c}。本轮实际工具回执已保留,新证据已记入证据账(不算业务进展)。已有证据足够时形成或修订成果;仍需查证时明确不同的待查问题、范围或条件。`});else if(f){let d=a.stagnationGuidance?.();if(b.messages.push({role:"user",content:`【运行反馈\xb7状态未变化】${c}。本轮实际工具回执已保留;返回成功不代表出现新证据。`+(d?`下一步(按实际业务状态):${d}。`:"直接使用已读内容;若仍需查证,明确不同的待查问题、范围或条件,或根据已有证据修改并提交成果。")+"连续 3 轮状态与证据都未变化会暂停(不是失败,补充预算/处理原因后可继续)。"}),b.noProgressRounds=(b.noProgressRounds??0)+1,b.noProgressRounds>=(a.stagnationRoundLimit??3))throw new n(structuredClone(b),"stagnation",`连续 ${b.noProgressRounds} 轮业务状态与证据都未变化:${c}。`+(d?`下一步:${d}。`:"")+"检查点、原稿、已执行事务与费用账保留;处理停滞原因后可从 paused 继续。");v.add(c)}else{let a=c.slice(0,240);if(b.maintenanceErrorRounds=b.lastMaintenanceError===a?(b.maintenanceErrorRounds??0)+1:1,b.lastMaintenanceError=a,b.maintenanceErrorRounds>=5)throw new n(structuredClone(b),"stagnation",`维护/读取工具同一错误连续 ${b.maintenanceErrorRounds} 次:${c}。原回执、检查点与原稿保留;按回执里的可用字段改正,或换一个读取入口后再继续。`);b.messages.push({role:"user",content:`【运行反馈】${c}。本轮是维护/读取工具的使用错误,不计业务停滞;按回执里的可用字段改正后继续,不要原样重试。`})}b.progressKeys=[...u],b.stalledFeedback=[...v]},aa=async()=>{let i,k=!1,o=!1,r=new Set,s=async()=>{if(r.size)throw await c(),new n(structuredClone(b),"stagnation",`同一错误跨反馈累计达到 5 轮(跨进展):${[...r].map(a=>`${a}(${b.sameErrorRoundCounts[a]} 轮/${b.sameErrorCounts[a]} 次拒收)`).join(";")}。本批全部工具回执、检查点与费用账已保存;根据字段问题修正动作,不再重复支付同一失败。`)},t=[],v=[],y=[],B=!1,C=!1,D=b.messages.findLast(a=>"assistant"===a.role)?.toolCalls??[];if(b.pending.length>1&&b.pending.some(a=>P.find(b=>b.name===a.name)?.terminal)){for(let a of b.pending)b.messages.push({role:"tool",toolCallId:a.id,content:JSON.stringify({performed:!1,error:"成果提交与其他动作须分轮;本轮工具均未执行"})});return b.pending=[],_("成果提交与其他动作须分轮"),await c(),!1}let E=new Map;{let c=[];for(let a of b.pending){let d=P.find(b=>b.name===a.name),e=a.operationId??p([b.identity,b.rounds,a.id]);if(!d?.parallelSafe||d.terminal||d.waitForTasks||b.executed[e])break;c.push({call:a,operationId:e})}if(c.length>1){j();let b=Math.max(1,Math.floor(Number(f.N6?.agentToolCalls??4))),i=0,k=async(b,c)=>{try{let f=P.find(a=>a.name===b.name),h=(0,e.parseJsonWithoutDuplicateKeys)(b.arguments);if(!h||"object"!=typeof h||Array.isArray(h))throw Error("工具参数必须为对象");if(f.normalizeArgs){let d=f.normalizeArgs(h);h=d.args,d.paths.length&&a.onReceipt?.("lossless-normalization",{operationId:c,providerToolCallId:b.id,tool:b.name,paths:d.paths,originalArguments:b.arguments,normalizedArguments:h})}let i=(0,g.validateJsonAgainstSchema)(h,f.parameters);if(i.length)throw Error(i.join(";"));let k=d?await (0,g.awaitDocumentLlmOperation)(()=>Promise.resolve(f.invoke(h,c)),d):await f.invoke(h,c);if(j(),k?.finished&&k.suspended)throw Error("任务完成与依赖等待不能同时声明");return{result:k,args:h}}catch(a){if(d?.aborted||(0,h.U)(a))throw a;return{error:a instanceof Error?a.message:String(a)}}};await Promise.all(Array.from({length:Math.min(b,c.length)},async()=>{for(;;){let a=i;if(i+=1,a>=c.length)return;let{call:b,operationId:d}=c[a];E.set(d,k(b,d)),await E.get(d)}}))}}for(let f of[...b.pending]){let F;j();let G=p([f.name,f.arguments]),H=f.operationId??p([b.identity,b.rounds,f.id]),K=b.executed[H];if(K&&K.inputHash!==G)throw Error("同一工具调用身份绑定不同参数,不能重放");if(K){let a=JSON.parse(F=K.result);a.performed&&(a.finished||a.suspended)&&(b.result=a.data,k=!0,o=!!a.suspended)}else{let c,i,n,s,z=[];if(E.has(H)){let a=await E.get(H);c=a.result,(i=a.error)&&(C=!0);let b=P.find(a=>a.name===f.name);b?.housekeeping&&(s=b.name+":"+p([f.arguments])),b?.housekeeping&&b.housekeepingIdentity&&c&&(s=b.name+":"+b.housekeepingIdentity(a.args??{},c))}else try{let h=P.find(a=>a.name===f.name);if(!h)throw Error(`当前职责没有工具${f.name}`);if(h.waitForTasks){let a=D.slice(0,D.findIndex(a=>a.id===f.id)).find(a=>{let c=b.executed[p([b.identity,b.rounds,a.id])];if(!c)return!1;let d=JSON.parse(c.result);return!1===d.performed||!0===d.feedbackRequired});if(a)throw Error(`本批前序工具${a.name}未完成或需要处理反馈,本次未进入等待;先依据实际回执修正动作。其他已派发任务保持运行。`)}let i=(0,e.parseJsonWithoutDuplicateKeys)(f.arguments);if(!i||"object"!=typeof i||Array.isArray(i))throw Error("工具参数必须为对象");if(h.normalizeArgs){let b=h.normalizeArgs(i);i=b.args,b.paths.length&&a.onReceipt?.("lossless-normalization",{operationId:H,providerToolCallId:f.id,tool:f.name,paths:b.paths,originalArguments:f.arguments,normalizedArguments:i})}let k=(0,g.validateJsonAgainstSchema)(i,h.parameters);if(k.length)throw Error(k.join(";"));if("read_receipt"===h.name&&A(i),h.housekeeping&&(s="read_receipt"===h.name&&void 0!==i.receiptId?(()=>{let a=String(i.path??""),b="arguments"===i.part?"arguments":"result",{observation:c,value:d}=I(Number(i.receiptId),a,b),e=P.find(a=>a.name===c.name)?.observationKind==="workspace-view";return J(c.name,e?l(d,a,i.offset,i.limit):d,a,b)})():h.name+":"+p([f.arguments])),c=d?await (0,g.awaitDocumentLlmOperation)(()=>Promise.resolve(h.invoke(i,H)),d):await h.invoke(i,H),j(),c?.finished&&c.suspended)throw Error("任务完成与依赖等待不能同时声明");h.housekeeping&&h.housekeepingIdentity&&c&&(s=h.name+":"+h.housekeepingIdentity(i,c))}catch(a){if(d?.aborted||(0,h.U)(a))throw a;i=a instanceof Error?a.message:String(a),a instanceof Error&&a.stack&&console.error(`[gen] tool ${f.name} crashed: ${a.stack.split("\n").slice(0,8).map(a=>a.trim()).join(" | ")}`),["read_receipt","think"].includes(f.name)||(C=!0)}let K=function(a,b,c){let d=c?.data&&"object"==typeof c.data?c.data:void 0,e=d&&["submitted","previewed","ok","performed"].some(a=>!1===d[a]);if(!b&&!e||!b&&(d?.effective===!0||Array.isArray(d?.acceptedUnitIds)&&d.acceptedUnitIds.length))return;let f=b??JSON.stringify({error:d?.error,stage:d?.stage,issues:d?.issues}),g=[...new Set(f.match(/\b[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)+\b/gu)??[])].sort(),h=g.length?g.join("|"):f.replace(/「[^」]*」/gu,"「…」").replace(/[0-9a-f]{40,}/gu,"…").replace(/\b(?:receipt|unit|section|source|actor)[-:][\w:.-]+/gu,"id").replace(/\d+/gu,"#").slice(0,240);return`${a}:${h}`}(f.name,i,c);if(K){let a=b.sameErrorCounts??={},c=K in a||Object.keys(a).length<256?K:"overflow";a[c]=(a[c]??0)+1;let d=b.sameErrorRoundCounts??={},e=b.sameErrorLastRound??={};e[c]!==b.rounds&&(d[c]=(d[c]??0)+1,e[c]=b.rounds),d[c]>=5&&r.add(c)}F=JSON.stringify(i?{performed:!1,error:i}:{performed:!0,...c});let L=P.find(a=>a.name===f.name);if(!i&&!c?.feedbackRequired&&L?.housekeeping&&w){let a=q(f.arguments),b=x.observations.find(b=>b.name===f.name&&q(b.arguments)===a);b&&!U(b)&&(n=[J(f.name,JSON.parse(m(F)))])}if("separate-ledgers"===a.progressAccounting&&c&&!i){let a=b.progressLedger??={evidence:[],decisions:[],effective:[],delivery:[]},d=c.progressLedger??{evidence:c.progressKeys??[]};for(let b of["evidence","decisions","effective","delivery"]){let c=new Set(a[b]),e=(d[b]??[]).filter(a=>!c.has(a));if((d[b]??[]).some(a=>"string"!=typeof a||!a.trim()))throw Error("DOMAIN_PROGRESS_LEDGER_INVALID");a[b]=[...new Set([...c,...d[b]??[]])],"evidence"===b?y.push(...e):v.push(...e.map(a=>b+":"+a))}}if(B||=!!(i||c?.feedbackRequired),!i&&c&&!c.finished&&!c.feedbackRequired&&w&&(c.progressKeys??[]).every(a=>u.has(a))&&!P.find(a=>a.name===f.name)?.housekeeping){let a=JSON.parse(m(F)),b=J(f.name,a),d=P.find(a=>a.name===f.name)?.observationUnits,e=d?.(c.data).map(a=>"context-unit:"+p([f.name,a]))??[];if(e.length){let a=new Set,b=new Set;for(let c of x.observations.filter(a=>a.name===f.name)){let e=I(c.index,"").value;if(e.performed)for(let g of d(e.data)){let d="context-unit:"+p([f.name,g]);a.add(d),U(c)&&b.add(d)}}(z=e.filter(b=>!a.has(b))).length||(n=[...new Set(e.filter(a=>!b.has(a)))])}else{let a=x.observations.filter(a=>a.name===f.name&&J(a.name,I(a.index,"").value)===b);a.length&&!a.some(U)&&(n=[b])}}if(a.onReceipt?.("tool",{operationId:H,providerToolCallId:f.id,tool:f.name,arguments:f.arguments,inputHash:G,result:JSON.parse(F)}),b.executed[H]={inputHash:G,result:F},!i&&(c?.finished||c?.suspended))b.result=c.data,k=!0,o=!!c.suspended;else{let d=n?.length?n:void 0,e=i?[]:[...d??(s?[s]:[]),...P.find(a=>a.name===f.name)?.waitForTasks?c?.notificationKeys??[]:[]];if(e.some(a=>!b.housekeepingSinceProgress?.includes(a))){for(let a of[...c?.progressKeys??[],...z])u.has(a)||u.add(a);b.progressKeys=[...u],b.housekeepingSinceProgress=[...new Set([...b.housekeepingSinceProgress??[],...e])],d&&a.onReceipt?.("observation-context-restored",{operationId:H,tool:f.name,businessProgress:!1,noProgressRounds:b.noProgressRounds??0})}else{let a=!!(c&&"object"==typeof c.data&&null!==c.data&&!0===c.data.unchanged);i||a||(C=!0),t.push(i??(a?`工具${f.name}的提交与当前版本一致(unchanged),没有产生新版本;不要原样重提,继续下一段/下一单元或声明完成`:`工具${f.name}没有新增证据或有效状态变化`))}"separate-ledgers"!==a.progressAccounting&&v.push(...c?.progressKeys??[],...z)}}let L=Z(f,H,F),M=JSON.parse(F),N=M.performed&&M.data&&"object"==typeof M.data?M.data.invocationBoundary:void 0;if(N){if(!N.sectionId?.trim()||!N.state?.trim()||!N.reason?.trim())throw Error("DOMAIN_INVOCATION_BOUNDARY_INVALID");i={sectionId:N.sectionId,state:N.state,reason:N.reason,...N.key?{key:N.key}:{}}}let O=L?.index,Q=P.find(a=>a.name===f.name),R=L?.wasResident===!0&&Q?.readOnly===!0,S=R?JSON.stringify({performed:!0,data:{unchanged:!0,priorObservationIndex:O,originalTool:f.name,reading:`同参数、同结果已由回执 #${O} 返回;这是重复读取,不产生新证据。不要原样重试;按已有内容推进,需要原字用 read_receipt {receiptNamespace:"${z}",receiptId:${O}}。`}}):T(f.name,f.arguments,F);if(b.messages.push({role:"tool",toolCallId:f.id,content:a.formatToolMessage?.(f,S)??S}),R){let d=p([f.name,f.arguments,F]),e=(b.duplicateReadCounts?.[d]??0)+1;if(b.duplicateReadCounts={...b.duplicateReadCounts??{},[d]:e},e>=(a.stagnationRoundLimit??3))throw await c(),new n(structuredClone(b),"stagnation",`同一只读调用与结果已重复 ${e} 次(${f.name}):回执已给出 unchanged,不产生新证据。检查点、原稿与已执行事务保留;按已有内容推进,或换一个真实不同的待查问题/范围。`)}if(b.pending=b.pending.filter(a=>a.id!==f.id),k){if(b.pending.length)throw Error("提交完成与其他动作必须分轮,不能丢弃未执行工具");return await s(),b.status=o?"waiting":"completed",await c(),!0}await c()}return(await s(),i)?((v.some(a=>!u.has(a))||a.progressSnapshot&&a.progressSnapshot()!==$)&&_("已在实际节状态转换处交还运行循环",v),b.invocationBoundary=i,b.result={invocationBoundary:i},b.status="yielded",a.onReceipt?.("invocation-boundary",i),await c(),!0):(b.selectionNotice&&(b.messages.push({role:"user",content:b.selectionNotice}),delete b.selectionNotice),t.length&&("separate-ledgers"!==a.progressAccounting||!y.length||B||v.length?_([...new Set(t)].sort().join(";"),v,y.length>0,C):a.onReceipt?.("evidence-progress-only",{businessStagnationPreserved:!0,noProgressRounds:b.noProgressRounds??0})),await c(),!1)};try{if(await aa())return{result:b.result,checkpoint:b};for(;;){let f,i;if(j(),void 0!==a.maxRounds&&b.rounds>=a.maxRounds)throw new n(structuredClone(b),"budget",`调用数预算已用尽(${b.rounds}/${a.maxRounds}):检查点、原稿、已执行事务与费用账保留;补充预算后可从 paused 继续。`);let k=await a.directiveForTurn?.(),o=k&&b.observedExecutionContexts?.some(a=>a.id===k.id)?void 0:k;if(o&&(o.id!==b.directive?.id||o.reason!==b.directive?.reason)){if(!o.reason.trim()||o.id===b.directive?.id)throw Error("实时修订指令须有新的实际身份和具体原因");a.onReceipt?.("directive-update",{previous:b.directive,current:o,rounds:b.rounds}),b.directive=structuredClone(o),await c()}a.beforeRound?.(structuredClone(b));let q=await a.contextForTurn?.(),u="object"==typeof q?q.content:q,v="object"==typeof q?q.contentLive:void 0,A="object"==typeof q&&q.lifecycle.focusId!==b.contextLifecycle?.focusId;if("object"==typeof q){if(!q.lifecycle.focusId.trim())throw Error("DOMAIN_CONTEXT_FOCUS_REQUIRED");b.contextLifecycle=structuredClone(q.lifecycle)}let B=b.messages.findLast(a=>"assistant"===a.role);y=new Set((B?.toolCalls??[]).flatMap(a=>{let c=p([b.identity,b.rounds,a.id]),d=b.executed[c];return d&&D(a.name,d.result)?[c]:[]}));let C=(!A||y.size>0)&&!(void 0!==u&&w&&M&&B&&void 0===B.thinkingContent),H=new Set(C?B?.toolCalls?.map(a=>p([b.identity,b.rounds,a.id]))??[]:[]),J=C?(B?.toolCalls??[]).filter(a=>"read_receipt"===a.name).flatMap(a=>{try{let c=b.executed[p([b.identity,b.rounds,a.id])],d=c&&JSON.parse(c.result);if(!d?.performed||!Object.hasOwn(d.data??{},"value")||"outline"===d.data.view)return[];let f=(0,e.parseJsonWithoutDuplicateKeys)(a.arguments),g=String(f.path??""),h="arguments"===f.part?"arguments":"result";return!0===f.outline?[]:[{observationIndex:Number(f.receiptId),path:g,part:h,...void 0!==f.offset||void 0!==f.limit?{offset:Number(f.offset??0),limit:Number(f.limit??24)}:{}}]}catch{return[]}}):[],K=(a,b,c="result",d)=>J.some(e=>e.observationIndex===a&&e.part===c&&(!e.path||e.path===b||b.startsWith(e.path+"/"))&&(void 0===e.offset||e.path===b&&d?.offset===e.offset&&d?.limit===e.limit)),L=new Map,N=new Map,O=new Map,R=new Map,U=0;for(let a of x.observations.map(a=>a.index)){let c=x.observations.find(b=>b.index===a);if(!G(c))continue;let d=P.find(a=>a.name===c.name),f=JSON.parse(b.executed[c.operationId].result),g=f.performed?d?.observationEntities?.((0,e.parseJsonWithoutDuplicateKeys)(c.arguments),f.data):void 0;if(g)for(let a of(N.set(c.index,g),g)){let b=E(c)?a:{...a,value:{...F(a.value),current:!1,historicalSnapshot:!0}},d=c.name+":"+b.key;R.set(d,U++),(O.get(d)?.observationIndex??-1)<=c.index&&O.set(d,{observationIndex:c.index,operationId:c.operationId,tool:c.name,...b})}}let W=a=>{let c=P.find(b=>b.name===a.name)?.observationGroup;if(c&&JSON.parse(b.executed[a.operationId].result).performed)try{return a.name+":"+c((0,e.parseJsonWithoutDuplicateKeys)(a.arguments))}catch{return}};for(let a of x.observations.map(a=>a.index)){let b=x.observations.find(b=>b.index===a),c=W(b);c&&L.set(c,b.index)}let X=a=>{let b=W(a);return!b||(x.lastRead?.[b]??L.get(b))===a.index},Y=x.observations.filter(a=>x.retained.includes(a.index)&&G(a)&&!N.has(a.index)&&X(a)&&!H.has(a.operationId)&&!K(a.index,"")),Z=a=>{let b=P.find(b=>b.name===a.name);return b?.observationKind==="workspace-view"},$=[...Y.filter(a=>!Z(a)),...Y.filter(Z)],ab=a=>p([a.name,b.executed[a.operationId]?.result??""]),ac=new Map;for(let a of $)ac.set(ab(a),a.index);let ad=new Set(ac.values()),ae=$.filter(a=>ad.has(a.index)),af=$.length-ae.length,ag=new Set(ae.filter(a=>T(a.name,a.arguments,b.executed[a.operationId].result,!0)===m(b.executed[a.operationId].result)).map(a=>a.index));x.projections=S(x.projections??[]);let ah=(x.projections??[]).filter(a=>{let c=x.observations.find(b=>b.index===a.observationIndex);return c&&(a.pin||(x.pinned??[]).includes(c.index)||E(c)&&(a.focusId===b.contextLifecycle?.focusId||G(c)))}).filter(a=>!K(a.observationIndex,a.path,a.part,a)&&("arguments"===a.part||!ag.has(a.observationIndex))).map(a=>{let b=I(a.observationIndex,a.path,a.part),c=(!a.path||"/data"===a.path)&&!a.part&&!a.pin&&P.find(a=>a.name===b.observation.name)?.observationKind==="workspace-view",d=P.find(a=>a.name===b.observation.name)?.observationKind==="workspace-view",e=E(b.observation),f=c?s(b.value):d?l(b.value,a.path,a.offset,a.limit):Array.isArray(b.value)&&(void 0!==a.offset||void 0!==a.limit)?{arrayPage:!0,path:a.path,total:b.value.length,offset:a.offset??0,records:b.value.slice(a.offset??0,(a.offset??0)+(a.limit??24)),nextOffset:(a.offset??0)+(a.limit??24)<b.value.length?(a.offset??0)+(a.limit??24):null,originalAvailable:!0}:b.value;return{...a,originalTool:b.observation.name,...c?{historicalViewIndexed:!0,originalAvailable:!0}:{},...!e?{current:!1,historicalSnapshot:!0}:{},value:e?f:F(f)}}),ai=void 0===u?b.messages:[{role:"user",content:a.goal},...a.stableContext?[{role:"user",content:a.stableContext}]:[],{role:"user",content:"【当前实际状态】以下是本轮最新工作台与任务状态,是当前唯一权威状态:其后出现的任何历史回执仅证明当时观察,当前是否在途、取消、完成或失效以此处实际状态为准,不得用历史回执覆盖。"},{role:"user",content:u},...v?[{role:"user",content:v}]:[],...w?[{role:"user",content:JSON.stringify({retainedActualObservations:ae.map(a=>{let c=P.find(b=>b.name===a.name),d=JSON.parse(T(a.name,a.arguments,b.executed[a.operationId].result,!0)),e=JSON.stringify(d).length,f=e>Math.max(16e3,2*V),g=a.arguments.length>4e3;return{observationIndex:a.index,tool:a.name,...c?.historyArguments==="summary"||g?{argumentSummary:r(a.arguments),originalArgumentsAvailable:!0}:{arguments:a.arguments},...!E(a)?{current:!1,historicalSnapshot:!0}:{},result:f?{oversizedReceipt:!0,originalChars:e,originalAvailable:!0,outline:s(d.data,"/data"),reading:"本条回执超过本轮记忆预算,只给字段大纲;用 read_receipt { receiptNamespace, receiptId, path } 读取所需原字段,不要重跑原工具。"}:E(a)?d:F(d)}}),receiptNamespace:z,...af?{deduplicatedObservations:{count:af,reading:"内容完全相同的回执已合并,只保留最新一条;旧页原文仍可用 read_receipt 按 observationIndex 恢复。"}}:{},restoredActualObservationPaths:ah.length?ah:void 0,retainedEntityObservations:(()=>{let a=[...O.entries()].sort(([a],[b])=>(R.get(a)??0)-(R.get(b)??0)).map(([,a])=>a).filter(a=>!H.has(a.operationId)).map(({operationId:a,...b})=>b);return a.length>48?{entityWorkingSetIndexed:!0,total:a.length,recent:a.slice(-48),reading:"recent保留最近实际读过的48个对象原字段与版本,当前值资格看current;更早对象与完整原字仍在原回执,可按ID或observationIndex恢复。超过48不清空当前工作集,阅读次序不授予业务进展。"}:a})(),observationDirectory:[...new Set(x.observations.map(a=>a.name))].map(a=>{let b=x.observations.filter(b=>b.name===a);return{tool:a,count:b.length,firstObservationIndex:b[0].index,lastObservationIndex:b.at(-1).index,supersededViewCount:b.filter(a=>!X(a)).length}}),omittedObservations:(()=>{let a=x.observations.filter(a=>!x.retained.includes(a.index)||!G(a));return a.length?{count:a.length,records:a.slice(-24).map(a=>({observationIndex:a.index,tool:a.name,query:r(a.arguments)}))}:void 0})(),instruction:'以上是实际业务回执(默认只常驻**最近一条业务回执**与显式 retain 的页;更早的原字与全文永久留在后端,用 `read_receipt` 按 receiptId 与 JSON Pointer 恢复,同一条查询重查不算工程进展)。`omittedObservations` 是已经移出上下文的回执索引:需要旧页时用 `read_receipt { receiptId: observationIndex, view:"original" }` 恢复,不要用原工具重跑同一页;恢复不是工程进展。读取receiptId必须同时复制本上下文的receiptNamespace;别的actor的同号回执不能互换。retainedEntityObservations 是已读对象工作集:current=true 的原字段与版本仍可用,current=false 须按 ID 查当前值。`read_receipt { view:"catalog" }` 查看完整目录。不得把摘要当作重新读过或专业通过。'})}]:[],...(()=>{if(A&&!C)return[];let a=b.messages.length-1;for(;a>0&&"assistant"!==b.messages[a].role;)a--;return b.messages[a]?.role==="assistant"?C?b.messages.slice(a):b.messages.slice(a+1).filter(a=>"user"===a.role):[]})()];b.directive&&ai.push({role:"user",content:"execution-context"===b.directive.kind?`【已在恢复入口应用的一次性执行说明】${b.directive.reason}。迁移只在入口应用一次;后续计算、审查及已完成正文是否有效,以当前真实输入和回执为准,不能每轮再次作废或重算已核结果。本说明不替代当前专业目标或授予专业通过。`:`【主控对本任务的具体指令】${b.directive.reason}。原任务身份、来源、已执行账和无进展记录保留;指令本身不证明问题已解决,须实际行动与核验。`}),a.peerFeedback&&ai.push({role:"user",content:`【实际独立任务事件】${a.peerFeedback}`}),b.interruption&&ai.push({role:"user",content:`【上次响应中断】${b.interruption.reason}。中断响应中的工具没有执行,不能把其中的部分动作当作完成。旧原字、已执行回执和用量保留。依据当前工具选择更短的实际范围标识或分轮提交独立事务;复杂问题可请求一次深入推演,不重抄已有的大段静态成员目录。`}),b.deliberation&&ai.push({role:"user",content:`本轮针对以下实际问题深入推演并选择实际工具行动:${b.deliberation.question}`});let aj=a.memoryTrimLimit??a.requestBudget?.memory,ak=ai.find(a=>"user"===a.role&&"string"==typeof a.content&&a.content.startsWith('{"retainedActualObservations"'));if(aj&&ak&&ak.content.length>aj){let b=ak.content.length,c=JSON.parse(ak.content),d=[],e=a=>{x.retained=x.retained.filter(b=>b!==a),x.pinned=(x.pinned??[]).filter(b=>b!==a),x.projections=(x.projections??[]).filter(b=>b.observationIndex!==a)},f=()=>{let a=c.restoredActualObservationPaths;if(Array.isArray(a)&&a.length){let b=a.shift();return x.projections=x.projections?.filter(a=>a.observationIndex!==b.observationIndex||a.path!==b.path||a.part!==b.part||a.offset!==b.offset||a.limit!==b.limit),!0}let b=c.retainedEntityObservations;if(Array.isArray(b)&&b.length)return b.shift(),!0;if(b&&"object"==typeof b){let a=b.recent;if(Array.isArray(a)&&a.length)return a.shift(),!0}let f=c.retainedActualObservations;if(Array.isArray(f)&&f.length>1){let[a]=f.splice(0,1),b=Number(a.observationIndex??-1);return d.push({observationIndex:b,tool:String(a.tool??"")}),e(b),!0}if(Array.isArray(f)&&1===f.length){let a=f[0],b=a?.result;if(b&&!0!==b.oversizedReceipt)return a.result={oversizedReceipt:!0,originalChars:JSON.stringify(b).length,originalAvailable:!0,outline:s(b.data,"/data"),reading:"本轮输入分区超限:这条回执只给字段大纲;用 read_receipt 按 observationIndex 读取所需原字段,不要重跑原工具。"},!0}return!1};for(;ak.content.length>aj&&f();)c.omittedObservationCount=d.length,c.omittedActualObservations=d.slice(0,40),c.reading="本轮输入分区超限:最旧的已恢复路径/对象工作集/回执已从上下文移出。原回执永久保留,用 read_receipt 按 observationIndex 恢复;移出不是重新读取,也不授予业务进展。",ak.content=JSON.stringify(c);a.onReceipt?.("input-budget-trimmed",{section:"memory",limit:aj,before:b,after:ak.content.length,omitted:d.length})}let al=ai.find(a=>"user"===a.role&&"string"==typeof a.content&&a.content.startsWith('{"retainedActualObservations"'))?.content.length??0,am={system:a.system.length,goal:a.goal.length,stableContext:a.stableContext?.length??0,stablePrefix:a.system.length+a.goal.length+(a.stableContext?.length??0),tools:Q,memory:al,messageCount:ai.length,context:"string"==typeof u?u.length:0,contextLive:v?.length??0,messages:ai.reduce((a,b)=>a+b.content.length,0)},an=a.options?.actorId==="chief"?24e3:18e3,ao=0,ap={...a.options,system:a.system,messages:structuredClone(ai.map(c=>{if("tool"!==c.role)return c;let d=void 0!==u?B?.toolCalls?.find(a=>a.id===c.toolCallId):void 0;if(!d)return{...c,content:m(c.content)};let e=b.executed[p([b.identity,b.rounds,d.id])]?.result;if(!e)try{JSON.parse(c.content),e=c.content}catch{return c}let f=T(d.name,d.arguments,e),g=x.observations.find(a=>a.operationId===p([b.identity,b.rounds,d.id])),h=P.find(a=>a.name===d.name);if("read_receipt"!==d.name&&(g&&!E(g)||A&&(h?.readOnly||h?.observationKind==="workspace-view"))){let a=JSON.parse(e);if(a.performed)return{...c,content:JSON.stringify({performed:!0,data:{historicalSnapshot:!0,current:!1,originalAvailable:!0,...g?{receiptId:g.index,receiptNamespace:z}:{},outline:s(a.data,"/data"),reading:"本页是旧焦点或旧版本观察;原字仍可按回执恢复,当前值以本轮工作台为准。"}})}}let i=a.formatToolMessage?.(d,f)??f;if((ao+=i.length)>an&&i.length>3e3){let a=p([b.identity,b.rounds,d.id]),e=x.observations.find(b=>b.operationId===a)?.index,g=null;try{let a=JSON.parse(f);g=s(a.data,"/data")}catch{}return{...c,content:JSON.stringify({performed:!0,data:{batchToolReceiptOutlined:!0,tool:d.name,originalChars:i.length,...void 0===e?{}:{receiptId:e,receiptNamespace:z},outline:g,originalAvailable:!0,reading:"同批工具回执超出本轮输入预算,本条只给字段大纲;需要原字段时用 read_receipt { receiptNamespace, receiptId, path } 读取,或缩小查询后重试,不要重跑同一条查询。"}})}}return{...c,content:i}})),...M?{taskKind:b.deliberation?"reasoning":"agent-action",maxTokens:void 0}:{},tools:P.map(({name:a,description:b,parameters:c})=>({name:a,description:b,parameters:t(c)})),stablePrefixChars:a.system.length+a.goal.length+(a.stableContext?.length??0),requestSections:am,requireToolCall:!1,temperature:0,onRawResponse:c=>{f=c,a.onReceipt?.("raw-response",{round:b.rounds+1,response:c})}};if(Object.assign(am,(0,g.documentToolInputSections)(ap)),a.requestBudget){for(let[c,d]of Object.entries(a.requestBudget))if((am[c]??0)>d)throw new n(structuredClone(b),"budget",`CONSTRUCTION_INPUT_BUDGET_EXCEEDED:${c}:${am[c]} > ${d};本轮输入分区超限,拒绝构造(不静默截断)。`)}let{diagnostics:aq,signal:ar,onRawResponse:as,...at}=ap;a.onReceipt?.("request",{round:b.rounds+1,input:at,status:"prepared-provider-dispatch-recorded-separately"});try{i=d?await (0,g.awaitDocumentLlmOperation)(()=>(a.caller??g.callDocumentLlmWithTools)(ap),d):await (a.caller??g.callDocumentLlmWithTools)(ap)}catch(c){if(c instanceof g.DocumentLlmBudgetRefusedError)throw new n(structuredClone(b),"budget",`${c.message}。检查点、原稿、已执行事务与费用账保留;补充预算后可从 paused 继续。`);if(d?.aborted||(0,h.U)(c)||a.caller&&!a.callerErrorsAreProviderFailures)throw c;throw new h.u({agentIdentity:a.identity,round:b.rounds+1,kind:"provider-error",reason:`智能体模型调用失败:${c instanceof Error?c.message:String(c)}`,responseArchived:!!(f&&a.onReceipt)},{cause:c})}j(),b.rounds++,delete b.deliberation,a.onReceipt?.("response",{round:b.rounds,response:i});{let c=a.options?.actorId,d=c?[...a.options?.diagnostics?.llm.callLog??[]].reverse().find(a=>a.actorId===c&&Number.isSafeInteger(a.inputTokens)):void 0,e=i?.responseMetadata?.usage?.promptTokens,f=Number.isSafeInteger(e)?e:Number.isSafeInteger(d?.inputTokens)?d.inputTokens:void 0;a.onReceipt?.("input-token-observed",{round:b.rounds,promptTokens:f??null,source:Number.isSafeInteger(e)?"response-metadata":d?"call-ledger":"unreported"})}if(!i)throw new h.u({agentIdentity:a.identity,round:b.rounds,kind:"missing-response",reason:f?.responseMetadata?.completed===!1?"智能体响应未完整结束;工具未执行,原始回执与实际用量已保留":"智能体模型未返回响应",responseArchived:!!(f&&a.onReceipt)});if(i.responseMetadata?.completed===!1){let d=Array.isArray(i.droppedToolCalls)?i.droppedToolCalls:[];if("invalid-tool-arguments"===i.responseMetadata.protocolFailure&&["stop","tool_calls"].includes(i.responseMetadata.finishReason??"")&&(i.toolCalls.length||d.length)){for(let c of((i.content||i.toolCalls.length)&&b.messages.push({role:"assistant",content:i.content,...i.toolCalls.length?{toolCalls:i.toolCalls}:{},...void 0===i.thinkingContent?{}:{thinkingContent:i.thinkingContent}}),i.toolCalls)){let e=JSON.stringify({performed:!1,error:`完整运输响应的参数未通过解析,本轮均未执行:${JSON.stringify(d)};保留原字正文,只纠正语法与标注,不重写内容`});b.messages.push({role:"tool",toolCallId:c.id,content:a.formatToolMessage?.(c,e)??e})}if(!i.toolCalls.length){let a=d.map(a=>`${a.name??"未命名工具"}:${a.reason??a.code??"参数解析失败"}(参数 ${a.argumentsChars??"未知"} 字符)`).join(";");b.messages.push({role:"user",content:`上一轮工具调用参数未通过 JSON 解析,本轮未执行任何工具。${a?`原因:${a}。`:""}请重新输出**一个**工具调用;参数必须是合法 JSON,字符串内的换行与双引号必须转义,不要重复上一次的无效参数。`})}a.onReceipt?.("tool-protocol-invalid",{round:b.rounds,dropped:d,finishReason:i.responseMetadata.finishReason??null}),_("工具参数 JSON 解析失败,请纠正语法后重试",["tool-protocol-syntax-feedback"]),await c();continue}let e="invalid-tool-arguments"===i.responseMetadata.protocolFailure&&(void 0===i.responseMetadata.finishReason||null===i.responseMetadata.finishReason);if(("incomplete-stream"===i.responseMetadata.protocolFailure||e)&&0===i.toolCalls.length){let e=d.map(a=>`${a.name??"未命名工具"}:${a.reason??a.code??"参数未写完"}(参数 ${a.argumentsChars??"未知"} 字符)`).join(";");i.content&&b.messages.push({role:"assistant",content:i.content}),b.messages.push({role:"user",content:`上一轮供应商流在工具参数写完前结束(finish_reason=${i.responseMetadata.finishReason??"未报告"}),本轮没有可执行工具调用。`+(e?`已丢弃的调用:${e}。`:"")+"请重新输出**一个**完整工具调用;参数必须是合法 JSON,字符串内的换行与双引号必须转义。"}),a.onReceipt?.("tool-protocol-incomplete-stream",{round:b.rounds,finishReason:i.responseMetadata.finishReason??null,protocolFailure:i.responseMetadata.protocolFailure??null,dropped:d}),_("供应商流在工具参数写完前结束,请重新输出完整调用",["tool-protocol-incomplete-stream"]),await c();continue}throw new h.u({agentIdentity:a.identity,round:b.rounds,kind:"incomplete-response",reason:"智能体响应未完整结束;工具未执行,保留真实响应与用量",responseArchived:!!a.onReceipt})}if(b.directive?.kind==="execution-context"){let d=structuredClone(b.directive);b.observedExecutionContexts?.some(a=>a.id===d.id)||(b.observedExecutionContexts??=[]).push(d),delete b.directive,a.onReceipt?.("execution-context-observed",{id:d.id,businessProgress:!1,originalDirectivePreserved:!0}),await c()}if(new Set(i.toolCalls.map(a=>a.id)).size!==i.toolCalls.length)throw Error("同轮供应商工具身份重复,未执行候选工具");delete b.interruption;let au=a.selectCalls?.(i.toolCalls)??{calls:i.toolCalls};if(au.calls.some(a=>!i.toolCalls.includes(a)))throw Error("传输选择器不能制造模型未请求的工具");if(!au.calls.length&&i.toolCalls.length){b.messages.push({role:"user",content:au.notice??"本轮工具请求未执行"}),_("显式工具额度仅保留成果提交,读取请求未执行"),await c();continue}if(b.selectionNotice=au.notice,b.messages.push({role:"assistant",content:i.content,toolCalls:au.calls,...void 0===i.thinkingContent?{}:{thinkingContent:i.thinkingContent}}),b.pending=au.calls.map(a=>({...a,operationId:p([b.identity,b.rounds,a.id])})),await c(),!i.toolCalls.length){_("普通文本未执行工具或提交成果"),b.messages.push({role:"user",content:"当前文字尚未完成任务。请按实际证据选择工具继续,或通过成果提交工具提交可核验结果。"}),await c();continue}if(await aa())return{result:b.result,checkpoint:b}}}catch(e){let a=!d?.aborted&&e instanceof n;throw b.status=a?"paused":"interrupted",a&&(b.blockedReason=e.reason,b.blockedMessage=e instanceof Error?e.message:String(e)),(0,h.U)(e)&&e.receipt.agentIdentity===b.identity&&(b.interruption=structuredClone(e.receipt)),await c(),(0,h.U)(e)&&(0,i.Er)(e),e}}}};
|