@customize-agent/server 4.60.12 → 4.60.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +61 -61
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +1 -1
  5. package/.next/server/chunks/1243.js +1 -1
  6. package/.next/server/chunks/1928.js +1 -1
  7. package/.next/server/chunks/1936.js +9 -9
  8. package/.next/server/chunks/2328.js +1 -1
  9. package/.next/server/chunks/4722.js +3 -3
  10. package/.next/server/chunks/6021.js +1 -0
  11. package/.next/server/chunks/6321.js +1 -1
  12. package/.next/server/chunks/6822.js +1 -1
  13. package/.next/server/chunks/8204.js +1 -1
  14. package/.next/server/chunks/9666.js +13 -13
  15. package/.next/server/instrumentation.js.nft.json +1 -1
  16. package/.next/server/middleware-build-manifest.js +1 -1
  17. package/.next/server/pages/404.html +1 -1
  18. package/.next/server/pages/500.html +1 -1
  19. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  20. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  21. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  22. package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -1
  23. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  24. package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -1
  25. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  26. package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -1
  27. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -1
  28. package/.next/server/pages/api/documents/generated/[id]/instruction.js.nft.json +1 -1
  29. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -1
  30. package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -1
  31. package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -1
  32. package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -1
  33. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +1 -1
  34. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -1
  35. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -1
  36. package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -1
  37. package/.next/server/pages/api/documents/generated/[id]/report.js.nft.json +1 -1
  38. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -1
  39. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  40. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  41. package/.next/server/pages/api/health.js +1 -1
  42. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  43. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  44. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  45. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  46. package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
  47. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  48. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  49. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  50. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  51. package/.next/server/pages/api/kb/files/source-preview.js.nft.json +1 -1
  52. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  53. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  54. package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -1
  55. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  56. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  57. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  58. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  59. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  60. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  61. package/.next/server/pages/api/system/reset.js.nft.json +1 -1
  62. package/.next/server/pages/canvas/[id].html +1 -1
  63. package/.next/server/pages/canvas.html +1 -1
  64. package/.next/server/pages/documents.html +1 -1
  65. package/.next/server/pages/guide.html +1 -1
  66. package/.next/server/pages/index.html +1 -1
  67. package/.next/server/pages/knowledge/file-detail.html +1 -1
  68. package/.next/server/pages/knowledge/files.html +1 -1
  69. package/.next/server/pages/knowledge/manage.html +1 -1
  70. package/.next/server/pages/knowledge/source-preview.html +1 -1
  71. package/.next/server/pages/knowledge.html +1 -1
  72. package/.next/server/pages/models.html +1 -1
  73. package/.next/server/pages/overview.html +1 -1
  74. package/.next/server/pages/prompt.html +1 -1
  75. package/.next/server/pages/settings.html +1 -1
  76. package/.next/server/pages/skills/[id]/edit.html +1 -1
  77. package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
  78. package/.next/server/pages/skills/[id].html +1 -1
  79. package/.next/server/pages/skills/[id].js.nft.json +1 -1
  80. package/.next/server/pages/skills/new.html +1 -1
  81. package/.next/server/pages/skills/new.js.nft.json +1 -1
  82. package/.next/server/pages/skills.html +1 -1
  83. package/.next/server/pages/system/logs.html +1 -1
  84. package/.next/server/pages-manifest.json +43 -43
  85. package/.next/static/c097c482b89445ecd5af066c8dcae41fe044bfa13f1e971756cbd620b20de70d/_buildManifest.js +1 -0
  86. package/.next/static/chunks/162-36b2a3e6ee7d9717.js +8 -0
  87. package/.next/static/chunks/257-879f095890deadad.js +1 -0
  88. package/.next/static/chunks/313-4b3ff7075e0ff3c3.js +1 -0
  89. package/.next/static/chunks/530-98c3b3fbf3fcd8e3.js +1 -0
  90. package/.next/static/chunks/551-446a9d48add4944f.js +16 -0
  91. package/.next/static/chunks/715-6285c5942e5ec5ea.js +1 -0
  92. package/.next/static/chunks/717-743b697a417dd5ee.js +4 -0
  93. package/.next/static/chunks/748-e13db510f76568b1.js +1 -0
  94. package/.next/static/chunks/795-3edd02531a6d39ae.js +1 -0
  95. package/.next/static/chunks/955-f0542d4dea118b62.js +1 -0
  96. package/.next/static/chunks/{964-569c27befeaff602.js → 964-82cc4701f08f7351.js} +2 -2
  97. package/.next/static/chunks/pages/{_app-28228d95968c4d44.js → _app-4165169ba0fabd04.js} +1 -1
  98. package/.next/static/chunks/pages/canvas/[id]-792d02e3874c19c0.js +1 -0
  99. package/.next/static/chunks/pages/{canvas-ffb08963e5cf9558.js → canvas-e011bb88585d3441.js} +1 -1
  100. package/.next/static/chunks/pages/guide-3185f12fbcb5a6af.js +1 -0
  101. package/.next/static/chunks/pages/knowledge/file-detail-c34e1f995fb8316f.js +1 -0
  102. package/.next/static/chunks/pages/knowledge/source-preview-814c683fc3723177.js +1 -0
  103. package/.next/static/chunks/pages/knowledge-3afd4bc337d44550.js +1 -0
  104. package/.next/static/chunks/pages/models-e07b2e29595effd7.js +1 -0
  105. package/.next/static/chunks/pages/prompt-47a1ac955831dedb.js +1 -0
  106. package/.next/static/chunks/pages/settings-8879d8c90bee2025.js +1 -0
  107. package/.next/static/chunks/pages/skills/[id]/{edit-89bbed9a3a854b04.js → edit-88e2490a4190467b.js} +1 -1
  108. package/.next/static/chunks/pages/skills/[id]-4700cd743c5efe05.js +1 -0
  109. package/.next/static/chunks/pages/skills/{new-124599c772150a1d.js → new-b2204742b055565a.js} +1 -1
  110. package/.next/static/chunks/pages/skills-1f6bcb42cd90abeb.js +1 -0
  111. package/.next/static/chunks/pages/system/logs-8c5dd4d06fa9d8c9.js +1 -0
  112. package/.next/static/css/cb79b8022e718258.css +1 -0
  113. package/package.json +2 -2
  114. package/scripts/half-built-scan.baseline.json +3 -4
  115. package/.next/server/chunks/9399.js +0 -1
  116. package/.next/static/b1bfae7c0251c082ada423097236fed51bd95e3e34a0749ccd55030dbf543f5d/_buildManifest.js +0 -1
  117. package/.next/static/chunks/162-a5be07e04aedf98a.js +0 -8
  118. package/.next/static/chunks/2-434e34e83819f4e4.js +0 -1
  119. package/.next/static/chunks/257-6938c7ab284ab21c.js +0 -1
  120. package/.next/static/chunks/280-3ce590d421b5c47d.js +0 -16
  121. package/.next/static/chunks/324-650dc02536b071bf.js +0 -4
  122. package/.next/static/chunks/425-42f2568bcdd98f4c.js +0 -1
  123. package/.next/static/chunks/530-7e79396d68742829.js +0 -1
  124. package/.next/static/chunks/564-d3426eef3e3e415b.js +0 -4
  125. package/.next/static/chunks/781-a6b83dbcd1a33cab.js +0 -1
  126. package/.next/static/chunks/795-1c1cb3bf1f600e99.js +0 -1
  127. package/.next/static/chunks/819-96247c9054ad9683.js +0 -1
  128. package/.next/static/chunks/pages/canvas/[id]-534b45f39f39630c.js +0 -1
  129. package/.next/static/chunks/pages/guide-82ae330966139191.js +0 -1
  130. package/.next/static/chunks/pages/knowledge/file-detail-dc1807f8ed32cd59.js +0 -1
  131. package/.next/static/chunks/pages/knowledge/source-preview-4309277bf497521c.js +0 -1
  132. package/.next/static/chunks/pages/knowledge-84e386d765ddd311.js +0 -1
  133. package/.next/static/chunks/pages/models-5eee2d09deb081fb.js +0 -1
  134. package/.next/static/chunks/pages/prompt-d75de6a6fead73c9.js +0 -1
  135. package/.next/static/chunks/pages/settings-f6dfff648cf9ac0e.js +0 -1
  136. package/.next/static/chunks/pages/skills/[id]-5130d68546be49cb.js +0 -1
  137. package/.next/static/chunks/pages/skills-476714776be63ce5.js +0 -1
  138. package/.next/static/chunks/pages/system/logs-40edb648d89b0749.js +0 -1
  139. package/.next/static/css/f4f2d386cfeae8e4.css +0 -1
  140. /package/.next/static/{b1bfae7c0251c082ada423097236fed51bd95e3e34a0749ccd55030dbf543f5d → c097c482b89445ecd5af066c8dcae41fe044bfa13f1e971756cbd620b20de70d}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
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(55035),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)}
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
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(21123),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
3
  ${e.base.writerContext.promptTexts}`,prompt:`用户原话:${a.request.userMessage}
4
4
  当前固定任务:${JSON.stringify(c)}