@customize-agent/server 4.60.37 → 4.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/1710.js +1 -0
- package/.next/server/chunks/3074.js +1 -1
- package/.next/server/chunks/3239.js +5 -5
- package/.next/server/chunks/5037.js +2 -2
- package/.next/server/chunks/5763.js +2 -2
- package/.next/server/chunks/9270.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
- package/.next/server/pages/api/config/embedding.js.nft.json +1 -1
- package/.next/server/pages/api/config/healthCheck.js.nft.json +1 -1
- package/.next/server/pages/api/config/models.js.nft.json +1 -1
- package/.next/server/pages/api/config/providers/[provider].js.nft.json +1 -1
- package/.next/server/pages/api/config/providers.js.nft.json +1 -1
- package/.next/server/pages/api/config/reset.js.nft.json +1 -1
- package/.next/server/pages/api/config/web-access.js.nft.json +1 -1
- package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/delivery-review.js.nft.json +1 -1
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- 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.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/instruction.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/messages.js.nft.json +1 -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.nft.json +1 -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.nft.json +1 -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.nft.json +1 -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.nft.json +1 -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.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/health.js.nft.json +1 -1
- package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
- package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
- package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
- package/.next/server/pages/api/kb/features.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/export.js.nft.json +1 -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.nft.json +1 -1
- package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/source-preview.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files.js.nft.json +1 -1
- package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
- package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -1
- package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
- package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
- package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
- package/.next/server/pages/api/prompt/chat.js.nft.json +1 -1
- package/.next/server/pages/api/skills/[id].js.nft.json +1 -1
- package/.next/server/pages/api/skills/validate.js.nft.json +1 -1
- package/.next/server/pages/api/skills.js.nft.json +1 -1
- package/.next/server/pages/api/system/data-health.js.nft.json +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/generation/[id].html +1 -1
- package/.next/server/pages/generation.html +1 -1
- package/.next/server/pages/jobs.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/source-preview.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/skills/[id]/edit.html +1 -1
- package/.next/server/pages/skills/[id].html +1 -1
- package/.next/server/pages/skills/new.html +1 -1
- package/.next/server/pages/skills.html +1 -1
- package/.next/server/pages-manifest.json +35 -35
- package/.next/static/{32e126df53e20cd9bcca5e12141140949358a0d11d2383f7242277a4f8acbf1d → 317fea8baac62973504b896cd4a4949fbe758b61932a9d7bd265b7891a57e0ff}/_buildManifest.js +1 -1
- package/package.json +1 -1
- /package/.next/static/{32e126df53e20cd9bcca5e12141140949358a0d11d2383f7242277a4f8acbf1d → 317fea8baac62973504b896cd4a4949fbe758b61932a9d7bd265b7891a57e0ff}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";exports.id=3239,exports.ids=[3239],exports.modules={25620:(a,b,c)=>{c.r(b),c.d(b,{constructionCapabilityCatalog:()=>aq,constructionModelIdentity:()=>
|
|
2
|
-
不是本次冻结清单的有效 memberIndices(有效范围 0..${Math.max(0,ay.length-1)})`);let aC=a.scope?.memberIndices?.length?[...a.scope.memberIndices]:ay.map(a=>a.index),aD=a.scope?.sectionIds?.length?[...a.scope.sectionIds]:a.contract.sections.map(a=>a.id),aE=a.scope?.sectionIds?.length?[...new Set(a.scope.sectionIds)]:void 0,aF=new Set,aG=new Map,aH=a.artifactDir??a.generatedDir,aI=a.nodeLogBaseDir??aH,aJ=(0,t.QG)(),aK=a.planningContext?.sourceLedger.entries.filter(a=>"read"!==a.readStatus)??[],aL=aE?new Set(aE):void 0,aM=a.contract.sections.filter(a=>!aL||aL.has(a.id)),aN=a.contract.chapters.filter(a=>aM.some(b=>b.chapterId===a.id)),aO=a.chiefGoal??(0,t.IC)({projectName:a.projectName,title:a.title,requirement:a.requirement,documentTitle:a.title,chapterTitles:aN.map(a=>a.title),sectionIds:aD,sectionDirectory:aM.map(b=>({id:b.id,title:b.title,chapterId:b.chapterId,chapterTitle:a.contract.chapters.find(a=>a.id===b.chapterId)?.title??""})),workPackageCount:ay.length,memberCount:ay.length,sourceFiles:aA,...a.scope?{scope:{sectionTitles:aD.map(b=>a.contract.sections.find(a=>a.id===b)?.title??b),...a.scope.memberIndices?.length?{memberIndices:a.scope.memberIndices}:{}}}:{},...a.planningContext?{planning:{requiredOutputs:a.planningContext.outputObligations.filter(a=>"domain-baseline"===a.kind||(0,C.oY)(a)).map(a=>({element:a.element,form:a.form,status:"domain-baseline"===a.kind?"施工组织设计垂直领域基线(建议出图;确不适用的可按 outputExceptions 写明理由与等效载体,由独立审查接受)":"招标明确要求(必须出)"})),contractObligations:a.planningContext.contractObligations.filter(C.Ln).map(a=>({id:a.id,text:a.text,kind:a.kind,...a.items?.length?{items:a.items}:{}})),factsBaseline:a.planningContext.factsBaseline.map(a=>{let b=a.selected?(0,ak.D)(a.selected.value,160):void 0;return{key:a.key,...a.objectName?{objectName:a.objectName}:{},...a.condition?{condition:a.condition}:{},status:a.status,...a.selected&&b?{value:b.text+(b.truncated?`…(另 ${b.remainingChars} 字未展示,按需读取)`:""),sourceFile:a.selected.sourceFile}:{},..."conflict"===a.status?{alternatives:a.values.map(a=>({value:(0,ak.D)(a.value,80).text,sourceFile:a.sourceFile}))}:{}}}),factConflicts:a.planningContext.sourceLedger.conflicts.map(a=>({key:a.key,...a.objectName?{objectName:a.objectName}:{},...a.condition?{condition:a.condition}:{},resolution:a.resolution,rule:a.rule})),sourceSummary:a.planningContext.sourceLedger.byClass,unreadSources:aK.slice(0,40).map(a=>({filePath:a.filePath,readStatus:a.readStatus,unknowns:a.unknowns})),unreadSourceCount:aK.length,...aK.length>40?{unreadSourcesNote:`仅列前 40 份;其余 ${aK.length-40} 份按 filePath/序号用 read_scope 读取,不能当作不存在`}:{},tenderProfile:a.planningContext.tenderProfile,professionalCandidates:a.planningContext.professionalCandidates.map(a=>({chapterTitle:a.chapterTitle,sectionCandidates:a.sectionCandidates.map(a=>a.title),contentRequirements:a.contentRequirements.map(a=>({title:a.title,attachTo:a.attachTo}))})),extraction:a.planningContext.provenance.extraction??null}}:{}}),aP=()=>{},aQ=()=>{},aR=()=>{},aS=function(a){let b=(0,k.openConstructionWorkspace)(a.workspaceInput),c={beforeModelCall:a.beforeModelCall,...a.earlyDrafts?{adoptEarlyDrafts:a.earlyDrafts.adopt,sectionAuthorAttempts:a.earlyDrafts.authorAttempts}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.structurePlan?{structurePlan:a.structurePlan,sectionContracts:a.sectionContracts}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.confirmed?{confirmed:a.confirmed}:{},...a.jsonCaller?{jsonCaller:a.jsonCaller}:{},executionBaselineRef:a.executionBaselineRef,...a.blockedSections?{blockedSections:a.blockedSections}:{},store:b.store,project:a.workspaceInput.project,contract:a.workspaceInput.contract,authority:{actorId:"chief",memberIndices:[...a.memberIndices],sectionIds:[...a.sectionIds],canManageSharedResources:!0},clock:{timelineId:`document-run-${a.workspaceInput.identity.documentId}`,timeUnit:{unit:"hour",ticksPerUnit:1},horizon:8760},buildId:a.workspaceInput.sourceBuildId,generatedDir:a.generatedDir,nodeLogBaseDir:a.nodeLogBaseDir??a.generatedDir,runId:a.runId,...a.budget?{budget:a.budget}:{},system:a.chiefSystem,goal:a.chiefGoal,initialFocus:{purpose:"method-decision",entityIds:[]},permissions:["read-current","work-package","source-allocation","production","shared-definition","professional-decision","writing"],toolFace:["read-current","work-package","shared-definition","professional-decision"],authorizeRead:()=>!0,responsibilityKind:"document-chief",caller:a.caller,evidence:{projectRoot:i().resolve(a.projectRoot),scopeRootNames:[...a.scopeRootNames],skills:[...a.skills],toolNames:[...ap]},...a.onReceipt?{onReceipt:a.onReceipt}:{},...a.onBusinessCommit?{onBusinessCommit:a.onBusinessCommit}:{},...a.onProgressBoundary?{onProgressBoundary:a.onProgressBoundary}:{},...a.signal?{signal:a.signal}:{}},e=a.diagnostics??(0,_.createGenerationDiagnostics)(),f=Promise.resolve(),g=async()=>{let a=f,b=()=>{};return f=new Promise(a=>{b=a}),await a,b},h={...c,diagnostics:e,sourceCoverageLock:g},j=(0,l._)({chief:h,profiles:a.profiles});return{store:b.store,created:b.created,chief:h,coordinator:j,diagnostics:e,onReceipt:(b,c)=>a.onReceipt?.(b,c),unbindSectionContracts:a.sectionContracts?(0,d.Ep)(b.store,a.sectionContracts):void 0,...b.migration?{migration:b.migration}:{}}}({beforeModelCall:a.earlyDrafts?()=>aR():void 0,earlyDrafts:a.earlyDrafts,workspaceInput:ax,runId:a.runId,chiefSystem:aJ,chiefGoal:aO,profiles:aw,memberIndices:aC,sectionIds:aD,generatedDir:aH,...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.structurePlan?{structurePlan:a.structurePlan,sectionContracts:a.sectionContracts}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.confirmed?{confirmed:a.confirmed}:{},jsonCaller:a.jsonCaller??Y.callDocumentLlmJson,executionBaselineRef:al,blockedSections:aF,nodeLogBaseDir:aI,projectRoot:a.projectRoot,skills:av,scopeRootNames:a.scopeRootNames,caller:ar,budget:ad,...a.diagnostics?{diagnostics:a.diagnostics}:{},onReceipt:(b,c)=>{a.onReceipt?.(b,c),b.startsWith("construction-progress-")||aP()},onBusinessCommit:()=>{a8=!0},onProgressBoundary:()=>aQ(),...a.signal?{signal:a.signal}:{}}),{store:aT,coordinator:aU,diagnostics:aV}=aS,aW=[...new Set([...a.scope?.sectionIds??[],...a.contract.sections.map(a=>a.id)])],aX=()=>(0,n.r0)({sections:aW,calls:(aV.llm.callLog??[]).map(b=>({inputTokens:b.inputTokens,providerAttempts:b.transportActivities?b.transportActivities.filter(a=>"not-started"!==a.providerInvocation).length:b.providerAttempts,unknownAttempts:(()=>{let a=b.transportActivities?.filter(a=>"not-started"!==a.providerInvocation);return a?a.filter(a=>!a.usage).length:0})(),sectionId:b.sectionId??(b=>{let c=b?aT.actor(b):void 0,d=c?.definition.sectionIds??[];return 1===d.length?d[0]:a.earlyDrafts?.sectionOfActor(b)})(b.actorId),role:(0,o.K)(b.kind)?"review":"reasoning"===b.taskKind?"think":"chief"===b.actorId?"chief":"author"}))},{unknownCallUpperBound:ad.perSection.maxInputTokens}),aY=()=>a.structurePlan?(0,R.F_)(a.structurePlan).map(({section:b,chapter:c},d)=>{let e=(0,E.Pp)(aT,b.sectionId),f=a.sectionPlans?.get(b.sectionId),g=(0,y.rz)(aT,b.sectionId).length,h=aE&&!aE.includes(b.sectionId)?"out-of-scope":e?"planned"===e.phase?f?"section-planned":"planned":e.phase:"untracked";return{sectionId:b.sectionId,chapterTitle:c.title,title:b.title,order:d+1,phase:h,sectionPlanned:!!f,unitCount:g,locked:e?.phase==="locked",...e?.reason?{reason:e.reason}:{}}}):void 0;al.current=(0,V.nu)(aT);let aZ=aS.chief,a$=aS.onReceipt,a_="provisional-source-ownership",a0=()=>{let b=(0,V.qN)(aT,a.project).filter(a=>a.sectionIds.some(a=>aD.includes(a))),c=new Set(b.flatMap(a=>a.sectionIds).filter(a=>aD.includes(a)));return{packages:b,coveredSectionIds:[...c],missingSectionIds:aD.filter(a=>!c.has(a)),missingAllocations:[],overAllocated:[]}},a1=!!a.planningContext,a2=!1,a3=async()=>{if(!a1)return;if(al.current){let b=al.current,c=(0,V.PE)({store:aT,project:a.project,sectionIds:aD,allocationMode:a_}),d=new Set(b.coveredSectionIds??[]);if(b.workPackageSetHash===c.workPackageSetHash&&b.allocationSetHash===c.allocationSetHash&&aD.every(a=>d.has(a))){a2=!0,(0,af.Jv)({generatedDir:aH,fileName:"execution-baseline.json",value:b,runId:a.runId});return}a$("construction-run-execution-baseline-stale",{reason:"工作包集合/分配/覆盖章节已变化,重编基准",previous:{workPackageSetHash:b.workPackageSetHash??null,allocationSetHash:b.allocationSetHash??null},current:{workPackageSetHash:c.workPackageSetHash,allocationSetHash:c.allocationSetHash}}),al.current=void 0,a2=!1}let b=a0();if(b.missingSectionIds.length)throw Error(`EXECUTION_BASELINE_SECTION_UNCOVERED:${b.missingSectionIds.length} 个章节没有工作包`);if(b.missingAllocations.length)throw Error(`EXECUTION_BASELINE_ALLOCATION_MISSING:${b.missingAllocations.length} 个工作包成员没有原量分配`);let c=await (0,V.du)({store:aT,project:a.project,sectionIds:aD,allocationMode:a_,...a.planningContext?{planningContext:a.planningContext}:{},caller:a.jsonCaller??Y.callDocumentLlmJson,diagnostics:aV,signal:a.signal,artifactDir:aH,runId:a.runId,laborPolicy:Z.Qk.p??null}),d=(0,V.ZO)({store:aT,baseline:c.baseline,runId:a.runId});al.current=c.baseline,a2=!0,(0,af.Jv)({generatedDir:aH,fileName:"execution-baseline.json",value:c.baseline,runId:a.runId}),a$("construction-run-execution-baseline",{workPackages:b.packages.length,batches:c.coverage.batches,members:c.coverage.members,written:d})},a4=()=>{let a=a0();return{coverage:a,ready:!a.missingSectionIds.length&&!a.missingAllocations.length&&!a.overAllocated.length}},a5=()=>{if(!a1||f)return Promise.resolve();if(c)return c;let a={};return a.current=(async()=>{try{await a3()}catch(b){let a=b instanceof Error?b.message:String(b);/^EXECUTION_BASELINE_(SECTION_UNCOVERED|ALLOCATION_MISSING)/u.test(a)?a$("construction-run-execution-baseline-deferred",{reason:a}):f=a}finally{c===a.current&&(c=void 0)}})(),c=a.current,a.current},a6=()=>{if(!a1||c||a2&&al.current||f)return;let{coverage:a,ready:b}=a4();b&&(a$("construction-run-execution-baseline-started",{workPackages:a.packages.length,members:a.packages.reduce((a,b)=>a+b.members.length,0)}),a5())},a7=async()=>{if(c&&await c,f)throw Error(f)};if((0,ab.bindRunModelConfiguration)(aV,a),(0,aa.bindDocumentCallLedger)(aV,{generatedDir:aH,runId:a.runId}),(0,af.tv)(aH,"run-start.json",{at:new Date().toISOString(),runId:a.runId,documentId:a.documentId,...a.specId?{specId:a.specId}:{},title:a.title,projectName:a.projectName,...a.materialRoot?{materialRoot:a.materialRoot}:{},...a.generationProjectId?{generationProjectId:a.generationProjectId}:{},projectId:a.project.snapshotId,buildIdentity:{sourceFingerprint:a.buildId,sourceRunId:a.sourceRunId,sourceBuildId:a.sourceBuildId},workflowVersion:ag.E.version,contractId:a.contract.id,...a.contract.chapterSource?{chapterSource:a.contract.chapterSource}:{},...a.documentOutline?{documentOutlineHash:(0,J.Fu)(a.documentOutline)}:{},...a.structurePlan?{structurePlanHash:(0,R.cI)(a.structurePlan)}:{},...a.tenderResponsePlan?{tenderResponsePlanHash:(0,J.Fu)(a.tenderResponsePlan)}:{},...a.planningContext?{planningContextHash:(0,J.Fu)(a.planningContext)}:{},budget:{perSection:ad.perSection,perRun:ad.perRun??null,enforcement:ad.enforcement},scope:aE?{sectionIds:aE,partial:!0}:{partial:!1}},a.runId),a.structurePlan)for(let{section:b}of(0,R.F_)(a.structurePlan))(0,E.Pp)(aT,b.sectionId)||(0,E.ey)({store:aT,sectionId:b.sectionId,responsibilityId:J.P6,phase:"planned",trigger:"section-track-initialized",snapshot:{structurePlanHash:a.structurePlan.planHash,unitVersions:[],unreviewedUnitIds:[],blockingFindingIds:[],sourceReviewComplete:!1}});(0,af.tv)(aH,"construction-run-protocol.json",{version:"construction-run-protocol-v1",runId:(b=a).runId,documentId:b.documentId,buildId:b.buildId,sourceRunId:b.sourceRunId,sourceBuildId:b.sourceBuildId,workflowVersion:ag.E.version,actualPath:b.structurePlan?"two-level-planning":"legacy-outline",contract:{id:b.contract.id,hash:(0,J.Fu)(b.contract)},sources:{snapshotId:b.project.snapshotId,hash:(0,ae.ik)(b.project)},structurePlanHash:b.structurePlan?(0,R.cI)(b.structurePlan):null,sectionPlanHashesAtStart:[...b.sectionPlans?.values()??[]].map(a=>({sectionId:a.sectionId,hash:a.sectionPlanHash})).sort((a,b)=>a.sectionId.localeCompare(b.sectionId)),protocols:{tenderApplicability:C.q$,tenderApplicabilityReview:C.lK,review:x.dT,sourceReview:ae.pO,originalForm:ah.LR,originalFormReview:ah.mw,deliveryPlacement:"document-delivery-placement-v1",sectionState:E.VM,contentContract:"writing-content-contract-v1",atomicStructuralRevision:!0,finding:"review-finding-contract-v1"}},a.runId),a.documentOutline&&(0,af.tv)(aH,"document-outline.json",a.documentOutline,a.runId),a.structurePlan&&(0,af.tv)(aH,"document-structure-plan.json",a.structurePlan,a.runId),a.planningContext&&((0,af.tv)(aH,"planning-context.json",a.planningContext,a.runId),(0,af.tv)(aH,"source-extraction-ledger.json",a.planningContext.sourceLedger,a.runId)),a.tenderResponsePlan&&(0,af.tv)(aH,"tender-response-plan.json",a.tenderResponsePlan,a.runId),a.bidComposition&&(0,af.tv)(aH,"bid-composition.json",{version:"construction-bid-composition-v1",projectSnapshotId:a.project.snapshotId,spec:a.bidComposition,sources:a.bidCompositionSources??[]},a.runId);let a8=!1,a9=!1,ba=()=>{},bb=()=>{},bc=!1;try{let b,c,d;h=function(a){let b,c,d=a.now??Date.now,e=a.read??(()=>(0,$.CX)(a.documentId,a.projectRoot)),f=a.save??(b=>(0,$.Yf)(b,a.projectRoot)),h=d(),k=(0,j.randomUUID)(),l=e(),m=l?.nativeRevision?.revisionId,n=l?.editedMarkdown,o=l?.createdAt??h,p=i().join(a.artifactDir,"construction","progress",`${(0,J.Fu)(a.documentId).slice(0,24)}.json`);g().mkdirSync(i().dirname(p),{recursive:!0});let q=!1,r=()=>g().writeFileSync(p,JSON.stringify({runId:a.runId,token:k,startedAt:h,createdAt:o,lastSuccess:b??null,lastError:c??null},null,2));r();let s=(b,c)=>{try{a.onReceipt?.(b,c)}catch{}},t=()=>{if(q)return!1;try{return JSON.parse(g().readFileSync(p,"utf8")).token===k}catch{return!1}};return{publish:(g,h,i=!1,j)=>{if(!t())return!1;let k=e();if(k?.nativeRevision?.revisionId!==m||k?.editedMarkdown!==n||k&&k.runId!==a.runId&&k.runId!==l?.runId)return q=!0,s("construction-progress-fenced",{runId:a.runId,currentRunId:k?.runId??null}),!1;if(!i&&(b?.fingerprint===h||b&&d()-b.at<1e3))return!1;try{let e={...g,...k?.ownerPid?{ownerPid:k.ownerPid,ownerStartedAt:k.ownerStartedAt}:{},createdAt:o,updatedAt:d()};f(e),m=e.nativeRevision?.revisionId,n=e.editedMarkdown,b={fingerprint:h,at:d(),sequence:(b?.sequence??0)+1,...j?{source:j}:{}},c=void 0;try{r()}catch(a){s("construction-progress-watermark-failed",{error:String(a),lastSuccess:b})}return s("construction-progress-saved",{runId:a.runId,lastSuccess:b}),!0}catch(e){c={at:d(),message:e instanceof Error?e.message:String(e)};try{r()}catch{}if(s("construction-progress-save-failed",{runId:a.runId,error:c,lastSuccess:b??null}),i)throw e;return!1}},createdAt:o,owns:t,close:()=>{q=!0},state:()=>({lastSuccess:b,lastError:c})}}({documentId:a.documentId,runId:a.runId,projectRoot:a.projectRoot,artifactDir:aH,onReceipt:a$}),aS.migration&&((0,af.tv)(aH,"construction-migration-receipt.json",{at:new Date().toISOString(),runId:a.runId,documentId:a.documentId,sourceRunId:a.sourceRunId,sourceBuildId:a.sourceBuildId,...aS.migration.manifest,pending:aS.migration.pending,activationEligible:!1},a.runId),a$("construction-run-migration-receipt",{counts:aS.migration.manifest.counts??null,pending:aS.migration.pending.length}));let l=aT.recoverActorOwners(a.runId);(l.released.length||l.retained.length)&&a$("construction-run-owner-recovery",l);let t=0,T=0,V=`document-run:${a.documentId}`,Y=new Set,_=()=>{let a=c;c=void 0;let b=(()=>{let a=[];for(let b of aT.supervisedActors(aZ.authority.actorId)){let c=aT.actor(b.actorId),d=aT.actorEventFailure(b.actorId),e=String(c?.definition.assignmentBinding?.responsibilityKey??b.actorId);if(d){let c="failed:"+b.actorId+":"+d.receiptId;if(Y.has(c))continue;Y.add(c),a.push(`- 职责「${e}」(${b.actorId})上次执行**失败**:${d.error};回执 ${d.receiptId}。失败后重试必须有你的实质修订(改目标、换对象或调整所需成果),原样重派不会被受理——用 \`inspect_construction_responsibility\` 读它的当前状态,再用 \`revise_construction_responsibility\` 给出具体修订;如果它本就不该继续,如实收口并在结论里写明。`);continue}let f=c?.checkpoint;if(f?.status==="paused"){let c="paused:"+b.actorId+":"+String(f.blockedReason??"")+":"+f.rounds;if(Y.has(c))continue;Y.add(c),a.push(`- 职责「${e}」(${b.actorId})**已暂停**(${String(f.blockedMessage??f.blockedReason??"状态停滞")},已用 ${f.rounds} 轮):检查点、原稿与费用账保留。补充预算或给出实质修订后可继续;用 \`inspect_construction_responsibility\` 读它的当前状态,再决定是补充预算、换对象还是如实收口。`);continue}if(f?.status==="interrupted"){let c="interrupted:"+b.actorId+":"+String(f.rounds??0);if(Y.has(c))continue;Y.add(c),a.push(`- 职责「${e}」(${b.actorId})上次执行被**传输中断**(响应未完整结束,已用 ${f.rounds??0} 轮):检查点与原稿保留;本轮不会重复派发,下一次运行会从检查点续跑,**不需要你为此改写目标**。`);continue}if(f?.status!=="completed")continue;let g="completed:"+b.actorId+":"+String(f.decodedSha256??"").slice(0,16);Y.has(g)||(Y.add(g),a.push(`- 职责「${e}」(${b.actorId})已声明**完成职责**(检查点 ${String(f.decodedSha256??"").slice(0,16)}):核对它的成果是否满足你要的成果条件;不满足就给出具体裁决,满足则本轮可以收口。`))}let b=[];for(let a;;){let c=aT.issuePage({owner:"project-decision-maker",...void 0===a?{}:{afterSequence:a},limit:200});if(b.push(...c.issues),void 0===c.nextAfterSequence)break;a=c.nextAfterSequence}for(let c of b){if(!["open","investigating","awaiting-decision"].includes(c.state))continue;let b="issue:"+c.id+":"+c.state+":"+c.updatedAt;Y.has(b)||(Y.add(b),a.push(`- 有交回项目决策者的问题「${c.title}」(${c.id},由 ${c.raisedBy} 登记):${c.decision?`要作出的决定:${c.decision.question};可选:${c.decision.options.join("、")}。`:`${c.detail}。`}你是本项目侧的裁决人:用 \`answer_shared_decision\` 给出**具体**裁决(采纳哪个方案/给出工程决定与依据),不能只回"继续优化"。`))}if(!a.length){let a=new Set(aT.supervisedActors(aZ.authority.actorId).flatMap(a=>(a.definition.toolFace??[]).includes("writing")?a.definition.sectionIds:[])),b=aT.actor(aZ.authority.actorId)?.definition;return[...new Set(b?.sectionIds??[])].filter(b=>!a.has(b)).length?void 0:"【运行反馈\xb7实际变化】你上一轮收口之后没有新的实际变化:全部章节已有 writing 承接职责,无需再建包、委派或重复检查职责状态;直接调用 `conclude_construction_organization` 再次收口结束本轮。"}return`【运行反馈\xb7实际变化】你上一轮收口之后发生了以下实际变化(程序按事件回执记录,不是转述):
|
|
1
|
+
"use strict";exports.id=3239,exports.ids=[3239],exports.modules={25620:(a,b,c)=>{c.r(b),c.d(b,{constructionCapabilityCatalog:()=>aq,constructionModelIdentity:()=>au,constructionRecordStatus:()=>at,constructionRunDirectory:()=>av,runConstructionDocument:()=>as,writeConstructionRunCallAudit:()=>ar});var d=c(60126),e=c(59339),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(77598),k=c(55037),l=c(65131),m=c(38210),n=c(49303),o=c(76499);let p=a=>Number.isSafeInteger(a)&&Number(a)>=0?Number(a):0;var q=c(8176),r=c(56396),s=c(2313),t=c(88390),u=c(1512),v=c(37038),w=c(3737),x=c(61485),y=c(31232),z=c(25821),A=c(98459),B=c(45408),C=c(69977),D=c(36980),E=c(25164),F=c(6873),G=c(25353),H=c(47353),I=c(42165),J=c(745),K=c(4053),L=c(1932),M=c(73005),N=c(63072),O=c(47523),P=c(16669),Q=c(69970),R=c(36690),S=c(16208),T=c(45532),U=c(1623),V=c(9104),W=c(85585),X=c(26621),Y=c(98943),Z=c(68515),$=c(85738),_=c(81146),aa=c(49724),ab=c(49584),ac=c(45304),ad=c(6906),ae=c(3410),af=c(13380),ag=c(39375),ah=c(19045),ai=c(6158);let aj=new Map;var ak=c(62563),al=c(91088);let am={type:"object",additionalProperties:!1,required:["findings"],properties:{findings:{type:"array",items:{type:"object",additionalProperties:!1,required:["severity","problem","fix"],properties:{severity:{type:"string",enum:["P0","P1","P2"]},chapterId:{type:"string"},sectionId:{type:"string"},quote:{type:"string"},problem:{type:"string"},fix:{type:"string"},replacement:{type:"string"}}}}}};async function an(a){let b=a.chapters.filter(a=>a.content.trim());if(!b.length)return{findings:[],calls:0,chaptersReviewed:0};let c=[],d=0;for(let e of b){a.signal?.throwIfAborted();let b=(0,al.dk)({task:"整稿终审:只找 P0/P1 级严重问题;P2 只记录。不得改写未引用原文,不得新增项目事实或标准。",chapter:{id:e.id,title:e.title,content:e.content},documentIndex:a.sections.map(a=>({sectionId:a.sectionId,chapterId:a.chapterId,title:a.title,contentGroup:a.contentGroup??null,digest:a.digest??null})),rules:["P0:必出图/表缺失、正文与必出输出不一致、跨章直接矛盾、事实/数量/日期冲突导致方案不成立。","P1:严重重复主载、引用错号、正文与图表结论不一致、关键专业接口遗漏。","P2:表达、详略、一般重复;只记录,不要求本轮修。","每条 finding 必须给问题与修法;能逐字替换时给 quote(本章原文逐字片段)与 replacement。quote 必须能在本章正文中逐字找到,不得改写原文后冒充引文。",'不得因"可以更详细"判 P0/P1;不得把编写说明、内部口径、证据来源写进正文建议。',"findings 最多 12 条,按 P0 > P1 > P2 排序;同一问题不要重复。","只输出 JSON。"],output:{findings:[{severity:"P1",sectionId:"section…",quote:"原文逐字片段",problem:"可核的严重问题",fix:"具体修法",replacement:"替换后的逐字文本"}]}});d+=1;let f=await a.caller("你是施工组织设计整稿终审者,不是作者。只找严重问题:跨章矛盾或重复主载、必出图表缺失、事实/数量/日期冲突、引用错号、正文与图表不一致。只输出 JSON。",b,{schema:am,diagnostics:a.diagnostics,signal:a.signal,taskKind:"reasoning",callKind:"consistency-review",temperature:0});for(let a of f?.findings??[]){let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b=String(a.severity??"").toUpperCase();if(!["P0","P1","P2"].includes(b))return;let c=String(a.problem??"").trim(),d=String(a.fix??"").trim();if(!c||!d)return;let e=b=>{let c=a[b];return"string"==typeof c&&c.trim()?c.trim():void 0};return{severity:b,...e("chapterId")?{chapterId:e("chapterId")}:{},...e("sectionId")?{sectionId:e("sectionId")}:{},...e("quote")?{quote:e("quote")}:{},...e("replacement")?{replacement:e("replacement")}:{},problem:c,fix:d}}(a);b&&c.push({...b,chapterId:b.chapterId??e.id})}}let e={findings:[...new Map(c.map(a=>[JSON.stringify([a.severity,a.sectionId??"",a.quote??"",a.problem.replace(/\s+/gu,"")]),a])).values()].sort((a,b)=>a.severity.localeCompare(b.severity)),calls:d,chaptersReviewed:b.length};return(0,af.tv)(a.artifactDir,"final-document-review.json",{version:"final-document-review-v1",runId:a.runId,...e},a.runId),e}var ao=c(4387);let ap=["query_project_facts","query_work_packages","search_evidence","discover_files","read_source"];function aq(a){let b={projectRoot:i().resolve(a.projectRoot),scopeRootNames:[...a.scopeRootNames],skills:[...a.skills],toolNames:[...ad.n]};return[{id:"construction-method-production",label:"施工方法与生产组织",kind:"professional",system:(0,t.gh)({permissions:["read-current","work-package","source-allocation","production","shared-definition","writing"],responsibilityKey:"method-production",...a.structurePlanning?{structurePlanning:!0}:{}}),purposeSystems:Object.fromEntries(["source-check","method-decision","production-calculation","writing"].map(b=>[b,(0,t.gh)({permissions:(0,l.pu)(b,["read-current","work-package","source-allocation","production","shared-definition","writing"]),responsibilityKey:"method-production",purpose:b,...a.structurePlanning?{structurePlanning:!0}:{}})])),permissions:["read-current","work-package","source-allocation","production","shared-definition","writing"],evidence:b,caller:Y.callDocumentLlmWithTools}]}function ar(a){try{let b=i().join(a.artifactDir,"runs",a.runId,"artifacts"),c=g().existsSync(b)?b:a.artifactDir,d=(g().existsSync(c)?g().readdirSync(c).filter(a=>/^llm-call-\d+\.json$/u.test(a)).sort():[]).flatMap(a=>{try{let b=JSON.parse(g().readFileSync(i().join(c,a),"utf8"));return b.call?[{file:a,usageStatus:b.usageStatus,unknownAttemptUsage:b.unknownAttemptUsage??0,...b.call}]:[]}catch{return[]}}),e=new Map;for(let a of d){let b=a.transportActivities?.find(a=>a.requestInput?.sha256)?.requestInput?.sha256;b&&e.set(b,[...e.get(b)??[],a.file])}let f=[...e.entries()].filter(([,a])=>a.length>1).map(([a,b])=>({requestHash:a,files:b})),h={version:"run-call-audit-v1",runId:a.runId,calls:d.length,inputTokens:d.reduce((a,b)=>a+(b.inputTokens??0),0),outputTokens:d.reduce((a,b)=>a+(b.outputTokens??0),0),maxInputChars:Math.max(0,...d.map(a=>a.inputChars??0)),cacheHitTokens:d.reduce((a,b)=>a+(b.cacheHitTokens??0),0),cacheMissTokens:d.reduce((a,b)=>a+(b.cacheMissTokens??0),0),unknownUsageCalls:d.filter(a=>"reported"!==a.usageStatus&&"not-sent"!==a.usageStatus).length,emptyCalls:d.filter(a=>!0===a.ok&&(a.outputChars??0)===0&&(a.emittedToolCalls??0)===0).length,duplicateInputCalls:f.reduce((a,b)=>a+b.files.length,0),duplicateInputGroups:f.slice(0,20)};return(0,af.tv)(a.artifactDir,"run-call-audit.json",h,a.runId),a.onReceipt?.("construction-run-call-audit",{calls:h.calls,duplicateInputCalls:h.duplicateInputCalls,emptyCalls:h.emptyCalls,unknownUsageCalls:h.unknownUsageCalls}),h}catch{return}}async function as(a){var b;let c,f,h;a={...a,...a.bidComposition?{bidComposition:structuredClone(a.bidComposition)}:{},...a.bidCompositionSources?{bidCompositionSources:structuredClone(a.bidCompositionSources)}:{},...a.tenderResponsePlan?{tenderResponsePlan:structuredClone(a.tenderResponsePlan)}:{},...a.documentOutline?{documentOutline:structuredClone(a.documentOutline)}:{},...a.planningContext?{planningContext:structuredClone(a.planningContext)}:{}};let ad=(0,n.En)(a.budget),al={},am=Object.keys(a.project.sources).filter(b=>!a.scopeRootNames.some(a=>b===a||b.startsWith(`${a}/`)));if(am.length)throw Error(`CONSTRUCTION_RUN_MATERIAL_SCOPE_INCOMPLETE:${am.length} 份冻结来源不在本次资料范围内,例如 ${am[0]}`);let as=a.caller??Y.callDocumentLlmWithTools,av=(0,Q.Kf)(a.bidComposition)?await (0,Q.m3)():void 0,aw=a.skills??(0,ac.loadGenerationSkills)(),ax=aq({projectRoot:a.projectRoot,scopeRootNames:a.scopeRootNames,skills:aw,structurePlanning:!!a.structurePlan}).map(a=>({...a,caller:as})),ay={projectRoot:a.projectRoot,directory:a.generatedDir,identity:{projectId:a.projectRoot,documentId:a.documentId,sourceSnapshotId:a.project.snapshotId,contractId:a.contract.id},project:a.project,contract:a.contract,workspace:a.workspace,sourceRunId:a.sourceRunId,sourceBuildId:a.sourceBuildId,evidence:a.evidence},az=(0,T.BI)(a.project),aA=new Map;for(let b of az){let c=b.entry.sourceFile,d=aA.get(c)??{total:0,authorized:0};d.total+=1,(!a.scope?.memberIndices?.length||a.scope.memberIndices.includes(b.index))&&(d.authorized+=1),aA.set(c,d)}let aB=[...aA].sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>({path:a,authorizedMembers:b.authorized,totalMembers:b.total,wholeFileAuthorized:b.authorized===b.total}));if(a.scope?.sectionIds?.some(b=>!a.contract.sections.some(a=>a.id===b)))throw Error(`CONSTRUCTION_RUN_SCOPE_SECTION_UNKNOWN:${a.scope.sectionIds.filter(b=>!a.contract.sections.some(a=>a.id===b)).slice(0,8).join("、")} 不在本次冻结合同的章节里`);let aC=new Set(az.map(a=>a.index));if(a.scope?.memberIndices?.some(a=>!Number.isSafeInteger(a)||!aC.has(a)))throw Error(`CONSTRUCTION_RUN_SCOPE_MEMBER_UNKNOWN:${(a.scope.memberIndices??[]).filter(a=>!aC.has(a)).slice(0,8).join("、")}
|
|
2
|
+
不是本次冻结清单的有效 memberIndices(有效范围 0..${Math.max(0,az.length-1)})`);let aD=a.scope?.memberIndices?.length?[...a.scope.memberIndices]:az.map(a=>a.index),aE=a.scope?.sectionIds?.length?[...a.scope.sectionIds]:a.contract.sections.map(a=>a.id),aF=a.scope?.sectionIds?.length?[...new Set(a.scope.sectionIds)]:void 0,aG=new Set,aH=new Map,aI=a.artifactDir??a.generatedDir,aJ=a.nodeLogBaseDir??aI,aK=(0,t.QG)(),aL=a.planningContext?.sourceLedger.entries.filter(a=>"read"!==a.readStatus)??[],aM=aF?new Set(aF):void 0,aN=a.contract.sections.filter(a=>!aM||aM.has(a.id)),aO=a.contract.chapters.filter(a=>aN.some(b=>b.chapterId===a.id)),aP=a.chiefGoal??(0,t.IC)({projectName:a.projectName,title:a.title,requirement:a.requirement,documentTitle:a.title,chapterTitles:aO.map(a=>a.title),sectionIds:aE,sectionDirectory:aN.map(b=>({id:b.id,title:b.title,chapterId:b.chapterId,chapterTitle:a.contract.chapters.find(a=>a.id===b.chapterId)?.title??""})),workPackageCount:az.length,memberCount:az.length,sourceFiles:aB,...a.scope?{scope:{sectionTitles:aE.map(b=>a.contract.sections.find(a=>a.id===b)?.title??b),...a.scope.memberIndices?.length?{memberIndices:a.scope.memberIndices}:{}}}:{},...a.planningContext?{planning:{requiredOutputs:a.planningContext.outputObligations.filter(a=>"domain-baseline"===a.kind||(0,C.oY)(a)).map(a=>({element:a.element,form:a.form,status:"domain-baseline"===a.kind?"施工组织设计垂直领域基线(建议出图;确不适用的可按 outputExceptions 写明理由与等效载体,由独立审查接受)":"招标明确要求(必须出)"})),contractObligations:a.planningContext.contractObligations.filter(C.Ln).map(a=>({id:a.id,text:a.text,kind:a.kind,...a.items?.length?{items:a.items}:{}})),factsBaseline:a.planningContext.factsBaseline.map(a=>{let b=a.selected?(0,ak.D)(a.selected.value,160):void 0;return{key:a.key,...a.objectName?{objectName:a.objectName}:{},...a.condition?{condition:a.condition}:{},status:a.status,...a.selected&&b?{value:b.text+(b.truncated?`…(另 ${b.remainingChars} 字未展示,按需读取)`:""),sourceFile:a.selected.sourceFile}:{},..."conflict"===a.status?{alternatives:a.values.map(a=>({value:(0,ak.D)(a.value,80).text,sourceFile:a.sourceFile}))}:{}}}),factConflicts:a.planningContext.sourceLedger.conflicts.map(a=>({key:a.key,...a.objectName?{objectName:a.objectName}:{},...a.condition?{condition:a.condition}:{},resolution:a.resolution,rule:a.rule})),sourceSummary:a.planningContext.sourceLedger.byClass,unreadSources:aL.slice(0,40).map(a=>({filePath:a.filePath,readStatus:a.readStatus,unknowns:a.unknowns})),unreadSourceCount:aL.length,...aL.length>40?{unreadSourcesNote:`仅列前 40 份;其余 ${aL.length-40} 份按 filePath/序号用 read_scope 读取,不能当作不存在`}:{},tenderProfile:a.planningContext.tenderProfile,professionalCandidates:a.planningContext.professionalCandidates.map(a=>({chapterTitle:a.chapterTitle,sectionCandidates:a.sectionCandidates.map(a=>a.title),contentRequirements:a.contentRequirements.map(a=>({title:a.title,attachTo:a.attachTo}))})),extraction:a.planningContext.provenance.extraction??null}}:{}}),aQ=()=>{},aR=()=>{},aS=()=>{},aT=function(a){let b=(0,k.openConstructionWorkspace)(a.workspaceInput),c={beforeModelCall:a.beforeModelCall,...a.earlyDrafts?{adoptEarlyDrafts:a.earlyDrafts.adopt,sectionAuthorAttempts:a.earlyDrafts.authorAttempts}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.structurePlan?{structurePlan:a.structurePlan,sectionContracts:a.sectionContracts}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.confirmed?{confirmed:a.confirmed}:{},...a.jsonCaller?{jsonCaller:a.jsonCaller}:{},executionBaselineRef:a.executionBaselineRef,...a.blockedSections?{blockedSections:a.blockedSections}:{},store:b.store,project:a.workspaceInput.project,contract:a.workspaceInput.contract,authority:{actorId:"chief",memberIndices:[...a.memberIndices],sectionIds:[...a.sectionIds],canManageSharedResources:!0},clock:{timelineId:`document-run-${a.workspaceInput.identity.documentId}`,timeUnit:{unit:"hour",ticksPerUnit:1},horizon:8760},buildId:a.workspaceInput.sourceBuildId,generatedDir:a.generatedDir,nodeLogBaseDir:a.nodeLogBaseDir??a.generatedDir,runId:a.runId,...a.budget?{budget:a.budget}:{},system:a.chiefSystem,goal:a.chiefGoal,initialFocus:{purpose:"method-decision",entityIds:[]},permissions:["read-current","work-package","source-allocation","production","shared-definition","professional-decision","writing"],toolFace:["read-current","work-package","shared-definition","professional-decision"],authorizeRead:()=>!0,responsibilityKind:"document-chief",caller:a.caller,evidence:{projectRoot:i().resolve(a.projectRoot),scopeRootNames:[...a.scopeRootNames],skills:[...a.skills],toolNames:[...ap]},...a.onReceipt?{onReceipt:a.onReceipt}:{},...a.onBusinessCommit?{onBusinessCommit:a.onBusinessCommit}:{},...a.onProgressBoundary?{onProgressBoundary:a.onProgressBoundary}:{},...a.signal?{signal:a.signal}:{}},e=a.diagnostics??(0,_.createGenerationDiagnostics)(),f=Promise.resolve(),g=async()=>{let a=f,b=()=>{};return f=new Promise(a=>{b=a}),await a,b},h={...c,diagnostics:e,sourceCoverageLock:g},j=(0,l._M)({chief:h,profiles:a.profiles});return{store:b.store,created:b.created,chief:h,coordinator:j,diagnostics:e,onReceipt:(b,c)=>a.onReceipt?.(b,c),unbindSectionContracts:a.sectionContracts?(0,d.Ep)(b.store,a.sectionContracts):void 0,...b.migration?{migration:b.migration}:{}}}({beforeModelCall:a.earlyDrafts?()=>aS():void 0,earlyDrafts:a.earlyDrafts,workspaceInput:ay,runId:a.runId,chiefSystem:aK,chiefGoal:aP,profiles:ax,memberIndices:aD,sectionIds:aE,generatedDir:aI,...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.structurePlan?{structurePlan:a.structurePlan,sectionContracts:a.sectionContracts}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.confirmed?{confirmed:a.confirmed}:{},jsonCaller:a.jsonCaller??Y.callDocumentLlmJson,executionBaselineRef:al,blockedSections:aG,nodeLogBaseDir:aJ,projectRoot:a.projectRoot,skills:aw,scopeRootNames:a.scopeRootNames,caller:as,budget:ad,...a.diagnostics?{diagnostics:a.diagnostics}:{},onReceipt:(b,c)=>{a.onReceipt?.(b,c),b.startsWith("construction-progress-")||aQ()},onBusinessCommit:()=>{a9=!0},onProgressBoundary:()=>aR(),...a.signal?{signal:a.signal}:{}}),{store:aU,coordinator:aV,diagnostics:aW}=aT,aX=[...new Set([...a.scope?.sectionIds??[],...a.contract.sections.map(a=>a.id)])],aY=()=>(0,n.r0)({sections:aX,calls:(aW.llm.callLog??[]).map(b=>({inputTokens:b.inputTokens,providerAttempts:b.transportActivities?b.transportActivities.filter(a=>"not-started"!==a.providerInvocation).length:b.providerAttempts,unknownAttempts:(()=>{let a=b.transportActivities?.filter(a=>"not-started"!==a.providerInvocation);return a?a.filter(a=>!a.usage).length:0})(),sectionId:b.sectionId??(b=>{let c=b?aU.actor(b):void 0,d=c?.definition.sectionIds??[];return 1===d.length?d[0]:a.earlyDrafts?.sectionOfActor(b)})(b.actorId),role:(0,o.K)(b.kind)?"review":"reasoning"===b.taskKind?"think":"chief"===b.actorId?"chief":"author"}))},{unknownCallUpperBound:ad.perSection.maxInputTokens}),aZ=()=>a.structurePlan?(0,R.F_)(a.structurePlan).map(({section:b,chapter:c},d)=>{let e=(0,E.Pp)(aU,b.sectionId),f=a.sectionPlans?.get(b.sectionId),g=(0,y.rz)(aU,b.sectionId).length,h=aF&&!aF.includes(b.sectionId)?"out-of-scope":e?"planned"===e.phase?f?"section-planned":"planned":e.phase:"untracked";return{sectionId:b.sectionId,chapterTitle:c.title,title:b.title,order:d+1,phase:h,sectionPlanned:!!f,unitCount:g,locked:e?.phase==="locked",...e?.reason?{reason:e.reason}:{}}}):void 0;al.current=(0,V.nu)(aU);let a$=aT.chief,a_=aT.onReceipt,a0="provisional-source-ownership",a1=()=>{let b=(0,V.qN)(aU,a.project).filter(a=>a.sectionIds.some(a=>aE.includes(a))),c=new Set(b.flatMap(a=>a.sectionIds).filter(a=>aE.includes(a)));return{packages:b,coveredSectionIds:[...c],missingSectionIds:aE.filter(a=>!c.has(a)),missingAllocations:[],overAllocated:[]}},a2=!!a.planningContext,a3=!1,a4=async()=>{if(!a2)return;if(al.current){let b=al.current,c=(0,V.PE)({store:aU,project:a.project,sectionIds:aE,allocationMode:a0}),d=new Set(b.coveredSectionIds??[]);if(b.workPackageSetHash===c.workPackageSetHash&&b.allocationSetHash===c.allocationSetHash&&aE.every(a=>d.has(a))){a3=!0,(0,af.Jv)({generatedDir:aI,fileName:"execution-baseline.json",value:b,runId:a.runId});return}a_("construction-run-execution-baseline-stale",{reason:"工作包集合/分配/覆盖章节已变化,重编基准",previous:{workPackageSetHash:b.workPackageSetHash??null,allocationSetHash:b.allocationSetHash??null},current:{workPackageSetHash:c.workPackageSetHash,allocationSetHash:c.allocationSetHash}}),al.current=void 0,a3=!1}let b=a1();if(b.missingSectionIds.length)throw Error(`EXECUTION_BASELINE_SECTION_UNCOVERED:${b.missingSectionIds.length} 个章节没有工作包`);if(b.missingAllocations.length)throw Error(`EXECUTION_BASELINE_ALLOCATION_MISSING:${b.missingAllocations.length} 个工作包成员没有原量分配`);let c=await (0,V.du)({store:aU,project:a.project,sectionIds:aE,allocationMode:a0,...a.planningContext?{planningContext:a.planningContext}:{},caller:a.jsonCaller??Y.callDocumentLlmJson,diagnostics:aW,signal:a.signal,artifactDir:aI,runId:a.runId,laborPolicy:Z.Qk.p??null}),d=(0,V.ZO)({store:aU,baseline:c.baseline,runId:a.runId});al.current=c.baseline,a3=!0,(0,af.Jv)({generatedDir:aI,fileName:"execution-baseline.json",value:c.baseline,runId:a.runId}),a_("construction-run-execution-baseline",{workPackages:b.packages.length,batches:c.coverage.batches,members:c.coverage.members,written:d})},a5=()=>{let a=a1();return{coverage:a,ready:!a.missingSectionIds.length&&!a.missingAllocations.length&&!a.overAllocated.length}},a6=()=>{if(!a2||f)return Promise.resolve();if(c)return c;let a={};return a.current=(async()=>{try{await a4()}catch(b){let a=b instanceof Error?b.message:String(b);/^EXECUTION_BASELINE_(SECTION_UNCOVERED|ALLOCATION_MISSING)/u.test(a)?a_("construction-run-execution-baseline-deferred",{reason:a}):f=a}finally{c===a.current&&(c=void 0)}})(),c=a.current,a.current},a7=()=>{if(!a2||c||a3&&al.current||f)return;let{coverage:a,ready:b}=a5();b&&(a_("construction-run-execution-baseline-started",{workPackages:a.packages.length,members:a.packages.reduce((a,b)=>a+b.members.length,0)}),a6())},a8=async()=>{if(c&&await c,f)throw Error(f)};if((0,ab.bindRunModelConfiguration)(aW,a),(0,aa.bindDocumentCallLedger)(aW,{generatedDir:aI,runId:a.runId}),(0,af.tv)(aI,"run-start.json",{at:new Date().toISOString(),runId:a.runId,documentId:a.documentId,...a.specId?{specId:a.specId}:{},title:a.title,projectName:a.projectName,...a.materialRoot?{materialRoot:a.materialRoot}:{},...a.generationProjectId?{generationProjectId:a.generationProjectId}:{},projectId:a.project.snapshotId,buildIdentity:{sourceFingerprint:a.buildId,sourceRunId:a.sourceRunId,sourceBuildId:a.sourceBuildId},workflowVersion:ag.E.version,contractId:a.contract.id,...a.contract.chapterSource?{chapterSource:a.contract.chapterSource}:{},...a.documentOutline?{documentOutlineHash:(0,J.Fu)(a.documentOutline)}:{},...a.structurePlan?{structurePlanHash:(0,R.cI)(a.structurePlan)}:{},...a.tenderResponsePlan?{tenderResponsePlanHash:(0,J.Fu)(a.tenderResponsePlan)}:{},...a.planningContext?{planningContextHash:(0,J.Fu)(a.planningContext)}:{},budget:{perSection:ad.perSection,perRun:ad.perRun??null,enforcement:ad.enforcement},scope:aF?{sectionIds:aF,partial:!0}:{partial:!1}},a.runId),a.structurePlan)for(let{section:b}of(0,R.F_)(a.structurePlan))(0,E.Pp)(aU,b.sectionId)||(0,E.ey)({store:aU,sectionId:b.sectionId,responsibilityId:J.P6,phase:"planned",trigger:"section-track-initialized",snapshot:{structurePlanHash:a.structurePlan.planHash,unitVersions:[],unreviewedUnitIds:[],blockingFindingIds:[],sourceReviewComplete:!1}});(0,af.tv)(aI,"construction-run-protocol.json",{version:"construction-run-protocol-v1",runId:(b=a).runId,documentId:b.documentId,buildId:b.buildId,sourceRunId:b.sourceRunId,sourceBuildId:b.sourceBuildId,workflowVersion:ag.E.version,actualPath:b.structurePlan?"two-level-planning":"legacy-outline",contract:{id:b.contract.id,hash:(0,J.Fu)(b.contract)},sources:{snapshotId:b.project.snapshotId,hash:(0,ae.ik)(b.project)},structurePlanHash:b.structurePlan?(0,R.cI)(b.structurePlan):null,sectionPlanHashesAtStart:[...b.sectionPlans?.values()??[]].map(a=>({sectionId:a.sectionId,hash:a.sectionPlanHash})).sort((a,b)=>a.sectionId.localeCompare(b.sectionId)),protocols:{tenderApplicability:C.q$,tenderApplicabilityReview:C.lK,review:x.dT,sourceReview:ae.pO,originalForm:ah.LR,originalFormReview:ah.mw,deliveryPlacement:"document-delivery-placement-v1",sectionState:E.VM,contentContract:"writing-content-contract-v1",atomicStructuralRevision:!0,finding:"review-finding-contract-v1"}},a.runId),a.documentOutline&&(0,af.tv)(aI,"document-outline.json",a.documentOutline,a.runId),a.structurePlan&&(0,af.tv)(aI,"document-structure-plan.json",a.structurePlan,a.runId),a.planningContext&&((0,af.tv)(aI,"planning-context.json",a.planningContext,a.runId),(0,af.tv)(aI,"source-extraction-ledger.json",a.planningContext.sourceLedger,a.runId)),a.tenderResponsePlan&&(0,af.tv)(aI,"tender-response-plan.json",a.tenderResponsePlan,a.runId),a.bidComposition&&(0,af.tv)(aI,"bid-composition.json",{version:"construction-bid-composition-v1",projectSnapshotId:a.project.snapshotId,spec:a.bidComposition,sources:a.bidCompositionSources??[]},a.runId);let a9=!1,ba=!1,bb=()=>{},bc=()=>{},bd=!1;try{let b,c,d;h=function(a){let b,c,d=a.now??Date.now,e=a.read??(()=>(0,$.CX)(a.documentId,a.projectRoot)),f=a.save??(b=>(0,$.Yf)(b,a.projectRoot)),h=d(),k=(0,j.randomUUID)(),l=e(),m=l?.nativeRevision?.revisionId,n=l?.editedMarkdown,o=l?.createdAt??h,p=i().join(a.artifactDir,"construction","progress",`${(0,J.Fu)(a.documentId).slice(0,24)}.json`);g().mkdirSync(i().dirname(p),{recursive:!0});let q=!1,r=()=>g().writeFileSync(p,JSON.stringify({runId:a.runId,token:k,startedAt:h,createdAt:o,lastSuccess:b??null,lastError:c??null},null,2));r();let s=(b,c)=>{try{a.onReceipt?.(b,c)}catch{}},t=()=>{if(q)return!1;try{return JSON.parse(g().readFileSync(p,"utf8")).token===k}catch{return!1}};return{publish:(g,h,i=!1,j)=>{if(!t())return!1;let k=e();if(k?.nativeRevision?.revisionId!==m||k?.editedMarkdown!==n||k&&k.runId!==a.runId&&k.runId!==l?.runId)return q=!0,s("construction-progress-fenced",{runId:a.runId,currentRunId:k?.runId??null}),!1;if(!i&&(b?.fingerprint===h||b&&d()-b.at<1e3))return!1;try{let e={...g,...k?.ownerPid?{ownerPid:k.ownerPid,ownerStartedAt:k.ownerStartedAt}:{},createdAt:o,updatedAt:d()};f(e),m=e.nativeRevision?.revisionId,n=e.editedMarkdown,b={fingerprint:h,at:d(),sequence:(b?.sequence??0)+1,...j?{source:j}:{}},c=void 0;try{r()}catch(a){s("construction-progress-watermark-failed",{error:String(a),lastSuccess:b})}return s("construction-progress-saved",{runId:a.runId,lastSuccess:b}),!0}catch(e){c={at:d(),message:e instanceof Error?e.message:String(e)};try{r()}catch{}if(s("construction-progress-save-failed",{runId:a.runId,error:c,lastSuccess:b??null}),i)throw e;return!1}},createdAt:o,owns:t,close:()=>{q=!0},state:()=>({lastSuccess:b,lastError:c})}}({documentId:a.documentId,runId:a.runId,projectRoot:a.projectRoot,artifactDir:aI,onReceipt:a_}),aT.migration&&((0,af.tv)(aI,"construction-migration-receipt.json",{at:new Date().toISOString(),runId:a.runId,documentId:a.documentId,sourceRunId:a.sourceRunId,sourceBuildId:a.sourceBuildId,...aT.migration.manifest,pending:aT.migration.pending,activationEligible:!1},a.runId),a_("construction-run-migration-receipt",{counts:aT.migration.manifest.counts??null,pending:aT.migration.pending.length}));let l=aU.recoverActorOwners(a.runId);(l.released.length||l.retained.length)&&a_("construction-run-owner-recovery",l);let t=0,T=0,V=`document-run:${a.documentId}`,Y=new Set,_=()=>{let a=c;c=void 0;let b=(()=>{let a=[];for(let b of aU.supervisedActors(a$.authority.actorId)){let c=aU.actor(b.actorId),d=aU.actorEventFailure(b.actorId),e=String(c?.definition.assignmentBinding?.responsibilityKey??b.actorId);if(d){let c="failed:"+b.actorId+":"+d.receiptId;if(Y.has(c))continue;Y.add(c),a.push(`- 职责「${e}」(${b.actorId})上次执行**失败**:${d.error};回执 ${d.receiptId}。失败后重试必须有你的实质修订(改目标、换对象或调整所需成果),原样重派不会被受理——用 \`inspect_construction_responsibility\` 读它的当前状态,再用 \`revise_construction_responsibility\` 给出具体修订;如果它本就不该继续,如实收口并在结论里写明。`);continue}let f=c?.checkpoint;if(f?.status==="paused"){let c="paused:"+b.actorId+":"+String(f.blockedReason??"")+":"+f.rounds;if(Y.has(c))continue;Y.add(c),a.push(`- 职责「${e}」(${b.actorId})**已暂停**(${String(f.blockedMessage??f.blockedReason??"状态停滞")},已用 ${f.rounds} 轮):检查点、原稿与费用账保留。补充预算或给出实质修订后可继续;用 \`inspect_construction_responsibility\` 读它的当前状态,再决定是补充预算、换对象还是如实收口。`);continue}if(f?.status==="interrupted"){let c="interrupted:"+b.actorId+":"+String(f.rounds??0);if(Y.has(c))continue;Y.add(c),a.push(`- 职责「${e}」(${b.actorId})上次执行被**传输中断**(响应未完整结束,已用 ${f.rounds??0} 轮):检查点与原稿保留;本轮不会重复派发,下一次运行会从检查点续跑,**不需要你为此改写目标**。`);continue}if(f?.status!=="completed")continue;let g="completed:"+b.actorId+":"+String(f.decodedSha256??"").slice(0,16);Y.has(g)||(Y.add(g),a.push(`- 职责「${e}」(${b.actorId})已声明**完成职责**(检查点 ${String(f.decodedSha256??"").slice(0,16)}):核对它的成果是否满足你要的成果条件;不满足就给出具体裁决,满足则本轮可以收口。`))}let b=[];for(let a;;){let c=aU.issuePage({owner:"project-decision-maker",...void 0===a?{}:{afterSequence:a},limit:200});if(b.push(...c.issues),void 0===c.nextAfterSequence)break;a=c.nextAfterSequence}for(let c of b){if(!["open","investigating","awaiting-decision"].includes(c.state))continue;let b="issue:"+c.id+":"+c.state+":"+c.updatedAt;Y.has(b)||(Y.add(b),a.push(`- 有交回项目决策者的问题「${c.title}」(${c.id},由 ${c.raisedBy} 登记):${c.decision?`要作出的决定:${c.decision.question};可选:${c.decision.options.join("、")}。`:`${c.detail}。`}你是本项目侧的裁决人:用 \`answer_shared_decision\` 给出**具体**裁决(采纳哪个方案/给出工程决定与依据),不能只回"继续优化"。`))}if(!a.length){let a=new Set(aU.supervisedActors(a$.authority.actorId).flatMap(a=>(a.definition.toolFace??[]).includes("writing")?a.definition.sectionIds:[])),b=aU.actor(a$.authority.actorId)?.definition;return[...new Set(b?.sectionIds??[])].filter(b=>!a.has(b)).length?void 0:"【运行反馈\xb7实际变化】你上一轮收口之后没有新的实际变化:全部章节已有 writing 承接职责,无需再建包、委派或重复检查职责状态;直接调用 `conclude_construction_organization` 再次收口结束本轮。"}return`【运行反馈\xb7实际变化】你上一轮收口之后发生了以下实际变化(程序按事件回执记录,不是转述):
|
|
3
3
|
${a.join("\n")}
|
|
4
|
-
请按实际状态作出具体裁决;不需要动作时用 \`conclude_construction_organization\` 再次收口。`})();return[a,b].filter(Boolean).join("\n\n")||void 0},aa=()=>aT.supervisedActors(aZ.authority.actorId).map(a=>{let b=a.definition.assignmentBinding,c=Array.isArray(a.definition.toolFace)?a.definition.toolFace.map(String):[];return{actorId:a.actorId,..."string"==typeof b?.profileId?{profileId:b.profileId}:{},..."string"==typeof b?.purpose?{purpose:b.purpose}:{},sectionIds:Array.isArray(b?.sectionIds)?b.sectionIds.map(String):[],canWrite:c.includes("writing"),canCalculate:c.includes("production")}}),ab=(b,c)=>(function(a){let b=new Set(a.scopeSectionIds?.length?a.scopeSectionIds:a.contract.sections.map(a=>a.id)),c=new Map;for(let b of a.contract.criteria)b.sectionId&&c.set(b.sectionId,[...c.get(b.sectionId)??[],{applicable:b.applicable}]);let d=a.contract.sections.filter(a=>b.has(a.id)&&(a=>{let b=c.get(a)??[];return!b.length||b.some(a=>a.applicable)})(a.id)),e=a.actors.filter(a=>"writing"===a.purpose||a.canWrite&&"writing"===a.purpose),f=!1!==a.allocationRequired,g=[];if(void 0!==a.workPackageSectionIds){let b=new Set(a.workPackageSectionIds);for(let a of d)b.has(a.id)||g.push({kind:"section-work-package-missing",sectionId:a.id,detail:`章节「${a.title}」还没有已提交工作包;基准必须按工作包/清单成员计算`})}a.requireBaseline&&f&&(a.allocationMissing??0)>0&&g.push({kind:"production-allocation-missing",detail:`${a.allocationMissing} 个工作包成员没有原量分配:委派 purpose=production-calculation 的职责(profileId=construction-method-production),按工作包/工序提交 source-allocation;跨包成员份额合计不得超过原量。分配完成前不会编制认证基准`}),a.requireBaseline&&!a.baselineReady&&g.push({kind:"baseline-incomplete",detail:"执行基准尚未完成:基准完成前不得启动写作"});let h=new Map;for(let a of d){let b=e.filter(b=>b.sectionIds.includes(a.id));h.set(a.id,b),b.length||g.push({kind:"section-unassigned",sectionId:a.id,detail:`章节「${a.title}」没有 purpose=writing 的承接职责`}),b.length>1&&g.push({kind:"section-multi-writer",sectionId:a.id,detail:`章节「${a.title}」由 ${b.length} 个写作职责同时承接(${b.map(a=>a.actorId).join("、")});同一节只能有一个写作承接者`})}for(let c of a.tenderResponsePlan?.sections??[]){if(!b.has(c.sectionId))continue;let a=h.get(c.sectionId)??[],d=c.contentContract?.obligationIds??[];d.length&&!a.length&&g.push({kind:"obligation-unassigned",sectionId:c.sectionId,detail:`章节「${c.title}」承接合同内容义务 ${d.join("、")},但没有写作职责`}),c.requiredOutputs.length&&!a.length&&g.push({kind:"output-unassigned",sectionId:c.sectionId,detail:`章节「${c.title}」有输出义务(${c.requiredOutputs.map(a=>a.basis).join("、")}),但没有写作职责承接`})}let i=[{key:"sections-assigned",passed:!g.some(a=>"section-unassigned"===a.kind),message:g.some(a=>"section-unassigned"===a.kind)?`${g.filter(a=>"section-unassigned"===a.kind).length} 个章节没有写作承接者`:`范围内 ${d.length} 个章节都有写作承接者`},{key:"single-writer",passed:!g.some(a=>"section-multi-writer"===a.kind),message:g.some(a=>"section-multi-writer"===a.kind)?"存在同一节多个写作承接者":"每节写作承接唯一"},{key:"outputs-assigned",passed:!g.some(a=>"output-unassigned"===a.kind||"obligation-unassigned"===a.kind),message:g.some(a=>"output-unassigned"===a.kind||"obligation-unassigned"===a.kind)?"仍有输出/内容义务没有承接者":"输出与内容义务均有承接者"},{key:"work-packages-assigned",passed:!g.some(a=>"section-work-package-missing"===a.kind),message:void 0===a.workPackageSectionIds?"未提供工作包覆盖(调用方未启用该检查)":g.some(a=>"section-work-package-missing"===a.kind)?`${g.filter(a=>"section-work-package-missing"===a.kind).length} 个章节没有工作包`:"章节均有工作包"},{key:"allocations-complete",passed:!(a.requireBaseline&&f&&(a.allocationMissing??0)>0),message:f?(a.allocationMissing??0)>0?`${a.allocationMissing} 个成员没有原量分配`:"工作包成员均已分配":"首版暂定基准不要求原量分配(来源归属主包,生产细化后认证)"},{key:"baseline-ready",passed:!(a.requireBaseline&&!a.baselineReady),message:a.baselineReady?"执行基准已完成":a.requireBaseline?"执行基准未完成":"执行基准待工作包完成后编制"}];return{passed:0===g.length,checks:i,issues:g,feedback:g.map(a=>`- ${a.detail}`)}})({contract:a.contract,actors:aa(),tenderResponsePlan:a.tenderResponsePlan,workPackageSectionIds:b.coveredSectionIds,allocationMissing:0,allocationRequired:!1,baselineReady:!!(a2&&al.current),requireBaseline:c,...aE?{scopeSectionIds:aE}:{}}),ac="",ah=0,ak=0,am=Math.max(1,Math.floor(Z.yv?.gateMaxRounds??20)),ap=!1,aq=0,av=!1,aw=new Set,ax=a=>`预算安全暂停(${ad.enforcement}):${a.violations.map(a=>`${"run"===a.scope?"整轮":`节 ${a.id}`} ${a.metric} ${a.actual} > ${a.limit}${a.includesUnknownUpperBound?"(含未报告用量上界)":""}`).join(";")}。已提交正文保留;补充预算或人工确认后从检查点续跑。`,ay=b=>{if(d)return!0;let c="report-only"===ad.enforcement?[]:(0,n.Ag)(aX(),ad).violations;if(!c.length)return!1;let e=aX();d={violations:c,usage:e,where:b};try{a.onBudgetPause?.(ax(d))}catch{}a$("construction-run-budget-paused",{where:b,enforcement:ad.enforcement,violations:c,usage:e});try{(0,af.tv)(aH,"budget-pause.json",{at:new Date().toISOString(),runId:a.runId,where:b,enforcement:ad.enforcement,budget:ad,violations:c,usage:e},a.runId)}catch{}return!0};aR=()=>{if(ay("before-model-call"))throw Error("CONSTRUCTION_RUN_BUDGET_PAUSED")};let az=new Set,aA=new Map,aB=new Map,aC=Promise.resolve(),aJ=b=>{let c=aT.actor(b),d=Array.isArray(c?.definition.sectionIds)?c.definition.sectionIds.map(String).sort():[],e=(0,x.cD)(aT,{responsibilityId:b,contract:a.contract,expectedBidCompositionHash:(0,x.IQ)(a.bidComposition,a.bidCompositionSources),...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{}});return(0,J.Fu)(d.map(a=>{let b=(0,y.rz)(aT,a),c=new Set(b.map(a=>a.entityId)),d=(0,y.l9)(aT,a),f=[];for(let a;;){let b=aT.issuePage({states:["open","investigating","awaiting-decision"],...void 0===a?{}:{afterSequence:a},limit:200});for(let a of b.issues)"review-finding"===a.kind&&a.scope.entityIds.some(a=>c.has(a))&&f.push(a.id);if(void 0===b.nextAfterSequence)break;a=b.nextAfterSequence}return{sectionId:a,units:b.map(a=>[a.entityId,a.version]),review:[e.applied,e.missingUnitIds.filter(a=>c.has(a))],lock:d?[d.entity.version,d.lock.sectionPlanHash]:null,boundaryKey:(0,E.Pp)(aT,a)?.boundaryKey??null,blocked:aF.has(a),openFindingIds:f.sort()}}))},aK=()=>(0,J.Fu)([al.current??null,aJ(aZ.authority.actorId),aT.supervisedActors(aZ.authority.actorId).map(a=>[a.actorId,aT.actorInstruction(a.actorId)?.version??0,aJ(a.actorId),aT.actorEventFailure(a.actorId)?.receiptId??null])]),aL=a.planningContext||a.tenderResponsePlan?"planning-gate-not-evaluated(规划闸门尚未通过,写作事件不投递)":void 0,aM=async()=>{for(;;){if(a.signal?.throwIfAborted(),ay("event-drain"))return;a6();let b=await (0,u.E)({store:aT,consumerId:V,responsibilities:aU.responsibility,signal:a.signal,limit:a.eventPageSize??Z.N6.authorSections??24,budgetBlockedActors:aw,transportPausedActors:az,pausedInstructionVersions:aA,recoveryStateHash:aJ,stagnationRecoveryHashes:aB,deferActor:a=>{if("hard-stop"===ad.enforcement&&ay("event-dispatch"))return"budget-hard-stop(预算已到上限,停止继续派发)";let b=aT.actor(a)?.definition.assignmentBinding?.purpose;return"production-calculation"===b?a2&&al.current?aL:"provisional-baseline-not-ready(首版暂定基准完成前生产计算不投递)":"writing"===b?a1&&!(a2&&al.current)?"baseline-not-ready(执行基准完成前写作事件不投递)":aL:void 0},onActorSettled:a=>(a6(),aC=aC.catch(a=>a$("construction-progress-boundary-failed",{error:String(a)})).then(async()=>{let b=aJ(a);av=await aN(a)||av;let c=aJ(a);b!==c&&aT.actor(a)?.checkpoint?.status==="yielded"&&aT.enqueueActorContinuation(a,`closure:${c}`,"节收口产生新的实际状态,继续处理本职责其余章节"),ba(!0)}))});if(a.signal?.throwIfAborted(),T+=1,aq=b.consumed,a$("construction-run-event-drain",{drain:T,outcomes:b.outcomes,consumed:b.consumed,scannedPages:b.scannedPages,hasMore:b.hasMore,deferredByConcurrency:b.deferredByConcurrency}),!b.consumed)break}},aN=async b=>{if(!a.structurePlan||a.signal?.aborted||aL||a1&&!(a2&&al.current))return!1;let c=aT.supervisedActors(aZ.authority.actorId).filter(a=>{let c=a.definition.assignmentBinding?.purpose,d=Array.isArray(a.definition.toolFace)?a.definition.toolFace.map(String):[];return"writing"===c&&d.includes("writing")&&(!b||a.actorId===b)}),d=!1,e=Math.max(1,Math.floor(Z.N6.reviewSections??4)),f=[];for(let a of c){let b=Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[];if(b.length)for(let c of b)f.push({actor:a,actorSections:b,sectionId:c})}let g=0,h=async()=>{for(;;){let b=g;if(g+=1,b>=f.length)return;let c=f[b],{actor:e,actorSections:h,sectionId:i}=c;try{let b=await (0,w.H_)({store:aT,contract:a.contract,project:a.project,responsibilityId:e.actorId,sectionId:i,authoritySectionIds:h,...a.structurePlan?{structurePlan:a.structurePlan}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...al.current?{executionBaseline:al.current}:{},projectRoot:a.projectRoot,caller:ar,diagnostics:aV,artifactDir:aH,runId:a.runId,...a.signal?{signal:a.signal}:{},...aZ.sourceCoverageLock?{sourceCoverageLock:aZ.sourceCoverageLock}:{}});if(b.reviewed){let a=b.receipt?.ok?b.receipt.assessments?.length??0:0;void 0!==b.missingAfter&&b.missingAfter.length<b.missingUnitIds.length&&(d=!0),a$("construction-run-section-review",{actorId:e.actorId,sectionId:i,missingUnitIds:b.missingUnitIds,missingAfter:b.missingAfter??[],ok:b.receipt?.ok??!1,applied:a,...b.receipt?.error?{error:b.receipt.error}:{}})}else b.reason&&"no-unreviewed-units"!==b.reason&&a$("construction-run-section-review-skipped",{actorId:e.actorId,sectionId:i,reason:b.reason,...b.planGaps?.length?{planGaps:b.planGaps}:{}});let c=(0,w.OL)({store:aT,contract:a.contract,project:a.project,responsibilityId:e.actorId,sectionId:i,authoritySectionIds:h,...a.structurePlan?{structurePlan:a.structurePlan}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...al.current?{executionBaseline:al.current}:{},lock:!0,lockActorId:J.P6,lockedBy:"mechanical-closure"});c.wroteLock&&c.lock&&(d=!0,a$("construction-run-section-locked",{actorId:e.actorId,sectionId:i,sectionPlanHash:c.sectionPlanHash,unitCount:c.lock.unitVersions.length,reviewApplied:c.lock.review.applied}));let f=c.openFindingIds.length;if(c.contractPassed&&0===c.unreviewedUnitIds.length&&f>0){let b=(0,J.Fu)([(0,y.rz)(aT,i).map(a=>[a.entityId,aT.entity(a.entityId)?.value??null]),c.openFindingIds.map(a=>{let b=aT.issue(a);return b?[b.title,b.detail,b.evidence.filter(a=>!a.startsWith("review-invocation:"))]:null})]),f=aG.get(i)??new Set,g=f.has(b);if(f.add(b),aG.set(i,f),!aF.has(i)&&g){aF.add(i),d=!0;let f=(0,E.Pp)(aT,i);f&&(0,E.ey)({store:aT,sectionId:i,responsibilityId:e.actorId,phase:"blocked",snapshot:f.snapshot,resumeFrom:"reviewing",trigger:"runtime-review-state-repeated",dependencyKeys:[b],reason:"当前正文和未关闭审查动作重复出现,未取得新的处理依据"});let g=(0,E.Pp)(aT,i);g&&(0,v.mr)({actorId:e.actorId,goal:"",documentId:a.documentId,baseDir:aI,sectionId:i,state:g.phase,key:g.boundaryKey,reason:g.reason??""}),a$("construction-run-section-blocked",{actorId:e.actorId,sectionId:i,findingIssueIds:c.openFindingIds,stateFingerprint:b})}else aF.has(i)||g||(d=!0)}else 0===f&&(aG.delete(i),aF.delete(i)&&(d=!0,a$("construction-run-section-unblocked",{actorId:e.actorId,sectionId:i})))}catch(a){a$("construction-run-section-closure-failed",{actorId:c.actor.actorId,sectionId:c.sectionId,error:a instanceof Error?a.message:String(a)})}}};return await Promise.all(Array.from({length:Math.min(e,f.length)},()=>h())),d},aO={generatedDir:(0,$.Gl)(a.projectRoot),projectRoot:a.projectRoot,documentId:a.documentId,monoColor:a.bidComposition?.formatRules.monoColor,fontFamily:a.bidComposition?.formatRules.bodyFont||a.bidComposition?.formatRules.fontFamily,hideCaption:!0},aW=(b=!1,c="generating")=>{if(!h?.owns())return a$("construction-progress-stale",{runId:a.runId,reason:"not-owner",lastSuccess:h?.state().lastSuccess??null}),!1;let f=new Map(a.sectionPlans??[]);for(let b of a.contract.sections){let a=aT.entity(`section-plan:${b.id}`),c=a?.value?.plan;c&&"object"==typeof c&&c.sectionId===b.id&&f.set(b.id,c)}let g=function(a){let b=[];for(let c;;){let d=a.store.entityPage({groupKey:"writing-units",...c?{afterId:c}:{},limit:200});for(let a of d.entities){let c=(0,K.iC)(a);c&&b.push({entityId:a.id,entityVersion:a.version,entityHash:(0,J.Fu)(a),unit:c,responsibilityId:String(a.value?.responsibilityId??""),purpose:String(a.value?.purpose??""),sectionIds:Array.isArray(a.value?.sectionIds)?a.value.sectionIds.map(String):[]})}if(!d.nextAfterId)break;c=d.nextAfterId}let c=a.figureRender?(0,M.rZ)(a.figureRender):void 0,d=new Map(b.map(a=>[a.unit.id,a.entityId])),e=c?(b,e,f)=>{let g=e.replace(/^图\s*\d+(?:[-—–]\d+)?\s*/u,""),h=f??d.get(b.id)??b.id,i=(0,J.Fu)(JSON.parse(JSON.stringify([h,g,b])));if(aj.has(i))return aj.get(i);try{let d=b.planChart?a.executionBaseline?c.renderer({...b,id:h,kind:"figure",caption:g,nodes:[],edges:[],planBaseline:a.executionBaseline,planView:b.planChart.view}):void 0:c.renderer({...b,id:h,kind:"figure",caption:g,nodes:b.nodes??[],edges:b.edges??[]});return aj.size>=512&&aj.delete(aj.keys().next().value),aj.set(i,d),d}catch{aj.size>=512&&aj.delete(aj.keys().next().value),aj.set(i,void 0);return}}:void 0;return{...(0,L.V)({...a,units:b,...e?{figureUrlFor:e}:{},includePlannedSections:!0}),unitCount:b.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))).length}}({store:aT,contract:a.contract,outputPlacements:(0,e.rL)(a.tenderResponsePlan),originalFormRenderer:(0,e.iP)(a.tenderResponsePlan),...f.size?{sectionPlans:f}:{},...aE?{scopeSectionIds:aE}:{},figureRender:aO,...a2&&al.current?{executionBaseline:al.current}:{}}),i=g.issues.map(a=>{let b="section-unwritten"===a.code&&"generating"!==c;return{level:b?"error":"warning",severity:b?"blocker":"warning",category:"structure",message:a.message,...a.sectionId?{source:a.sectionId}:{},...a.unitId?{suggestion:a.unitId}:{},owner:"system"}}),j=(0,X.ip)(a.documentId,{baseDir:aI}).stages,k=[aT.actor(aZ.authority.actorId),...aT.supervisedActors(aZ.authority.actorId)].filter(a=>void 0!==a),l=aD.map(a=>{let b=(0,E.Pp)(aT,a);return{sectionId:a,blocked:aF.has(a),phase:b?.phase??"planned",boundaryKey:b?.boundaryKey??null,reason:b?.reason??null,lock:(0,y.l9)(aT,a)?.entity.version??null}}),m=[];for(let a;;){let b=aT.issuePage({...void 0===a?{}:{afterSequence:a},limit:200});if(m.push(...b.issues.map(a=>({id:a.id,state:a.state,updatedAt:a.updatedAt}))),void 0===b.nextAfterSequence)break;a=b.nextAfterSequence}let n={sectionStates:l,issues:m,actors:k.map(a=>[a.actorId,a.revision,a.checkpoint]),stages:j},o=(0,J.Fu)(JSON.parse(JSON.stringify([g.markdown,n,c]))),p=aT.latestEvent(),q=p?{workspaceId:aT.workspaceId,eventSequence:p.sequence,eventId:p.id}:void 0,r=Date.now(),s=aY(),t={templateId:a.contract.id,templateName:a.title,title:a.title,requirement:a.requirement,...a.bidComposition?{bidComposition:a.bidComposition,exportSettings:(0,ai.b2)(a.bidComposition.formatRules,{anonymize:a.bidComposition.identityMarksForbidden})}:{},projectRoot:a.projectRoot,markdown:g.markdown,facts:Object.fromEntries(a.project.facts.map(a=>[a.key,a.value])),structuredFacts:a.project.facts,factsModel:a.project.factsModel,chapters:g.chapters.map(a=>({id:a.id,title:a.title,content:a.content,evidence:[],missingFacts:[]})),sources:Object.keys(a.project.sources).map(a=>({filePath:a,count:1})),missingItems:["generating"===c?"生成中:运行尚未收口,图件与交付核验待定稿":"运行已停止:保留当前生效正文与待处理状态",...l.filter(a=>a.blocked||"locked"!==a.phase).map(a=>`${a.sectionId}:${a.reason??(a.blocked?"阻塞,待处理具体问题":a.phase)}`),...g.issues.filter(a=>"section-unwritten"===a.code).map(a=>`${a.sectionId??""}:${a.message}`),...m.filter(a=>["open","investigating","awaiting-decision"].includes(a.state)).map(a=>`${a.id}:${a.state}`)],validation:{passed:!1,warnings:[],errors:[]},validationIssues:i,executionStages:j,...s?.length?{sectionProgress:s}:{},...d?{budgetPause:{enforcement:ad.enforcement,where:d.where,message:ax(d),violations:d.violations}}:{},exportGate:{passed:!1,blockingIssues:[],checklist:[{key:"run-finalized",label:"运行及交付核验完成",passed:!1}]},generatedAt:r},u=h.publish({id:a.documentId,taskId:a.runId,runId:a.runId,workflowVersion:ag.E.version,templateId:a.contract.id,templateName:a.title,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.project.snapshotId,markdown:g.markdown,wordCount:g.markdown.replace(/\s+/gu,"").length,status:c,draft:t,executionStages:j,assets:[],createdAt:h.createdAt,updatedAt:r},o,b,q);return u||a$("construction-progress-stale",{runId:a.runId,reason:"not-published",lastSuccess:h.state().lastSuccess??null,composedUnits:g.unitCount,markdownChars:g.markdown.length}),u};ba=aW,aP=()=>{a8=!0},aQ=()=>{a8&&(a9||(a9=!0,Promise.resolve().then(()=>{try{if(a8)try{aW()&&(a8=!1)}catch(a){a$("construction-progress-build-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}}finally{a9=!1}})))},bb=()=>{try{aW(!0,"paused")}catch(a){a$("construction-progress-stop-save-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}},a.signal?.addEventListener("abort",bb,{once:!0});let a_=()=>{let a=0;for(let b of aT.supervisedActors(aZ.authority.actorId))a+=b.revision;return a+(aT.actor(aZ.authority.actorId)?.revision??0)};for(;;){let e;if(ay("chief-round")){b=ax(d);try{aW()}catch(a){a$("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let g=a_();av=!1,a6();let h=!1;try{e=await (0,m.p)({...aZ,coordination:aU,diagnostics:aV,resumeCompleted:_})}catch(a){if(!(a instanceof q.a)&&!(0,s.U)(a))throw a;h=(0,s.U)(a),b=a.message,a$("construction-run-chief-blocked",{round:t+1,reason:a.message,...(0,s.U)(a)?{transportReceipt:a.receipt}:{}}),e=void 0}if(aQ(),!e){let e=aK();if(a.planningContext||a.tenderResponsePlan){let a=a0(),c=ab(a,a1&&!!(a2&&al.current));if(aL=c.passed?void 0:"planning-gate-blocked(主控暂停分支:规划闸门未通过,写作事件不投递)",!c.passed){if(ap=!1,(ak+=1)>=am){b=`规划闸门连续失败 ${ak} 轮(运行保护上限 ${am}):`+c.issues.slice(0,6).map(a=>a.detail).join(";"),a$("construction-run-planning-gate-blocked",{round:t,issues:c.issues,guard:"gate-max-rounds"});break}a$("construction-run-planning-gate-deferred",{stage:"chief-stalled",issues:c.issues})}}if(await aM(),aQ(),d){b=ax(d);try{aW()}catch(a){a$("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}av=await aN();try{aW()}catch(a){a$("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(a1&&(al.current||a4().ready)&&(await a5(),f)){b=`执行基准编制失败:${f}`,a$("construction-run-execution-baseline-blocked",{reason:b});break}let g=aK();if(!h&&al.current&&g!==e){c="执行基准已由工作区工作包/原量分配编制完成。现在可以委派 purpose=writing 的职责;写作职责会按节拿到本节工作包/成员与基准投影,不要另算日期或数量。",b=void 0;continue}aL&&a$("construction-run-planning-gate-blocked",{round:t,reason:aL,guard:"chief-paused-no-business-change"});break}if(t+=1,a$("construction-run-chief-round",{round:t,result:e.result??null,status:e.checkpoint?.status??null}),e.checkpoint?.status==="blocked"){b="主控自报阻塞";break}let i=!!(a.planningContext||a.tenderResponsePlan),j=i?aa():[],k=aT.actorWait(aZ.authority.actorId)?.state==="waiting"||aT.actor(aZ.authority.actorId)?.checkpoint?.status==="completed";if(i&&!al.current&&(a6(),await aM(),aQ(),d)){b=ax(d);try{aW()}catch(a){a$("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let l=i?a0():{packages:[],coveredSectionIds:[],missingSectionIds:[],missingAllocations:[],overAllocated:[]};if(!al.current&&k&&i&&a4().ready&&(await a5(),f)){b=`执行基准编制失败:${f}`,a$("construction-run-execution-baseline-blocked",{reason:b});break}if(a1&&k)try{(al.current||a4().ready)&&await a5(),await a7()}catch(a){b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`,a$("construction-run-execution-baseline-blocked",{reason:b});break}if(i&&(j.length>0||k)){let a=ab(l,a1&&(!!k||!!(a2&&al.current)));if(a$("construction-run-planning-gate",{round:t,passed:a.passed,checks:a.checks,issues:a.issues}),!a.passed){if(ap=!1,aL="planning-gate-blocked(规划闸门未通过,写作事件不投递)",(ak+=1)>=am){b=`规划闸门连续失败 ${ak} 轮(运行保护上限 ${am}):`+a.issues.slice(0,6).map(a=>a.detail).join(";"),a$("construction-run-planning-gate-blocked",{round:t,issues:a.issues,guard:"gate-max-rounds"});break}let d=a.issues.map(a=>`${a.kind}:${a.sectionId??""}`).join("|")||"unknown";if(d===ac?ah+=1:(ac=d,ah=1),ah>=2){b=`规划闸门未通过:${a.issues.slice(0,6).map(a=>a.detail).join(";")}`,a$("construction-run-planning-gate-blocked",{round:t,issues:a.issues});break}c=`【规划闸门\xb7实际缺口】以下承接关系尚未成立(程序按实际角色定义核对,不是转述):
|
|
4
|
+
请按实际状态作出具体裁决;不需要动作时用 \`conclude_construction_organization\` 再次收口。`})();return[a,b].filter(Boolean).join("\n\n")||void 0},aa=()=>aU.supervisedActors(a$.authority.actorId).map(a=>{let b=a.definition.assignmentBinding,c=Array.isArray(a.definition.toolFace)?a.definition.toolFace.map(String):[];return{actorId:a.actorId,..."string"==typeof b?.profileId?{profileId:b.profileId}:{},..."string"==typeof b?.purpose?{purpose:b.purpose}:{},sectionIds:Array.isArray(b?.sectionIds)?b.sectionIds.map(String):[],canWrite:c.includes("writing"),canCalculate:c.includes("production")}}),ab=(b,c)=>(function(a){let b=new Set(a.scopeSectionIds?.length?a.scopeSectionIds:a.contract.sections.map(a=>a.id)),c=new Map;for(let b of a.contract.criteria)b.sectionId&&c.set(b.sectionId,[...c.get(b.sectionId)??[],{applicable:b.applicable}]);let d=a.contract.sections.filter(a=>b.has(a.id)&&(a=>{let b=c.get(a)??[];return!b.length||b.some(a=>a.applicable)})(a.id)),e=a.actors.filter(a=>"writing"===a.purpose||a.canWrite&&"writing"===a.purpose),f=!1!==a.allocationRequired,g=[];if(void 0!==a.workPackageSectionIds){let b=new Set(a.workPackageSectionIds);for(let a of d)b.has(a.id)||g.push({kind:"section-work-package-missing",sectionId:a.id,detail:`章节「${a.title}」还没有已提交工作包;基准必须按工作包/清单成员计算`})}a.requireBaseline&&f&&(a.allocationMissing??0)>0&&g.push({kind:"production-allocation-missing",detail:`${a.allocationMissing} 个工作包成员没有原量分配:委派 purpose=production-calculation 的职责(profileId=construction-method-production),按工作包/工序提交 source-allocation;跨包成员份额合计不得超过原量。分配完成前不会编制认证基准`}),a.requireBaseline&&!a.baselineReady&&g.push({kind:"baseline-incomplete",detail:"执行基准尚未完成:基准完成前不得启动写作"});let h=new Map;for(let a of d){let b=e.filter(b=>b.sectionIds.includes(a.id));h.set(a.id,b),b.length||g.push({kind:"section-unassigned",sectionId:a.id,detail:`章节「${a.title}」没有 purpose=writing 的承接职责`}),b.length>1&&g.push({kind:"section-multi-writer",sectionId:a.id,detail:`章节「${a.title}」由 ${b.length} 个写作职责同时承接(${b.map(a=>a.actorId).join("、")});同一节只能有一个写作承接者`})}for(let c of a.tenderResponsePlan?.sections??[]){if(!b.has(c.sectionId))continue;let a=h.get(c.sectionId)??[],d=c.contentContract?.obligationIds??[];d.length&&!a.length&&g.push({kind:"obligation-unassigned",sectionId:c.sectionId,detail:`章节「${c.title}」承接合同内容义务 ${d.join("、")},但没有写作职责`}),c.requiredOutputs.length&&!a.length&&g.push({kind:"output-unassigned",sectionId:c.sectionId,detail:`章节「${c.title}」有输出义务(${c.requiredOutputs.map(a=>a.basis).join("、")}),但没有写作职责承接`})}let i=[{key:"sections-assigned",passed:!g.some(a=>"section-unassigned"===a.kind),message:g.some(a=>"section-unassigned"===a.kind)?`${g.filter(a=>"section-unassigned"===a.kind).length} 个章节没有写作承接者`:`范围内 ${d.length} 个章节都有写作承接者`},{key:"single-writer",passed:!g.some(a=>"section-multi-writer"===a.kind),message:g.some(a=>"section-multi-writer"===a.kind)?"存在同一节多个写作承接者":"每节写作承接唯一"},{key:"outputs-assigned",passed:!g.some(a=>"output-unassigned"===a.kind||"obligation-unassigned"===a.kind),message:g.some(a=>"output-unassigned"===a.kind||"obligation-unassigned"===a.kind)?"仍有输出/内容义务没有承接者":"输出与内容义务均有承接者"},{key:"work-packages-assigned",passed:!g.some(a=>"section-work-package-missing"===a.kind),message:void 0===a.workPackageSectionIds?"未提供工作包覆盖(调用方未启用该检查)":g.some(a=>"section-work-package-missing"===a.kind)?`${g.filter(a=>"section-work-package-missing"===a.kind).length} 个章节没有工作包`:"章节均有工作包"},{key:"allocations-complete",passed:!(a.requireBaseline&&f&&(a.allocationMissing??0)>0),message:f?(a.allocationMissing??0)>0?`${a.allocationMissing} 个成员没有原量分配`:"工作包成员均已分配":"首版暂定基准不要求原量分配(来源归属主包,生产细化后认证)"},{key:"baseline-ready",passed:!(a.requireBaseline&&!a.baselineReady),message:a.baselineReady?"执行基准已完成":a.requireBaseline?"执行基准未完成":"执行基准待工作包完成后编制"}];return{passed:0===g.length,checks:i,issues:g,feedback:g.map(a=>`- ${a.detail}`)}})({contract:a.contract,actors:aa(),tenderResponsePlan:a.tenderResponsePlan,workPackageSectionIds:b.coveredSectionIds,allocationMissing:0,allocationRequired:!1,baselineReady:!!(a3&&al.current),requireBaseline:c,...aF?{scopeSectionIds:aF}:{}}),ac="",ah=0,ak=0,am=Math.max(1,Math.floor(Z.yv?.gateMaxRounds??20)),ap=!1,aq=0,aw=!1,ax=new Set,ay=a=>`预算安全暂停(${ad.enforcement}):${a.violations.map(a=>`${"run"===a.scope?"整轮":`节 ${a.id}`} ${a.metric} ${a.actual} > ${a.limit}${a.includesUnknownUpperBound?"(含未报告用量上界)":""}`).join(";")}。已提交正文保留;补充预算或人工确认后从检查点续跑。`,az=b=>{if(d)return!0;let c="report-only"===ad.enforcement?[]:(0,n.Ag)(aY(),ad).violations;if(!c.length)return!1;let e=aY();d={violations:c,usage:e,where:b};try{a.onBudgetPause?.(ay(d))}catch{}a_("construction-run-budget-paused",{where:b,enforcement:ad.enforcement,violations:c,usage:e});try{(0,af.tv)(aI,"budget-pause.json",{at:new Date().toISOString(),runId:a.runId,where:b,enforcement:ad.enforcement,budget:ad,violations:c,usage:e},a.runId)}catch{}return!0};aS=()=>{if(az("before-model-call"))throw Error("CONSTRUCTION_RUN_BUDGET_PAUSED")};let aA=new Set,aB=new Map,aC=new Map,aD=Promise.resolve(),aK=b=>{let c=aU.actor(b),d=Array.isArray(c?.definition.sectionIds)?c.definition.sectionIds.map(String).sort():[],e=(0,x.cD)(aU,{responsibilityId:b,contract:a.contract,expectedBidCompositionHash:(0,x.IQ)(a.bidComposition,a.bidCompositionSources),...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{}});return(0,J.Fu)(d.map(a=>{let b=(0,y.rz)(aU,a),c=new Set(b.map(a=>a.entityId)),d=(0,y.l9)(aU,a),f=[];for(let a;;){let b=aU.issuePage({states:["open","investigating","awaiting-decision"],...void 0===a?{}:{afterSequence:a},limit:200});for(let a of b.issues)"review-finding"===a.kind&&a.scope.entityIds.some(a=>c.has(a))&&f.push(a.id);if(void 0===b.nextAfterSequence)break;a=b.nextAfterSequence}return{sectionId:a,units:b.map(a=>[a.entityId,a.version]),review:[e.applied,e.missingUnitIds.filter(a=>c.has(a))],lock:d?[d.entity.version,d.lock.sectionPlanHash]:null,boundaryKey:(0,E.Pp)(aU,a)?.boundaryKey??null,blocked:aG.has(a),openFindingIds:f.sort()}}))},aL=()=>(0,J.Fu)([al.current??null,aK(a$.authority.actorId),aU.supervisedActors(a$.authority.actorId).map(a=>[a.actorId,aU.actorInstruction(a.actorId)?.version??0,aK(a.actorId),aU.actorEventFailure(a.actorId)?.receiptId??null])]),aM=a.planningContext||a.tenderResponsePlan?"planning-gate-not-evaluated(规划闸门尚未通过,写作事件不投递)":void 0,aN=async()=>{for(;;){if(a.signal?.throwIfAborted(),az("event-drain"))return;a7();let b=await (0,u.E)({store:aU,consumerId:V,responsibilities:aV.responsibility,signal:a.signal,limit:a.eventPageSize??Z.N6.authorSections??24,budgetBlockedActors:ax,transportPausedActors:aA,pausedInstructionVersions:aB,recoveryStateHash:aK,stagnationRecoveryHashes:aC,deferActor:a=>{if("hard-stop"===ad.enforcement&&az("event-dispatch"))return"budget-hard-stop(预算已到上限,停止继续派发)";let b=aU.actor(a)?.definition.assignmentBinding?.purpose;return"production-calculation"===b?a3&&al.current?aM:"provisional-baseline-not-ready(首版暂定基准完成前生产计算不投递)":"writing"===b?a2&&!(a3&&al.current)?"baseline-not-ready(执行基准完成前写作事件不投递)":aM:void 0},onActorSettled:a=>(a7(),aD=aD.catch(a=>a_("construction-progress-boundary-failed",{error:String(a)})).then(async()=>{let b=aK(a);aw=await aO(a)||aw;let c=aK(a);b!==c&&aU.actor(a)?.checkpoint?.status==="yielded"&&aU.enqueueActorContinuation(a,`closure:${c}`,"节收口产生新的实际状态,继续处理本职责其余章节"),bb(!0)}))});if(a.signal?.throwIfAborted(),T+=1,aq=b.consumed,a_("construction-run-event-drain",{drain:T,outcomes:b.outcomes,consumed:b.consumed,scannedPages:b.scannedPages,hasMore:b.hasMore,deferredByConcurrency:b.deferredByConcurrency}),!b.consumed)break}},aO=async b=>{if(!a.structurePlan||a.signal?.aborted||aM||a2&&!(a3&&al.current))return!1;let c=aU.supervisedActors(a$.authority.actorId).filter(a=>{let c=a.definition.assignmentBinding?.purpose,d=Array.isArray(a.definition.toolFace)?a.definition.toolFace.map(String):[];return"writing"===c&&d.includes("writing")&&(!b||a.actorId===b)}),d=!1,e=Math.max(1,Math.floor(Z.N6.reviewSections??4)),f=[];for(let a of c){let b=Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[];if(b.length)for(let c of b)f.push({actor:a,actorSections:b,sectionId:c})}let g=0,h=async()=>{for(;;){let b=g;if(g+=1,b>=f.length)return;let c=f[b],{actor:e,actorSections:h,sectionId:i}=c;try{let b=await (0,w.H_)({store:aU,contract:a.contract,project:a.project,responsibilityId:e.actorId,sectionId:i,authoritySectionIds:h,...a.structurePlan?{structurePlan:a.structurePlan}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...al.current?{executionBaseline:al.current}:{},projectRoot:a.projectRoot,caller:as,diagnostics:aW,artifactDir:aI,runId:a.runId,...a.signal?{signal:a.signal}:{},...a$.sourceCoverageLock?{sourceCoverageLock:a$.sourceCoverageLock}:{}});if(b.reviewed){let a=b.receipt?.ok?b.receipt.assessments?.length??0:0;void 0!==b.missingAfter&&b.missingAfter.length<b.missingUnitIds.length&&(d=!0),a_("construction-run-section-review",{actorId:e.actorId,sectionId:i,missingUnitIds:b.missingUnitIds,missingAfter:b.missingAfter??[],ok:b.receipt?.ok??!1,applied:a,...b.receipt?.error?{error:b.receipt.error}:{}})}else b.reason&&"no-unreviewed-units"!==b.reason&&a_("construction-run-section-review-skipped",{actorId:e.actorId,sectionId:i,reason:b.reason,...b.planGaps?.length?{planGaps:b.planGaps}:{}});let c=(0,w.OL)({store:aU,contract:a.contract,project:a.project,responsibilityId:e.actorId,sectionId:i,authoritySectionIds:h,...a.structurePlan?{structurePlan:a.structurePlan}:{},...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.planningContext?{planningContext:a.planningContext}:{},...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},...al.current?{executionBaseline:al.current}:{},lock:!0,lockActorId:J.P6,lockedBy:"mechanical-closure"});c.wroteLock&&c.lock&&(d=!0,a_("construction-run-section-locked",{actorId:e.actorId,sectionId:i,sectionPlanHash:c.sectionPlanHash,unitCount:c.lock.unitVersions.length,reviewApplied:c.lock.review.applied}));let f=c.openFindingIds.length;if(c.contractPassed&&0===c.unreviewedUnitIds.length&&f>0){let b=(0,J.Fu)([(0,y.rz)(aU,i).map(a=>[a.entityId,aU.entity(a.entityId)?.value??null]),c.openFindingIds.map(a=>{let b=aU.issue(a);return b?[b.title,b.detail,b.evidence.filter(a=>!a.startsWith("review-invocation:"))]:null})]),f=aH.get(i)??new Set,g=f.has(b);if(f.add(b),aH.set(i,f),!aG.has(i)&&g){aG.add(i),d=!0;let f=(0,E.Pp)(aU,i);f&&(0,E.ey)({store:aU,sectionId:i,responsibilityId:e.actorId,phase:"blocked",snapshot:f.snapshot,resumeFrom:"reviewing",trigger:"runtime-review-state-repeated",dependencyKeys:[b],reason:"当前正文和未关闭审查动作重复出现,未取得新的处理依据"});let g=(0,E.Pp)(aU,i);g&&(0,v.mr)({actorId:e.actorId,goal:"",documentId:a.documentId,baseDir:aJ,sectionId:i,state:g.phase,key:g.boundaryKey,reason:g.reason??""}),a_("construction-run-section-blocked",{actorId:e.actorId,sectionId:i,findingIssueIds:c.openFindingIds,stateFingerprint:b})}else aG.has(i)||g||(d=!0)}else 0===f&&(aH.delete(i),aG.delete(i)&&(d=!0,a_("construction-run-section-unblocked",{actorId:e.actorId,sectionId:i})))}catch(a){a_("construction-run-section-closure-failed",{actorId:c.actor.actorId,sectionId:c.sectionId,error:a instanceof Error?a.message:String(a)})}}};return await Promise.all(Array.from({length:Math.min(e,f.length)},()=>h())),d},aP={generatedDir:(0,$.Gl)(a.projectRoot),projectRoot:a.projectRoot,documentId:a.documentId,monoColor:a.bidComposition?.formatRules.monoColor,fontFamily:a.bidComposition?.formatRules.bodyFont||a.bidComposition?.formatRules.fontFamily,hideCaption:!0},aX=(b=!1,c="generating")=>{if(!h?.owns())return a_("construction-progress-stale",{runId:a.runId,reason:"not-owner",lastSuccess:h?.state().lastSuccess??null}),!1;let f=new Map(a.sectionPlans??[]);for(let b of a.contract.sections){let a=aU.entity(`section-plan:${b.id}`),c=a?.value?.plan;c&&"object"==typeof c&&c.sectionId===b.id&&f.set(b.id,c)}let g=function(a){let b=[];for(let c;;){let d=a.store.entityPage({groupKey:"writing-units",...c?{afterId:c}:{},limit:200});for(let a of d.entities){let c=(0,K.iC)(a);c&&b.push({entityId:a.id,entityVersion:a.version,entityHash:(0,J.Fu)(a),unit:c,responsibilityId:String(a.value?.responsibilityId??""),purpose:String(a.value?.purpose??""),sectionIds:Array.isArray(a.value?.sectionIds)?a.value.sectionIds.map(String):[]})}if(!d.nextAfterId)break;c=d.nextAfterId}let c=a.figureRender?(0,M.rZ)(a.figureRender):void 0,d=new Map(b.map(a=>[a.unit.id,a.entityId])),e=c?(b,e,f)=>{let g=e.replace(/^图\s*\d+(?:[-—–]\d+)?\s*/u,""),h=f??d.get(b.id)??b.id,i=(0,J.Fu)(JSON.parse(JSON.stringify([h,g,b])));if(aj.has(i))return aj.get(i);try{let d=b.planChart?a.executionBaseline?c.renderer({...b,id:h,kind:"figure",caption:g,nodes:[],edges:[],planBaseline:a.executionBaseline,planView:b.planChart.view}):void 0:c.renderer({...b,id:h,kind:"figure",caption:g,nodes:b.nodes??[],edges:b.edges??[]});return aj.size>=512&&aj.delete(aj.keys().next().value),aj.set(i,d),d}catch{aj.size>=512&&aj.delete(aj.keys().next().value),aj.set(i,void 0);return}}:void 0;return{...(0,L.V)({...a,units:b,...e?{figureUrlFor:e}:{},includePlannedSections:!0}),unitCount:b.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))).length}}({store:aU,contract:a.contract,outputPlacements:(0,e.rL)(a.tenderResponsePlan),originalFormRenderer:(0,e.iP)(a.tenderResponsePlan),...f.size?{sectionPlans:f}:{},...aF?{scopeSectionIds:aF}:{},figureRender:aP,...a3&&al.current?{executionBaseline:al.current}:{}}),i=g.issues.map(a=>{let b="section-unwritten"===a.code&&"generating"!==c;return{level:b?"error":"warning",severity:b?"blocker":"warning",category:"structure",message:a.message,...a.sectionId?{source:a.sectionId}:{},...a.unitId?{suggestion:a.unitId}:{},owner:"system"}}),j=(0,X.ip)(a.documentId,{baseDir:aJ}).stages,k=[aU.actor(a$.authority.actorId),...aU.supervisedActors(a$.authority.actorId)].filter(a=>void 0!==a),l=aE.map(a=>{let b=(0,E.Pp)(aU,a);return{sectionId:a,blocked:aG.has(a),phase:b?.phase??"planned",boundaryKey:b?.boundaryKey??null,reason:b?.reason??null,lock:(0,y.l9)(aU,a)?.entity.version??null}}),m=[];for(let a;;){let b=aU.issuePage({...void 0===a?{}:{afterSequence:a},limit:200});if(m.push(...b.issues.map(a=>({id:a.id,state:a.state,updatedAt:a.updatedAt}))),void 0===b.nextAfterSequence)break;a=b.nextAfterSequence}let n={sectionStates:l,issues:m,actors:k.map(a=>[a.actorId,a.revision,a.checkpoint]),stages:j},o=(0,J.Fu)(JSON.parse(JSON.stringify([g.markdown,n,c]))),p=aU.latestEvent(),q=p?{workspaceId:aU.workspaceId,eventSequence:p.sequence,eventId:p.id}:void 0,r=Date.now(),s=aZ(),t={templateId:a.contract.id,templateName:a.title,title:a.title,requirement:a.requirement,...a.bidComposition?{bidComposition:a.bidComposition,exportSettings:(0,ai.b2)(a.bidComposition.formatRules,{anonymize:a.bidComposition.identityMarksForbidden})}:{},projectRoot:a.projectRoot,markdown:g.markdown,facts:Object.fromEntries(a.project.facts.map(a=>[a.key,a.value])),structuredFacts:a.project.facts,factsModel:a.project.factsModel,chapters:g.chapters.map(a=>({id:a.id,title:a.title,content:a.content,evidence:[],missingFacts:[]})),sources:Object.keys(a.project.sources).map(a=>({filePath:a,count:1})),missingItems:["generating"===c?"生成中:运行尚未收口,图件与交付核验待定稿":"运行已停止:保留当前生效正文与待处理状态",...l.filter(a=>a.blocked||"locked"!==a.phase).map(a=>`${a.sectionId}:${a.reason??(a.blocked?"阻塞,待处理具体问题":a.phase)}`),...g.issues.filter(a=>"section-unwritten"===a.code).map(a=>`${a.sectionId??""}:${a.message}`),...m.filter(a=>["open","investigating","awaiting-decision"].includes(a.state)).map(a=>`${a.id}:${a.state}`)],validation:{passed:!1,warnings:[],errors:[]},validationIssues:i,executionStages:j,...s?.length?{sectionProgress:s}:{},...d?{budgetPause:{enforcement:ad.enforcement,where:d.where,message:ay(d),violations:d.violations}}:{},exportGate:{passed:!1,blockingIssues:[],checklist:[{key:"run-finalized",label:"运行及交付核验完成",passed:!1}]},generatedAt:r},u=h.publish({id:a.documentId,taskId:a.runId,runId:a.runId,workflowVersion:ag.E.version,templateId:a.contract.id,templateName:a.title,title:a.title,requirement:a.requirement,projectRoot:a.projectRoot,projectId:a.project.snapshotId,markdown:g.markdown,wordCount:g.markdown.replace(/\s+/gu,"").length,status:c,draft:t,executionStages:j,assets:[],createdAt:h.createdAt,updatedAt:r},o,b,q);return u||a_("construction-progress-stale",{runId:a.runId,reason:"not-published",lastSuccess:h.state().lastSuccess??null,composedUnits:g.unitCount,markdownChars:g.markdown.length}),u};bb=aX,aQ=()=>{a9=!0},aR=()=>{a9&&(ba||(ba=!0,Promise.resolve().then(()=>{try{if(a9)try{aX()&&(a9=!1)}catch(a){a_("construction-progress-build-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}}finally{ba=!1}})))},bc=()=>{try{aX(!0,"paused")}catch(a){a_("construction-progress-stop-save-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}},a.signal?.addEventListener("abort",bc,{once:!0});let a0=()=>{let a=0;for(let b of aU.supervisedActors(a$.authority.actorId))a+=b.revision;return a+(aU.actor(a$.authority.actorId)?.revision??0)};for(;;){let e;if(az("chief-round")){b=ay(d);try{aX()}catch(a){a_("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let g=a0();aw=!1,a7();let h=!1;try{e=await (0,m.p)({...a$,coordination:aV,diagnostics:aW,resumeCompleted:_})}catch(a){if(!(a instanceof q.a)&&!(0,s.U)(a))throw a;h=(0,s.U)(a),b=a.message,a_("construction-run-chief-blocked",{round:t+1,reason:a.message,...(0,s.U)(a)?{transportReceipt:a.receipt}:{}}),e=void 0}if(aR(),!e){let e=aL();if(a.planningContext||a.tenderResponsePlan){let a=a1(),c=ab(a,a2&&!!(a3&&al.current));if(aM=c.passed?void 0:"planning-gate-blocked(主控暂停分支:规划闸门未通过,写作事件不投递)",!c.passed){if(ap=!1,(ak+=1)>=am){b=`规划闸门连续失败 ${ak} 轮(运行保护上限 ${am}):`+c.issues.slice(0,6).map(a=>a.detail).join(";"),a_("construction-run-planning-gate-blocked",{round:t,issues:c.issues,guard:"gate-max-rounds"});break}a_("construction-run-planning-gate-deferred",{stage:"chief-stalled",issues:c.issues})}}if(await aN(),aR(),d){b=ay(d);try{aX()}catch(a){a_("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}aw=await aO();try{aX()}catch(a){a_("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(a2&&(al.current||a5().ready)&&(await a6(),f)){b=`执行基准编制失败:${f}`,a_("construction-run-execution-baseline-blocked",{reason:b});break}let g=aL();if(!h&&al.current&&g!==e){c="执行基准已由工作区工作包/原量分配编制完成。现在可以委派 purpose=writing 的职责;写作职责会按节拿到本节工作包/成员与基准投影,不要另算日期或数量。",b=void 0;continue}aM&&a_("construction-run-planning-gate-blocked",{round:t,reason:aM,guard:"chief-paused-no-business-change"});break}if(t+=1,a_("construction-run-chief-round",{round:t,result:e.result??null,status:e.checkpoint?.status??null}),e.checkpoint?.status==="blocked"){b="主控自报阻塞";break}let i=!!(a.planningContext||a.tenderResponsePlan),j=i?aa():[],k=aU.actorWait(a$.authority.actorId)?.state==="waiting"||aU.actor(a$.authority.actorId)?.checkpoint?.status==="completed";if(i&&!al.current&&(a7(),await aN(),aR(),d)){b=ay(d);try{aX()}catch(a){a_("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let l=i?a1():{packages:[],coveredSectionIds:[],missingSectionIds:[],missingAllocations:[],overAllocated:[]};if(!al.current&&k&&i&&a5().ready&&(await a6(),f)){b=`执行基准编制失败:${f}`,a_("construction-run-execution-baseline-blocked",{reason:b});break}if(a2&&k)try{(al.current||a5().ready)&&await a6(),await a8()}catch(a){b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`,a_("construction-run-execution-baseline-blocked",{reason:b});break}if(i&&(j.length>0||k)){let a=ab(l,a2&&(!!k||!!(a3&&al.current)));if(a_("construction-run-planning-gate",{round:t,passed:a.passed,checks:a.checks,issues:a.issues}),!a.passed){if(ap=!1,aM="planning-gate-blocked(规划闸门未通过,写作事件不投递)",(ak+=1)>=am){b=`规划闸门连续失败 ${ak} 轮(运行保护上限 ${am}):`+a.issues.slice(0,6).map(a=>a.detail).join(";"),a_("construction-run-planning-gate-blocked",{round:t,issues:a.issues,guard:"gate-max-rounds"});break}let d=a.issues.map(a=>`${a.kind}:${a.sectionId??""}`).join("|")||"unknown";if(d===ac?ah+=1:(ac=d,ah=1),ah>=2){b=`规划闸门未通过:${a.issues.slice(0,6).map(a=>a.detail).join(";")}`,a_("construction-run-planning-gate-blocked",{round:t,issues:a.issues});break}c=`【规划闸门\xb7实际缺口】以下承接关系尚未成立(程序按实际角色定义核对,不是转述):
|
|
5
5
|
${a.feedback.join("\n")}
|
|
6
|
-
请补齐承接:可以委派/修订职责、调整章节归属或增加具备相应工具面的职责;具体谁做、按什么顺序做由你决定。如果某项确属不适用,请在职责目标与成果要求里写明理由,而不是静默不派。`,a$("construction-run-planning-gate-deferred",{round:t,issues:a.issues});continue}ah=0,ak=0,ac="",ap=!0,aL=void 0}if(i||(ap=!0),await aM(),aQ(),d){b=ax(d);try{aW()}catch(a){a$("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}av=await aN();try{aW()}catch(a){a$("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(aT.actorWait(aZ.authority.actorId)?.state==="waiting"||aT.actor(aZ.authority.actorId)?.checkpoint?.status==="completed"){let a=aT.supervisedActors(aZ.authority.actorId);if(a.every(a=>aT.actor(a.actorId)?.checkpoint?.status==="completed")||!av&&!a.some(a=>aT.actorEventFailure(a.actorId)))break}if(a_()===g&&0===aq&&!av){a$("construction-run-no-change",{chiefRounds:t,drains:T});break}}try{a1&&al.current&&await a5(),await a7()}catch(a){b||(b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`)}let a3=()=>{if(!a.sectionPlans?.size)return[];let b=aE?new Set(aE):void 0;return a.contract.sections.filter(a=>!b||b.has(a.id)).flatMap(b=>{let c=a.sectionPlans.get(b.id);if(!c)return[];let d=new Set((0,y.rz)(aT,b.id).map(a=>a.subsectionId).filter(a=>!!a)),e=c.subsections.filter(a=>!d.has(a.subsectionId));if(!e.length)return[];let f=aT.supervisedActors(aZ.authority.actorId).find(a=>Array.isArray(a.definition.sectionIds)&&a.definition.sectionIds.includes(b.id));return f?[{section:b,missing:e,owner:f}]:[]})},bd=a3();if(bd.length&&!d&&!a.signal?.aborted&&!b){for(let a of bd)aT.enqueueActorContinuation(a.owner.actorId,`completion-gap:${a.section.id}:${(0,J.Fu)(a.missing.map(a=>a.subsectionId))}`,`计划小节未写:${a.missing.slice(0,8).map(a=>a.title).join("、")};只补这些小节,使用已有 facts/evidence,补完再 finalize_section;不得删除或重写已生效小节。`);a$("construction-completion-gap-sweep",{sections:bd.map(a=>({sectionId:a.section.id,missing:a.missing.map(a=>a.title),actorId:a.owner.actorId}))}),await aM(),bd=a3()}let be=aT.supervisedActors(aZ.authority.actorId),bf=a=>String(a.definition.assignmentBinding?.purpose??""),bg=new Set(["source-check","method-decision","production-calculation"]),bh=be.filter(a=>bg.has(bf(a))),bi=be.filter(a=>!bg.has(bf(a))),bj=bi.length?bi:be,bk=b=>b.filter(a=>{let b=aT.actor(a.actorId);return!b?.checkpoint||"completed"!==b.checkpoint.status&&!b.leaseToken}).map(b=>{let c=aT.actor(b.actorId);return{actorId:b.actorId,reason:aT.actorWait(b.actorId)?.reason??(b=>{if(!b)return"未形成完整成果";let c=b.checkpoint;if(c?.status!=="paused"&&c?.status!=="yielded")return"未形成完整成果";let d="string"==typeof c.key?c.key:void 0,e="string"==typeof c.file?c.file:void 0;if(!d||!e)return"paused:原因未记录(检查点引用不完整)";try{let b=(0,r.Vq)(aH,"string"==typeof c.runId?c.runId:a.runId,d).load(e);if(b?.status==="yielded"&&b.invocationBoundary)return`${b.invocationBoundary.sectionId}:${b.invocationBoundary.state}:${b.invocationBoundary.reason}`;return`paused:${b?.blockedMessage??b?.blockedReason??"原因未记录"}`}catch{return"paused:原因未记录(检查点不可读)"}})(c)}}),bl=bk(bj),bm=bk(bh),bn=aV.llm.callLog??[],bo=at(bn),bp=()=>(function(a){let b,c,d=[],f=new Map;for(;;){let c=a.store.entityPage({groupKey:"writing-units",...b?{afterId:b}:{},limit:200});for(let a of c.entities){let b=(0,K.iC)(a);if(!b)continue;let c=a.value??{};d.push({entityId:a.id,entityVersion:a.version,entityHash:(0,J.Fu)(a),responsibilityId:String(c.responsibilityId??""),purpose:String(c.purpose??""),unit:b,sectionIds:Array.isArray(c.sectionIds)?c.sectionIds.map(String):[]}),"figure"===b.kind&&f.set(a.id,{entityVersion:a.version,entityHash:(0,J.Fu)(a),unitId:b.id})}if(!c.nextAfterId)break;b=c.nextAfterId}let g=a.figureRender?(0,M.rZ)(a.figureRender):void 0,h=new Map(d.map(a=>[a.unit.id,a.entityId])),i=new Set,j=[],k=(0,e.rL)(a.tenderResponsePlan),l=(0,L.V)({contract:a.contract,units:d,outputPlacements:k,originalFormRenderer:(0,e.iP)(a.tenderResponsePlan),...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.scopeSectionIds?.length?{scopeSectionIds:a.scopeSectionIds}:{},...g?{figureUrlFor:(b,c,d)=>{let e=c.replace(/^图\s*\d+(?:[-—–]\d+)?\s*/u,""),f=a=>{j.push({level:"error",severity:"blocker",category:"structure",message:`图件「${b.caption??b.id}」未能渲染:${a instanceof Error?a.message:String(a)};补齐/修正节点边或空间布局后重试`})};try{if(b.planChart){if(!a.executionBaseline)return f(Error("计划图必须由执行基准渲染,本次运行没有可用基准"));let c=g.renderer({...b,id:d??h.get(b.id),kind:"figure",caption:e,nodes:[],edges:[],planBaseline:a.executionBaseline,planView:b.planChart.view});for(let a of"string"==typeof c?[c]:c)i.add(a);return c}let c=g.renderer({...b,id:d??h.get(b.id),kind:"figure",caption:e,nodes:b.nodes??[],edges:b.edges??[]});for(let a of"string"==typeof c?[c]:c)i.add(a);return c}catch(a){return f(a)}}}:{}}),m=(g?.receipts()??[]).map(a=>{let b=f.get(a.unitId);if(!b)throw Error("CONSTRUCTION_FIGURE_SOURCE_IDENTITY_REQUIRED");return{...a,entityId:a.unitId,...b}}),n=new Set(["figure","diagram","org_chart","chart"]);for(let b of a.tenderResponsePlan?.sections??[])for(let a of b.requiredOutputs.filter(a=>n.has(a.form))){let c=d.filter(a=>a.sectionIds.includes(b.sectionId)).filter(b=>"figure"===b.unit.kind&&(!a.id||b.unit.outputId===a.id)),e=a.basis||a.id||"未命名必出图";if(!c.length){j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」没有图件载体:${b.sectionId} 必须有 kind=figure 的单元承接`});continue}for(let a of(c.length>1&&j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」有 ${c.length} 个图件载体;一张点名图只能有一个主载体`}),c)){let b=m.find(b=>b.entityId===a.entityId);if(!b){j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」已写单元但未渲染资产:${a.entityId}`});continue}let c=b.file.split(/[\\/]/u).at(-1)??b.file;l.markdown.includes(c)||j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」已渲染但未进入正文:${c}`}),(a.unit.caption??"").trim()||j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」缺少题注(图号/图题由正文承担)`})}}let o=[];for(;;){let b=a.store.issuePage({states:["open","investigating","awaiting-decision","resolved","invalidated"],...void 0===c?{}:{afterSequence:c},limit:200});if(o.push(...b.issues.map(b=>"review-finding"===b.kind?(0,G.N7)(a.store,b):b)),void 0===b.nextAfterSequence)break;c=b.nextAfterSequence}let p=(0,x.IQ)(a.bidComposition,a.bidCompositionSources),q=(0,x.T9)(a.store,p,a.tenderResponsePlan),r=(0,x.S2)(a.store).map(b=>({id:b.id,...b.value.reviewInvocationId?{reviewInvocationId:b.value.reviewInvocationId}:{},unitRefs:b.value.unitRefs.map(a=>({id:a.id,version:a.version})),criterionIds:b.value.levels.map(a=>a.criterionId),claimsSupported:(0,x.O0)(a.store,b.value),current:(0,x.O4)(a.store,b.value,void 0,p,a.tenderResponsePlan)})),s=a.qualityLevels&&a.qualityLevelsProvenance?a.qualityLevels:void 0,t=s??(Object.keys(q.levels).length?q.levels:void 0),u=!!a.sectionPlans?.size,v=a.contract.sections.filter(b=>!a.scopeSectionIds?.length||a.scopeSectionIds.includes(b.id)).flatMap(b=>{let c=(0,E.Pp)(a.store,b.id);if(u){let d=a.sectionPlans?.get(b.id);if(!d)return[{sectionId:b.id,reason:`${b.id}: 未生成冻结节计划,本节未进入写作`}];if(!c)return[{sectionId:b.id,reason:`${b.id}: 节轨道未建立(无 section-state)`}];if("locked"!==c.phase&&"closed-with-items"!==c.phase)return[{sectionId:b.id,reason:`${b.id}: ${c.phase}${c.reason?`:${c.reason}`:":本节尚未 resolved/locked"}`}];let e=new Set((0,y.rz)(a.store,b.id).map(a=>a.subsectionId).filter(a=>!!a)),f=d.subsections.filter(a=>!e.has(a.subsectionId));return f.length?[{sectionId:b.id,reason:`${b.id}: ${f.length} 个计划小节没有正文:${f.slice(0,6).map(a=>a.title).join("、")}`}]:[]}return c&&"locked"!==c.phase&&("blocked"===c.phase||c.snapshot.sectionPlanHash)?[{sectionId:b.id,reason:`${b.id}: ${c.phase}${c.reason?`:${c.reason}`:":当前节尚未按新协议完成收口"}`}]:[]}),w=a.planningContext?(0,D.planningApplicabilityGaps)(a.planningContext):[],z=new Set(w.map(a=>(0,J.Fu)(a))),R=[...new Map([...a.tenderResponsePlan?.applicabilityGaps??[],...w].map(a=>[a.obligationId+":"+a.reason,a])).values()],S=d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))),T=(0,B.$H)(l.markdown,l.deliveryPlacements,{outputPlacements:k,units:S});for(let b of(T.valid||R.push({obligationId:"delivery-placement",kind:"output",reason:T.issues.join(";")}),a.planningContext?.outputObligations??[])){if("tender-required"!==b.kind||!(0,C.oY)(b)||a.scopeSectionIds?.length&&!a.tenderResponsePlan?.sections.some(c=>a.scopeSectionIds.includes(c.sectionId)&&c.requiredOutputs.some(a=>a.obligationId===b.id)))continue;if(1!==k.filter(a=>a.obligationId===b.id).length){R.push({obligationId:b.id,kind:"output",reason:"必交输出没有唯一当前交付位置与原格式承接映射"});continue}let c=l.deliveryPlacements.units.filter(a=>a.binding?.obligationId===b.id);(1!==c.length||c[0].location!==b.applicability.delivery.location)&&R.push({obligationId:b.id,kind:"output",reason:"必交输出尚未实际装配到已核位置,不能凭标题或规划认定完成"})}let U=(0,A.b)({contract:a.contract,plan:a.tenderResponsePlan,units:d,composition:l,figureAssets:m,figureStyle:a.figureRender,assessments:(0,x.S2)(a.store),reviewStore:a.store,expectedBidCompositionHash:p,scopeSectionIds:a.scopeSectionIds});for(let a of U.filter(a=>"met"!==a.status))R.push({obligationId:a.obligationId||a.outputId,kind:"output",reason:a.checks.filter(a=>"met"!==a.status).map(a=>a.reason).join(";")});let V=R.filter(a=>z.has((0,J.Fu)(a))),W=R.filter(a=>!z.has((0,J.Fu)(a))),X=function(a){let b=function(a){let b=[],c=a.scopeSectionIds?.length?new Set(a.scopeSectionIds):void 0,d=c?new Set(a.contract.sections.filter(a=>c.has(a.id)).map(a=>a.chapterId)):void 0,e=a=>!!c&&(a.sectionId?!c.has(a.sectionId):!!a.chapterId&&!d.has(a.chapterId)),f=a.issues.filter(G.S0),g=(a.reviewAssessments??[]).filter(a=>a.current),h=new Set(g.flatMap(a=>a.unitRefs.map(a=>`${a.id}::${a.version}`))).size,i=[...new Set(g.map(a=>a.reviewInvocationId).filter(a=>!!a))].sort(),j=a.scopeSectionIds?.length?a.scopeSectionIds:void 0,k=new Set(j?a.units.filter(a=>(a.sectionIds??[]).some(a=>j.includes(a))).map(a=>a.entityId):a.units.map(a=>a.entityId)),l=a.units.filter(a=>k.has(a.entityId)),m=a.issues.filter(a=>"review-finding"===a.kind&&a.scope.entityIds.some(a=>k.has(a))),n=m.filter(G.S0),o=m.filter(a=>"resolved"===a.state),p=new Map;for(let a of g.filter(a=>!1!==a.claimsSupported))for(let b of a.unitRefs)void 0===a.criterionIds?p.set(b.id,void 0):p.has(b.id)&&void 0===p.get(b.id)||p.set(b.id,new Set([...p.get(b.id)??[],...a.criterionIds]));let q=new Set(l.filter(b=>p.has(b.entityId)&&(b.unit.criterionIds?.length?b.unit.criterionIds:a.contract.criteria.filter(a=>a.applicable&&(b.sectionIds??[]).includes(a.sectionId??"")).map(a=>a.id)).every(a=>void 0===p.get(b.entityId)||p.get(b.entityId).has(a))).map(a=>a.entityId)),r={rounds:new Set((a.reviewAssessments??[]).filter(a=>a.unitRefs.some(a=>k.has(a.id))).map(a=>a.reviewInvocationId??a.id)).size,openFindings:n.length,resolvedFindings:o.length,unitsWithOpenFindings:new Set(n.flatMap(a=>a.scope.entityIds.filter(a=>k.has(a)))).size,converged:!a.incompleteSections?.length&&0===n.length&&l.length>0&&l.every(a=>q.has(a.entityId))},s=b=>{let c=a.contract.criteria.find(a=>a.id===b)?.sectionId;return a.units.filter(a=>{let d=a.unit.criterionIds??[];return d.length?d.includes(b):!!c&&(a.sectionIds??[]).includes(String(c))}).map(a=>a.entityId)},t=[];for(let c of a.contract.criteria){if(!c.applicable||e(c))continue;let d=a.incompleteSections?.filter(b=>b.sectionId===c.sectionId||!c.sectionId&&a.contract.sections.some(a=>a.id===b.sectionId&&a.chapterId===c.chapterId))??[];if(d.length){t.push({criterionId:c.id,status:"not-met",reason:d.map(a=>a.reason).join(";")}),b.push({criterionId:c.id,dimension:c.dimension,reason:d.map(a=>a.reason).join(";")});continue}let g=s(c.id);if(!g.length){t.push({criterionId:c.id,status:"unmeasured",reason:"尚未有生效正文声明服务本条要求"}),b.push({criterionId:c.id,dimension:c.dimension,reason:"没有生效正文覆盖"});continue}let h=f.filter(a=>a.scope.entityIds.some(a=>g.includes(a)));if(h.length){t.push({criterionId:c.id,status:"not-met",reason:`独立审查仍有未关闭意见:${h.map(a=>a.title).join(";")}`}),b.push({criterionId:c.id,dimension:c.dimension,reason:h.map(a=>`${a.id}:${a.title}`).join(";")});continue}let i=void 0!==a.reviewAssessments?g.filter(a=>!p.has(a)||void 0!==p.get(a)&&!p.get(a).has(c.id)):[];if(i.length){t.push({criterionId:c.id,status:"unmeasured",reason:`独立审查尚未给出档位:本条要求有 ${i.length} 个当前单元未完整审查`}),b.push({criterionId:c.id,dimension:c.dimension,reason:"逐单元准则档位未齐"});continue}let j=a.qualityLevels?.[c.id];if(!j){t.push({criterionId:c.id,status:"unmeasured",reason:"已有正文覆盖,但独立审查尚未给出档位"}),b.push({criterionId:c.id,dimension:c.dimension,reason:"独立审查未给档位"});continue}t.push({criterionId:c.id,status:"met",qualityLevel:j,reason:"独立审查已核正文并给出档位"})}let u=(0,H._n)(a.contract,t,a.scopeSectionIds?.length?{scopeSectionIds:a.scopeSectionIds}:{}),v=a.applicabilityGaps??[];for(let a of v)b.push({criterionId:`tender-applicability:${a.obligationId}`,dimension:"technical-scope",reason:a.reason});return{findings:t,receipt:v.length?{...u,deliveryReady:!1,verificationComplete:!1,defects:[...u.defects,...v.map(a=>({id:`tender-applicability:${a.obligationId}`,criterionIds:[],impact:"blocking",status:"unmeasured",reason:a.reason}))]}:u,gaps:b,reviewedUnits:h,reviewInvocations:i,reviewConvergence:r}}(a),c=b.receipt,d=a.reviewAssessments??[];return{version:I.Ly,contractId:a.contract.id,projectSnapshotId:a.projectSnapshotId,documentHash:a.documentHash,modelIdentity:a.modelIdentity,...a.authorModelHash?{authorModelHash:a.authorModelHash}:{},findings:b.findings,batches:d.map(a=>({id:a.reviewInvocationId??a.id,expectedIds:[...new Set(a.unitRefs.map(a=>a.id))],status:a.current?"executed":"unmeasured",...a.current?{}:{reason:"审查档位绑定的是被审单元的旧版本(作者已修订),本次回执不继承"}})),score:c,primary:!0,expertValidated:!1,reviewConvergence:b.reviewConvergence}}({contract:a.contract,incompleteSections:v,applicabilityGaps:W,units:d.map(a=>({entityId:a.entityId,responsibilityId:a.responsibilityId,unit:a.unit,sectionIds:a.sectionIds})),issues:o,documentHash:l.documentHash,projectSnapshotId:a.projectSnapshotId,modelIdentity:a.modelIdentity,...a.authorModelHash?{authorModelHash:a.authorModelHash}:{},reviewAssessments:r,...a.scopeSectionIds?.length?{scopeSectionIds:a.scopeSectionIds}:{},...t?{qualityLevels:t}:{}}),Y=S.filter(a=>"figure"===a.unit.kind).flatMap(a=>[a.unit.caption??"",...(a.unit.nodes??[]).map(a=>a.label)]).join("\n"),Z=(0,N.Vl)(`${l.markdown}
|
|
7
|
-
${Y}`,a.bidComposition?.identityMarksForbidden),$=(0,O.Sz)(l.markdown).map(a=>({level:"error",severity:"blocker",category:"structure",owner:"system",message:a.message})),_=[...j];for(let b of d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b)))){let c=a.sectionPlans?.get(b.sectionIds[0]),d=c?.subsections.find(a=>a.subsectionId===b.unit.subsectionId)?.contentContract;for(let c of(d&&b.unit.contentContractHash!==d.hash&&_.push({level:"error",severity:"blocker",category:"structure",message:`单元 ${b.entityId} 的内容契约身份已失效`}),(0,e.B$)(b.unit,a.tenderResponsePlan,b.sectionIds)))_.push({level:"error",severity:"blocker",category:"structure",message:`单元 ${b.entityId} 的位置/原格式绑定无效:${c}`});for(let a of(0,F.dA)(b.unit))_.push({level:"error",severity:"blocker",category:"fact_consistency",message:`单元 ${b.entityId} 主张/实现片段无效:${a}`})}let aa=v.map(a=>({level:"error",severity:"blocker",category:"structure",message:a.reason}));if(a.planningContext&&a.sectionPlans?.size){let b=a.contract.chapters[0]?.sectionIds[0],c=!b||!a.scopeSectionIds?.length||a.scopeSectionIds.includes(b);if(b&&c){let c=(0,P.XI)(a.planningContext);for(let e of(0,P.Gm)({sectionId:b,isFirstSection:!0,units:d.filter(a=>a.sectionIds.includes(b)).map(a=>a.unit),facts:c.facts,...c.projectName?{projectName:c.projectName}:{},...a.sectionPlans?.get(b)?{sectionPlan:a.sectionPlans.get(b)}:{}}))aa.push({level:"error",severity:"blocker",category:"structure",message:e.message})}}let ab=W.map(a=>({level:"error",severity:"blocker",category:"structure",message:`招标义务 ${a.obligationId} 必交交付缺口:${a.reason}`})),ac=V.map(a=>({level:"warning",severity:"warning",category:"structure",message:`招标义务 ${a.obligationId} 适用性待核:${a.reason}`})),ad=[...$,..._,...(0,Q.Kf)(a.bidComposition)?a.inspectBodyContent?a.inspectBodyContent({markdown:l.markdown,spec:a.bidComposition,deliveryPlacements:l.deliveryPlacements,outputPlacements:k,isVerifiedDiagram:a=>i.has(a),unrenderedDiagramCount:g?0:d.filter(b=>"figure"===b.unit.kind&&(!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b)))).length}):[(0,Q.Hr)(l.markdown)]:[]];return{...l,identityIssues:Z,bodyPolicyIssues:ad,sectionStateIssues:aa,applicabilityIssues:ab,applicabilityWarnings:ac,unitCount:d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))).length,figureAssets:m,receipt:{...X,deliveryPlacements:l.deliveryPlacements,originalFormVerifications:U,reviewAssessments:{applied:q.applied,stale:q.stale,...s?{provenance:a.qualityLevelsProvenance}:{}}}}})({store:aT,contract:a.contract,projectSnapshotId:a.project.snapshotId,tenderResponsePlan:a.tenderResponsePlan,planningContext:a.planningContext,...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},modelIdentity:bo,figureRender:aO,inspectBodyContent:au,...a2&&al.current?{executionBaseline:al.current}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},..."unmeasured"!==bo?{authorModelHash:(0,j.createHash)("sha256").update(bo).digest("hex")}:{},...aE?{scopeSectionIds:aE}:{}}),bq=bp(),br=[];if(a.jsonCaller&&0===bl.length&&ap&&0===bd.length&&!bq.issues.some(a=>"section-unwritten"===a.code))try{let b=bq.chapters.map(a=>({id:a.id,title:a.title,content:a.content})),c=a.structurePlan?(0,R.F_)(a.structurePlan).map(({section:a,chapter:b})=>{let c=(0,y.rz)(aT,a.sectionId).map(a=>{let b=(0,K.iC)(aT.entity(a.entityId));return b?.text??b?.caption??""}).filter(Boolean).join("\n").slice(0,400);return{sectionId:a.sectionId,chapterId:b.chapterId,title:a.title,contentGroup:a.contentGroup,digest:c}}):a.contract.sections.map(a=>({sectionId:a.id,chapterId:a.chapterId,title:a.title})),d=await an({runId:a.runId,artifactDir:aH,chapters:b,sections:c,caller:a.jsonCaller,diagnostics:aV,signal:a.signal});br=d.findings,d.calls&&a$("construction-final-document-review",{calls:d.calls,chapters:d.chaptersReviewed,findings:d.findings.length,p0:d.findings.filter(a=>"P0"===a.severity).length,p1:d.findings.filter(a=>"P1"===a.severity).length});let e=d.findings.filter(a=>"P0"===a.severity||"P1"===a.severity);if(e.length&&a.sectionPlans?.size){let b=[],c=[],d=[],f=new Map;for(let a of e){if(!a.sectionId||!a.quote||!a.replacement){b.push({sectionId:a.sectionId??"",reason:"缺少 sectionId/quote/replacement,无法程序化替换"});continue}f.set(a.sectionId,[...f.get(a.sectionId)??[],a])}for(let[e,g]of f){let f=a.sectionPlans.get(e);if(!f){b.push({sectionId:e,reason:"缺少冻结节计划"});continue}let h=(0,y.rz)(aT,e),i=h.flatMap(a=>{let b=(0,K.iC)(aT.entity(a.entityId));return b?[{entityId:a.entityId,sectionIds:[e],unit:b}]:[]}),j=new Map;for(let a of g){let c=i.find(b=>"paragraph"===b.unit.kind&&(b.unit.text??"").includes(a.quote));if(!c){b.push({sectionId:e,reason:`找不到逐字片段:${a.quote.slice(0,40)}`});continue}let d=j.get(c.entityId)??c.unit.text??"";if(!d.includes(a.quote)){b.push({sectionId:e,reason:`同一单元的前序替换已改变片段:${a.quote.slice(0,40)}`});continue}j.set(c.entityId,d.replace(a.quote,a.replacement))}if(!j.size)continue;let k=aT.entity([...j.keys()][0]),l=String(k?.value?.responsibilityId??"");if(!l){b.push({sectionId:e,reason:"写作单元缺少职责身份"});continue}try{let g=(0,ao.y)({store:aT,contract:a.contract,authority:{actorId:l,memberIndices:[],sectionIds:[e]},project:a.project,evidenceExists:b=>(a.project.sourceControls??[]).some(a=>a.factId===b&&"verified-source-excerpt"===a.roleId),evidenceText:b=>(a.project.sourceControls??[]).find(a=>a.factId===b&&"verified-source-excerpt"===a.roleId)?.value,...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a2&&al.current?{executionBaseline:al.current}:{},...a.structurePlan?{structurePlan:a.structurePlan}:{},sectionPlan:f,responsibilityId:l,sectionIds:[e],unitEntityIds:h.map(a=>a.entityId),sectionUnits:i,unitReplacements:[...j].map(([a,b])=>({unitEntityId:a,replacement:b}))});for(let a of(g.appliedUnitIds.length&&(c.push(e),d.push(...g.appliedUnitIds)),g.refused))b.push({sectionId:e,reason:a})}catch(a){b.push({sectionId:e,reason:a instanceof Error?a.message:String(a)})}}if(c.length){for(let b of new Set(c)){let c=a.sectionPlans.get(b),d=(0,y.rz)(aT,b)[0]?.entityId,e=String(aT.entity(d??"")?.value?.responsibilityId??"");c&&e&&(0,E.ey)({store:aT,sectionId:b,responsibilityId:e,phase:"closed-with-items",trigger:"final-document-review-revision",reason:"整稿终审定向修订后正文已变更;未重新送节级复审,按未决项收口",snapshot:{structurePlanHash:a.structurePlan?.planHash,sectionPlanHash:c.sectionPlanHash,unitVersions:(0,y.rz)(aT,b).map(a=>({entityId:a.entityId,version:a.version})),unreviewedUnitIds:[],sourceReviewComplete:!0,blockingFindingIds:(0,G.bF)(aT,(0,y.rz)(aT,b).map(a=>a.entityId)).filter(G.S0).map(a=>a.id)}})}bq=bp(),a$("construction-final-document-revision",{appliedSections:c,appliedUnits:d,refused:b,reFinalized:!0})}else a$("construction-final-document-revision",{appliedSections:[],appliedUnits:[],refused:b})}}catch(a){a$("construction-final-document-review-failed",{error:a instanceof Error?a.message:String(a)})}let bs=a.tenderResponsePlan?(0,S.sV)({plan:aE?{...a.tenderResponsePlan,sections:a.tenderResponsePlan.sections.filter(a=>aE.includes(a.sectionId))}:a.tenderResponsePlan,contract:a.contract,markdown:bq.markdown,outputIdsBySection:bq.outputIdsBySection}):void 0;bs&&(0,af.tv)(aH,"tender-response-audit.json",bs,a.runId);let bt=a2?al.current:void 0,bu=bt?[...(0,U._D)(bq.markdown,bt),...(0,U.Pu)(bq.markdown,bt),...(0,U.ke)(bq.markdown,bt),...(0,U.mM)(bq.markdown,bt)]:[];bt&&(0,af.tv)(aH,"execution-baseline-audit.json",{runId:a.runId,baselineHash:(0,J.Fu)((0,U.PI)(bt)),issues:bu},a.runId);let bv=(0,W.M)(bq.markdown);(0,af.tv)(aH,"language-quality-audit.json",{runId:a.runId,issues:bv},a.runId);let bw=(0,X.ip)(a.documentId,{baseDir:aI}).stages,bx=(0,I.pT)(bq.receipt),by=(0,I.R3)(bq.receipt),bz=bj.length>0&&bj.every(a=>aT.actor(a.actorId)?.checkpoint?.status==="completed"),bA=bq.issues.filter(a=>"section-unwritten"===a.code).length,bB=aX(),bC=function(a,b={}){let c=[],d=a.filter(a=>"not-sent"!==a.usageStatus),e=a=>Number.isSafeInteger(a.call.cacheHitTokens)&&Number.isSafeInteger(a.call.cacheMissTokens),f=d.filter(a=>"reported"!==a.usageStatus||p(a.unknownAttemptUsage)>0||!Number.isSafeInteger(a.call.inputTokens)||!Number.isSafeInteger(a.call.outputTokens)||!e(a)&&(void 0!==a.call.cacheHitTokens||void 0!==a.call.cacheMissTokens));c.push({id:"usage-reported",passed:0===f.length,...f.length?{detail:`${f.length} 条调用存在未报告用量(未知不记零):${f.slice(0,3).map(a=>a.call.kind).join("、")}`}:{}});let g=d.filter(a=>e(a)&&Number.isSafeInteger(a.call.inputTokens)&&p(a.call.cacheHitTokens)+p(a.call.cacheMissTokens)!==p(a.call.inputTokens));c.push({id:"cache-conservation",passed:0===g.length,...g.length?{detail:`${g.length} 条调用 cacheHit+cacheMiss≠inputTokens`}:{}});let h=d.filter(a=>void 0!==a.actualProviderInvocations&&p(a.call.providerAttempts)!==p(a.actualProviderInvocations));c.push({id:"provider-attempts",passed:0===h.length,...h.length?{detail:`${h.length} 条调用的 providerAttempts 与实际运输尝试不一致`}:{}});let i=a=>d.reduce((b,c)=>b+p(c.call[a]),0),j=d.filter(a=>(0,o.K)(a.call.kind)),k=d.filter(a=>"reasoning"===a.call.taskKind),l=Math.max(1,Math.trunc(b.sectionCount??1)),m=b.budget?.perSection.maxInputTokens??4e5,n=d.reduce((a,b)=>a+(a=>{let b=p(a.unknownAttemptUsage);return"reported"!==a.usageStatus||!Number.isSafeInteger(a.call.inputTokens)||b?Number.isSafeInteger(a.call.inputChars)&&Number(a.call.inputChars)>0?Number(a.call.inputChars):m:0})(b),0);if(b.budget){let a=b.budget.perSection.maxReviewCalls;if(void 0!==a&&a>0){let b=a*l;c.push({id:"review-budget",passed:j.length<=b,...j.length>b?{detail:`审查调用 ${j.length} 次 > 预算 ${b} 次`}:{}})}let e=b.budget.perSection.maxThinkCalls*l;c.push({id:"think-budget",passed:k.length<=e,...k.length>e?{detail:`推演调用 ${k.length} 次 > 预算 ${e} 次`}:{}});let f=b.budget.perRun?.maxCalls;void 0!==f&&c.push({id:"run-call-budget",passed:d.length<=f,...d.length>f?{detail:`调用 ${d.length} 次 > 整轮预算 ${f} 次`}:{}});let g=b.budget.perRun?.maxInputTokens,h=i("inputTokens")+n;void 0!==g&&c.push({id:"run-token-budget",passed:h<=g,...h>g?{detail:`输入 token ${i("inputTokens")}${n?` + 未知上界 ${n}`:""} = ${h} > 整轮预算 ${g}`}:{}})}let q=new Map;for(let b of a){if(b.call.ok)continue;let a=`${b.call.kind}:${b.call.actorId??"unassigned"}:${b.call.failureKind??"unknown"}`;q.set(a,(q.get(a)??0)+1)}let r=[...q.entries()].filter(([,a])=>a>1).map(([a])=>a);return c.push({id:"deterministic-waste",passed:!0,...r.length?{detail:`${r.length} 个失败签名重复出现(报告项,不等同于缺陷):${r.slice(0,5).join("、")}`}:{}}),{ok:c.every(a=>a.passed),checks:c,totals:{calls:d.length,providerInvocations:d.reduce((a,b)=>a+p(b.call.providerAttempts),0),inputTokens:i("inputTokens"),outputTokens:i("outputTokens"),cacheHitTokens:i("cacheHitTokens"),cacheMissTokens:i("cacheMissTokens"),unknownUsageCalls:f.length,unknownInputTokenUpperBound:n},review:{calls:j.length,inputTokens:j.reduce((a,b)=>a+p(b.call.inputTokens),0),outputTokens:j.reduce((a,b)=>a+p(b.call.outputTokens),0)},think:{calls:k.length,inputTokens:k.reduce((a,b)=>a+p(b.call.inputTokens),0)},deterministicWaste:{repeatedFailures:r.length,signatures:r}}}(bn.map(a=>{let b=a.transportActivities?.filter(a=>"not-started"!==a.providerInvocation),c=b?.length??a.providerAttempts??0;return{usageStatus:0===c?"not-sent":void 0===a.inputTokens||void 0===a.outputTokens?"unreported":"reported",actualProviderInvocations:c,unknownAttemptUsage:b?b.filter(a=>!a.usage).length:void 0===a.inputTokens||void 0===a.outputTokens?a.providerAttempts??0:0,call:a}}),{budget:ad,sectionCount:bB.sections.length}),bD={usage:bB,audit:bC,reviewCalls:bB.run.reviewCalls??0,...void 0===bB.run.reviewInputTokens?{}:{reviewInputTokens:bB.run.reviewInputTokens},thinkCalls:bB.run.thinkCalls??0,...void 0===bB.run.thinkInputTokens?{}:{thinkInputTokens:bB.run.thinkInputTokens},unknownUsageCalls:bB.run.unknownUsageCalls,...bB.run.reviewUnknownUsageCalls?{reviewUnknownUsageCalls:bB.run.reviewUnknownUsageCalls}:{},...bB.run.thinkUnknownUsageCalls?{thinkUnknownUsageCalls:bB.run.thinkUnknownUsageCalls}:{}},bE=(0,w.eW)({store:aT,project:a.project,contract:a.contract}),bF={},bG=[];for(let a of["construction",""]){let b=i().join(aH,a,"write-check-failures.jsonl");try{if(!g().existsSync(b))continue;for(let a of(bG.push(b),g().readFileSync(b,"utf8").split("\n")))if(a.trim())try{for(let b of JSON.parse(a).blocking??[])b.code&&(bF[b.code]=(bF[b.code]??0)+1)}catch{}}catch{}}let bH={runId:a.runId,generatedAt:new Date().toISOString(),...bE,writeCheckFailureCounts:bF,writeCheckFailureTotal:Object.values(bF).reduce((a,b)=>a+b,0),notMetSections:bE.perSection.filter(a=>"blocked"===a.phase||"closed-with-items"===a.phase).map(a=>({sectionId:a.sectionId,phase:a.phase,reason:a.reason??"未记录原因"}))};(0,af.tv)(aH,"run-source-review-readings.json",bH,a.runId);let bI=new Set(["plan-chart-unrendered","criterion-unknown","unit-unassigned","tertiary-numbering-missing","section-hierarchy-invalid","section-parent-order-invalid","section-unwritten","carrier-caption-missing","carrier-section-ambiguous","carrier-number-duplicate","carrier-reference-unresolved","carrier-reference-leaked"]),bJ=!bq.issues.some(a=>bI.has(a.code)||/^(?:delivery-placement|original-form|original-figure)/u.test(a.code)),bK=0===bq.identityIssues.length,bL=0===bq.bodyPolicyIssues.length,bM=0===bq.sectionStateIssues.length,bN=!!bt&&0===bu.length,bO=!bv.some(a=>"blocker"===a.severity),bP=ap&&bx&&bz&&0===bl.length&&0===bA&&bJ&&bK&&bL&&bM&&bN&&bO,bQ={planningGate:ap,receiptReady:bx,qualityReady:by,responsibilitiesComplete:bz,waiting:bl.length,missingSections:bA,compositionValid:bJ,identityMarksValid:bK,bodyPolicyValid:bL,sectionStates:bM,executionBaseline:bN,languageQuality:bO},bR=[...b?[{level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`主控本轮未继续推进:${b}`}]:[],...bq.identityIssues,...bq.bodyPolicyIssues,...bq.sectionStateIssues,...bq.issues.map(a=>({level:"error",severity:bI.has(a.code)?"blocker":"warning",category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}})),...bq.applicabilityIssues,...bq.applicabilityWarnings,...bs?.issues.map(a=>({level:"error",severity:a.severity,category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}}))??[],...bu.map(a=>({level:"error",severity:"blocker",category:"structure",owner:"system",message:`执行基准不一致:${a.message}${a.evidence?`(${a.evidence})`:""}`})),...bv.map(a=>({level:"blocker"===a.severity?"error":"warning",severity:a.severity,category:"structure",owner:"system",message:`语言质量${"blocker"===a.severity?"阻断":"提示"}:${a.message}${a.line?`(第 ${a.line} 行)`:""}`})),...bq.receipt.score.qualityGaps.map(a=>({level:"error",severity:"warning",category:"professional_chain",owner:"system",message:`专业档位不足:${a.criterionId};${a.reason}`})),...ap?[]:[{level:"error",severity:"blocker",category:"structure",owner:"system",message:`规划闸门未通过${b?`:${b}`:":章节/义务/输出/基准承接不完整"}`}]],bS=[];for(let a of bq.receipt.findings.filter(a=>"met"!==a.status))bS.push({key:(0,J.Fu)(["criterion",a.criterionId,a.reason]),source:"contract-criterion",severity:"blocking"===a.impact?"blocker":"warning",target:a.criterionId,message:a.reason,disposition:"not-met"===a.status?"not-met":"unmeasured"});for(let a of bq.receipt.score.qualityGaps)bS.push({key:(0,J.Fu)(["quality-gap",a.criterionId,a.reason]),source:"quality-gap",severity:"warning",target:a.criterionId,message:a.reason,disposition:"quality-gap"});for(let a of bR)bS.push({key:(0,J.Fu)(["issue",a.category,a.message]),source:"run-issue",severity:"blocker"===a.severity?"blocker":"warning",message:a.message,disposition:"open"});for(let b of a.contract.sections){let a=(0,E.Pp)(aT,b.id);a?.phase==="closed-with-items"&&bS.push({key:(0,J.Fu)(["closed-with-items",b.id,a.reason??""]),source:"section",severity:"warning",target:b.id,message:a.reason??"审查/修订达到上限,按未决项收口",disposition:"recorded-unresolved"})}for(let a of br)bS.push({key:(0,J.Fu)(["final-document-review",a.severity,a.sectionId??"",a.quote??"",a.problem]),source:"final-document-review",severity:"P0"===a.severity?"blocker":"warning",...a.sectionId?{target:a.sectionId}:{},message:`[${a.severity}] ${a.problem};修法:${a.fix}`,disposition:"recorded"});let bT=[...new Map(bS.map(a=>[a.key,a])).values()].sort((a,b)=>a.severity===b.severity?a.message.localeCompare(b.message):"blocker"===a.severity?-1:1),bU={total:bT.length,blocker:bT.filter(a=>"blocker"===a.severity).length,warning:bT.filter(a=>"warning"===a.severity).length};(0,af.tv)(aH,"run-issue-ledger.json",{version:"run-issue-ledger-v1",runId:a.runId,documentId:a.documentId,documentHash:bq.receipt.documentHash,counts:bU,entries:bT},a.runId),a$("construction-run-issue-ledger",bU);try{let b=(g().existsSync(aH)?g().readdirSync(aH).filter(a=>/^llm-call-\d+\.json$/u.test(a)).sort():[]).flatMap(a=>{try{let b=JSON.parse(g().readFileSync(i().join(aH,a),"utf8"));return b.call?[{file:a,usageStatus:b.usageStatus,unknownAttemptUsage:b.unknownAttemptUsage??0,...b.call}]:[]}catch{return[]}}),c=new Map;for(let a of b){let b=a.transportActivities?.find(a=>a.requestInput?.sha256)?.requestInput?.sha256;b&&c.set(b,[...c.get(b)??[],a.file])}let d=[...c.entries()].filter(([,a])=>a.length>1).map(([a,b])=>({requestHash:a,files:b})),e={version:"run-call-audit-v1",runId:a.runId,calls:b.length,inputTokens:b.reduce((a,b)=>a+(b.inputTokens??0),0),outputTokens:b.reduce((a,b)=>a+(b.outputTokens??0),0),maxInputChars:Math.max(0,...b.map(a=>a.inputChars??0)),cacheHitTokens:b.reduce((a,b)=>a+(b.cacheHitTokens??0),0),cacheMissTokens:b.reduce((a,b)=>a+(b.cacheMissTokens??0),0),unknownUsageCalls:b.filter(a=>"reported"!==a.usageStatus&&"not-sent"!==a.usageStatus).length,emptyCalls:b.filter(a=>!0===a.ok&&(a.outputChars??0)===0&&(a.emittedToolCalls??0)===0).length,duplicateInputCalls:d.reduce((a,b)=>a+b.files.length,0),duplicateInputGroups:d.slice(0,20)};(0,af.tv)(aH,"run-call-audit.json",e,a.runId),a$("construction-run-call-audit",{calls:e.calls,duplicateInputCalls:e.duplicateInputCalls,emptyCalls:e.emptyCalls,unknownUsageCalls:e.unknownUsageCalls})}catch{}let bV=a.deliveryAssets?(()=>{let b=(0,ae.vx)(aT,a.project,{documentHash:bq.receipt.documentHash}),c=(b,c)=>(0,af.tv)(aH,b,c,a.runId);return c("run-inputs.json",{runId:a.runId,documentId:a.documentId,generatedAt:new Date().toISOString(),...a.materialRoot?{materialRoot:a.materialRoot}:{},...a.generationProjectId?{generationProjectId:a.generationProjectId}:{},sources:Object.entries(a.project.sources).map(([a,b])=>({filePath:a,sha256:b.sha256}))}),c("document-contract.json",a.contract),c("project-model.json",a.project),c("contract-quality.json",bq.receipt),c("document-delivery-placements.json",{runId:a.runId,documentId:a.documentId,workspaceId:aT.workspaceId,planningContextHash:a.planningContext?(0,J.Fu)(a.planningContext):null,documentHash:bq.documentHash,placements:bq.deliveryPlacements}),c("construction-source-coverage.json",b),a$("construction-run-delivery-assets",{status:b.status,sources:b.sources.length,referenced:b.sources.filter(a=>a.referenceCount).length,unreferenced:b.unreferenced.length,missingOpinions:b.missingOpinions.length,omissions:b.omissions.length,reasons:b.reasons}),{key:"source-coverage-ledger",label:"来源覆盖账(引用+未引用处置)",passed:!0,..."measured"===b.status?{}:{message:`来源覆盖意见待核(不阻断完整稿):${b.reasons.join(";")}`}}})():void 0;bV?.message&&bR.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:bV.message}),bV&&(bP=bP&&bV.passed,bQ={...bQ,sourceCoverage:bV.passed});let bW=[...bs?.issues.filter(a=>"blocker"===a.severity)??[],...bq.applicabilityIssues];bP=bP&&0===bW.length,bQ={...bQ,tenderResponse:{passed:0===bW.length,...bW.length?{message:`${bW.length} 项招标响应或适用性问题尚未解决:${bW.slice(0,3).map(a=>a.message).join(";")}`}:{}}};let bX=aY(),bY=function(a){let{input:b,finalized:c}=a,d=a.scopeSectionIds?.length?[...new Set(a.scopeSectionIds)]:void 0,e=d?b.contract.sections.filter(a=>!d.includes(a.id)).length:0,f=[...new Set([...a.waiting.map(a=>`${a.actorId}:${a.reason}`),...(a.advisoryWaiting??[]).map(a=>`非首版必需职责(参谋/生产细化) ${a.actorId}:${a.reason}(不阻断完整初稿,细化结论另行审查/认证)`),...a.chiefBlocked?[`主控未继续推进:${a.chiefBlocked}`]:[],...0===a.responsibilities.total?["本次运行没有委派任何专业职责:没有正文成果"]:[],...a.responsibilities.total>a.responsibilities.completed?[`${a.responsibilities.total-a.responsibilities.completed} 条职责未完成(共 ${a.responsibilities.total} 条)`]:[],...e?[`范围外章节 ${e} 节未在本次运行内(本次为范围运行,全稿未完成)`]:[],...a.blockedSections?.length?[`${a.blockedSections.length} 节因内容/审查动作重复且无新依据而阻塞:${a.blockedSections.join("、")};这些节未锁定,交付回执按未达标记录`]:[]])],g=[...new Set([...a.issues.map(a=>a.message),...f])];a.executionBaselineRef.current?.allocationBasis==="provisional-source-ownership"&&g.push("执行基准为来源归属暂定口径:跨包清单行按主包一次计量,正文数字待生产细化/认证后复核");let h={templateId:b.contract.id,templateName:b.title,title:b.title,requirement:b.requirement,...b.bidComposition?{bidComposition:b.bidComposition,exportSettings:(0,ai.b2)(b.bidComposition.formatRules,{anonymize:b.bidComposition.identityMarksForbidden})}:{},projectRoot:b.projectRoot,markdown:c.markdown,facts:b.planningContext?Object.fromEntries(b.planningContext.factsBaseline.flatMap(a=>a.selected?[[a.objectName?`${a.key}@${a.objectName}`:a.key,a.selected.value]]:[])):Object.fromEntries(b.project.facts.map(a=>[a.key,a.value])),structuredFacts:b.project.facts,factsModel:b.project.factsModel,chapters:c.chapters.map(a=>({id:a.id,title:a.title,content:a.content,evidence:[],missingFacts:[]})),...a.sectionProgress?.length?{sectionProgress:a.sectionProgress}:{},...a.budgetPause?{budgetPause:a.budgetPause}:{},sources:Object.keys(b.project.sources).map(a=>({filePath:a,count:1})),missingItems:f,validation:{passed:0===a.issues.length,warnings:a.issues.map(a=>a.message),errors:[]},validationIssues:a.issues,executionStages:a.stages,exportGate:{passed:a.deliveryReady,blockingIssues:a.deliveryReady?[]:a.issues.filter(a=>"blocker"===a.severity),textFingerprint:(0,z.c6)(c.markdown),deliveryFingerprint:(0,z.c6)(c.markdown),checklist:[{key:"contract-delivery",label:"同稿完整性回执",passed:a.delivery.receiptReady,...a.delivery.receiptReady?{}:{message:"回执未绑定当前正文或不属于当前协议;完整稿不能靠旧回执导出"}},{key:"responsibilities-complete",label:"全部职责完成或显式豁免",passed:a.delivery.responsibilitiesComplete,...a.delivery.responsibilitiesComplete?{}:{message:"仍有职责未完成;交付前必须全部完成(或在主控收口里显式声明未分配)"}},{key:"no-waiting",label:"无仍在等待的职责",passed:0===a.delivery.waiting,...0===a.delivery.waiting?{}:{message:`${a.delivery.waiting} 条职责仍在等待依赖`}},{key:"sections-complete",label:"合同章节无缺章",passed:0===a.delivery.missingSections,...0===a.delivery.missingSections?{}:{message:`${a.delivery.missingSections} 个合同章节没有生效正文`}},...a.sectionProgress?.length?[(()=>{let b=a.sectionProgress.filter(a=>"out-of-scope"!==a.phase),c=b.filter(a=>a.locked||"closed-with-items"===a.phase).length,d=a.delivery.sectionStates&&c===b.length;return{key:"sections-locked",label:"全部合同节已锁定或带未决项收口且基本信息表合格",passed:d,...d?{}:{message:`${b.length-c}/${b.length} 节尚未收口${a.delivery.sectionStates?"":",或项目基本信息表未通过"}:${b.filter(a=>!a.locked&&"closed-with-items"!==a.phase).slice(0,6).map(a=>`${a.title}(${a.phase})`).join("、")}`}}})()]:[],...a.delivery.tenderResponse?[{key:"tender-response",label:"招标明确要求的输出已落实",passed:a.delivery.tenderResponse.passed,...a.delivery.tenderResponse.passed?{}:{message:a.delivery.tenderResponse.message}}]:[],{key:"composition-structure",label:"成稿编号与冻结结构一致",passed:a.delivery.compositionValid,...a.delivery.compositionValid?{}:{message:"成稿存在编号、父子结构或正文归属缺陷,不能交付"}},{key:"execution-baseline",label:a.executionBaselineRef.current?.allocationBasis==="provisional-source-ownership"?"工期、阶段与里程碑数字与暂定基准一致":"工期、阶段与里程碑数字一致",passed:a.delivery.executionBaseline,...a.delivery.executionBaseline?a.executionBaselineRef.current?.allocationBasis==="provisional-source-ownership"?{message:"数字为来源归属暂定基准;生产细化/认证后可升版复核"}:{}:{message:a.executionBaselineRef.current?"正文的阶段区间、里程碑日期或天序与执行基准冲突,不能交付":"本次运行没有有来源的执行基准;工期、阶段与资源数字未核,不能交付"}},{key:"language-quality",label:"已知错词与异体字已清零",passed:a.delivery.languageQuality,...a.delivery.languageQuality?{}:{message:"正文仍有已知错词/日式异体字,不能交付"}},...b.bidComposition?.identityMarksForbidden?[{key:"bid-identity",label:"暗标身份机械核验",passed:a.delivery.identityMarksValid,message:"只核既有身份标记模式;完整匿名语义仍须独立审查"}]:[],...(0,Q.Kf)(b.bidComposition)?[{key:"bid-body-content",label:"正文图表及封面机械核验",passed:a.delivery.bodyPolicyValid,message:"只核实际正文语法与已验身图件;不凭标题授附表资格,不代表专业适用通过"}]:[],...a.sourceCompleteness?[a.sourceCompleteness]:[]]},reviewMetadata:{workflowVersion:ag.E,contractQuality:c.receipt,writingMetrics:{chapters:a.stages.filter(a=>"purpose"===a.type).length,tables:0,figures:new Set(c.figureAssets.map(a=>a.entityId)).size,citations:a.stages.length,totalChars:c.markdown.length,perChapter:{}},chapterSummaries:[],globalIssues:a.issues.map(a=>a.message),diagnostics:{metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0,schemaFailures:0,promptCacheHitTokens:0,promptCacheMissTokens:0,inputTokens:0,outputTokens:0,inputChars:0,layerChars:{l0:0,l1:0,l2:0,l3:0}},semantic:{embedCacheHits:0,embedCacheMisses:0},evidence:{raw:0,used:0,filteredNoise:0,budgetDropped:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0,t0Chars:0,t1Chars:0,t2Lines:0,omittedChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}}},generatedAt:Date.now()},i=as({chiefBlocked:a.chiefBlocked,waitingCount:a.waiting.length,responsibilityCount:a.responsibilities.total,completedResponsibilityCount:a.responsibilities.completed,receiptReady:a.delivery.receiptReady,issueCount:c.issues.length});return{id:b.documentId,taskId:b.runId,runId:b.runId,workflowVersion:ag.E.version,templateId:b.contract.id,templateName:b.title,title:b.title,requirement:b.requirement,projectRoot:b.projectRoot,projectId:b.project.snapshotId,...b.materialRoot?{materialRoot:b.materialRoot}:{},...b.generationProjectId?{generationProjectId:b.generationProjectId}:{},markdown:c.markdown,wordCount:c.markdown.replace(/\s+/gu,"").length,status:i,draft:h,executionStages:a.stages,reviewMetadata:h.reviewMetadata,warningIssues:g,...d?{scope:{sectionIds:d,partial:!0}}:{},assets:[],createdAt:h.generatedAt,updatedAt:h.generatedAt}}({input:a,finalized:bq,stages:bw,issues:bR,deliveryReady:bP,delivery:bQ,waiting:bl,advisoryWaiting:bm,...aF.size?{blockedSections:[...aF].sort()}:{},responsibilities:{total:bj.length,completed:bj.filter(a=>aT.actor(a.actorId)?.checkpoint?.status==="completed").length},...aE?{scopeSectionIds:aE}:{},executionBaselineRef:al,...bX?{sectionProgress:bX}:{},...d?{budgetPause:{enforcement:ad.enforcement,where:d.where,message:ax(d),violations:d.violations}}:{},...bV?{sourceCompleteness:bV}:{},...b?{chiefBlocked:b}:{}});bY.assets=(b=>{if(!b.figureAssets.length)return[];let c=(0,J.Fu)(b.figureAssets),d=(0,J.Fu)([b.documentHash,c]),e=(0,af.tv)(aH,`construction-figure-assets-${d}.json`,{runId:a.runId,documentId:a.documentId,documentHash:b.documentHash,sourceBindingHash:c,workspace:{file:(0,k.constructionWorkspacePath)(a.projectRoot,a.generatedDir),identity:aT.identity},renderedFromCommittedUnitsOnly:!0,receipts:b.figureAssets},a.runId);return[...new Map(b.figureAssets.map(b=>[b.svgHash,{id:`run:${a.runId}:construction-figure:${b.svgHash}`,type:"image",role:"generated",artifactKind:"construction-figure",runId:a.runId,sha256:b.svgHash,path:b.file,status:"generated",url:`/api/documents/generated/${a.documentId}/figure/${i().basename(b.file)}?projectRoot=${encodeURIComponent(a.projectRoot)}`}])).values(),{id:`run:${a.runId}:construction-figure-manifest:${e.sha256}`,type:"file",role:"attachment",artifactKind:"construction-figure-manifest",runId:a.runId,path:e.assetPath,sha256:e.sha256,status:"generated"}]})(bq),bY.createdAt=h.createdAt;let bZ=aT.latestEvent();if(!h.publish(bY,(0,J.Fu)(JSON.parse(JSON.stringify([bY.markdown,bY.status,bY.reviewMetadata]))),!0,bZ?{workspaceId:aT.workspaceId,eventSequence:bZ.sequence,eventId:bZ.id}:void 0))throw Error("CONSTRUCTION_RUN_SUPERSEDED:较新运行或文档修订已接管记录,旧运行不得覆盖");return bc=!0,aV.quality={...aV.quality,blockingCount:bR.filter(a=>"blocker"===a.severity).length,importantCount:bR.filter(a=>"warning"===a.severity).length,minorCount:bR.length,repairedCount:0},{record:bY,diagnostics:aV,rounds:{chief:t,drains:T,responsibilities:be.length},waiting:bl,budget:ad,budgetReport:bD,...b?{chiefBlocked:b}:{}}}catch(b){if(!bc)try{ba(!0,a.signal?.aborted?"paused":"failed")}catch(a){a$("construction-progress-stop-save-failed",{error:String(a),lastSuccess:h?.state().lastSuccess??null})}throw b}finally{a.signal?.removeEventListener("abort",bb),aP=()=>{},h?.close(),aS.unbindSectionContracts?.(),aT.close()}}function as(a){return a.chiefBlocked||a.waitingCount>0||0===a.responsibilityCount||a.completedResponsibilityCount<a.responsibilityCount?"paused":!a.receiptReady||a.issueCount>0?"completed_with_issues":"completed"}function at(a){let b=[...new Set(a.flatMap(a=>a.provider&&a.model?[`${a.provider}:${a.model}`]:[]))].sort();return b.length?1===b.length?b[0]:"multi:"+(0,j.createHash)("sha256").update(b.join("\n")).digest("hex").slice(0,24):"unmeasured"}function au(a){return i().join((0,$.Gl)(a),"construction")}}};
|
|
6
|
+
请补齐承接:可以委派/修订职责、调整章节归属或增加具备相应工具面的职责;具体谁做、按什么顺序做由你决定。如果某项确属不适用,请在职责目标与成果要求里写明理由,而不是静默不派。`,a_("construction-run-planning-gate-deferred",{round:t,issues:a.issues});continue}ah=0,ak=0,ac="",ap=!0,aM=void 0}if(i||(ap=!0),await aN(),aR(),d){b=ay(d);try{aX()}catch(a){a_("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}aw=await aO();try{aX()}catch(a){a_("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(aU.actorWait(a$.authority.actorId)?.state==="waiting"||aU.actor(a$.authority.actorId)?.checkpoint?.status==="completed"){let a=aU.supervisedActors(a$.authority.actorId);if(a.every(a=>aU.actor(a.actorId)?.checkpoint?.status==="completed")||!aw&&!a.some(a=>aU.actorEventFailure(a.actorId)))break}if(a0()===g&&0===aq&&!aw){a_("construction-run-no-change",{chiefRounds:t,drains:T});break}}try{a2&&al.current&&await a6(),await a8()}catch(a){b||(b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`)}let a4=()=>{if(!a.sectionPlans?.size)return[];let b=aF?new Set(aF):void 0;return a.contract.sections.filter(a=>!b||b.has(a.id)).flatMap(b=>{let c=a.sectionPlans.get(b.id);if(!c)return[];let d=new Set((0,y.rz)(aU,b.id).map(a=>a.subsectionId).filter(a=>!!a)),e=c.subsections.filter(a=>!d.has(a.subsectionId));if(!e.length)return[];let f=aU.supervisedActors(a$.authority.actorId).find(a=>Array.isArray(a.definition.sectionIds)&&a.definition.sectionIds.includes(b.id));return f?[{section:b,missing:e,owner:f}]:[]})},be=a4();if(be.length&&!d&&!a.signal?.aborted&&!b){for(let a of be)aU.enqueueActorContinuation(a.owner.actorId,`completion-gap:${a.section.id}:${(0,J.Fu)(a.missing.map(a=>a.subsectionId))}`,`计划小节未写:${a.missing.slice(0,8).map(a=>a.title).join("、")};只补这些小节,使用已有 facts/evidence,补完再 finalize_section;不得删除或重写已生效小节。`);if(a_("construction-completion-gap-sweep",{sections:be.map(a=>({sectionId:a.section.id,missing:a.missing.map(a=>a.title),actorId:a.owner.actorId}))}),await aN(),(be=a4()).length&&!d&&!a.signal?.aborted&&!b){for(let a of be)aU.enqueueActorContinuation(a.owner.actorId,`completion-fallback:${a.section.id}:${(0,J.Fu)(a.missing.map(a=>a.subsectionId))}`,`【程序兜底写作轮】以下计划小节仍没有实际单元:${a.missing.map(a=>`${a.title}(${a.subsectionId})`).join("、")}。按小节逐个 write_subsection:每个小节至少一个可渲染段落/表,使用已有 facts/evidence;先写最小可审查内容,再补引用与岗位,不要重写已生效小节。确实无法完成的小节,在回执中写明缺什么证据/决定,不得用“已覆盖/详见前文”代替正文。`);a_("construction-completion-gap-fallback",{sections:be.map(a=>({sectionId:a.section.id,missing:a.missing.map(a=>a.subsectionId),actorId:a.owner.actorId}))}),await aN(),be=a4()}}let bf=aU.supervisedActors(a$.authority.actorId),bg=a=>String(a.definition.assignmentBinding?.purpose??""),bh=new Set(["source-check","method-decision","production-calculation"]),bi=bf.filter(a=>bh.has(bg(a))),bj=bf.filter(a=>!bh.has(bg(a))),bk=bj.length?bj:bf,bl=b=>b.filter(a=>{let b=aU.actor(a.actorId);return!b?.checkpoint||"completed"!==b.checkpoint.status&&!b.leaseToken}).map(b=>{let c=aU.actor(b.actorId);return{actorId:b.actorId,reason:aU.actorWait(b.actorId)?.reason??(b=>{if(!b)return"未形成完整成果";let c=b.checkpoint;if(c?.status!=="paused"&&c?.status!=="yielded")return"未形成完整成果";let d="string"==typeof c.key?c.key:void 0,e="string"==typeof c.file?c.file:void 0;if(!d||!e)return"paused:原因未记录(检查点引用不完整)";try{let b=(0,r.Vq)(aI,"string"==typeof c.runId?c.runId:a.runId,d).load(e);if(b?.status==="yielded"&&b.invocationBoundary)return`${b.invocationBoundary.sectionId}:${b.invocationBoundary.state}:${b.invocationBoundary.reason}`;return`paused:${b?.blockedMessage??b?.blockedReason??"原因未记录"}`}catch{return"paused:原因未记录(检查点不可读)"}})(c)}}),bm=bl(bk),bn=bl(bi),bo=aW.llm.callLog??[],bp=au(bo),bq=()=>(function(a){let b,c,d=[],f=new Map;for(;;){let c=a.store.entityPage({groupKey:"writing-units",...b?{afterId:b}:{},limit:200});for(let a of c.entities){let b=(0,K.iC)(a);if(!b)continue;let c=a.value??{};d.push({entityId:a.id,entityVersion:a.version,entityHash:(0,J.Fu)(a),responsibilityId:String(c.responsibilityId??""),purpose:String(c.purpose??""),unit:b,sectionIds:Array.isArray(c.sectionIds)?c.sectionIds.map(String):[]}),"figure"===b.kind&&f.set(a.id,{entityVersion:a.version,entityHash:(0,J.Fu)(a),unitId:b.id})}if(!c.nextAfterId)break;b=c.nextAfterId}let g=a.figureRender?(0,M.rZ)(a.figureRender):void 0,h=new Map(d.map(a=>[a.unit.id,a.entityId])),i=new Set,j=[],k=(0,e.rL)(a.tenderResponsePlan),l=(0,L.V)({contract:a.contract,units:d,outputPlacements:k,originalFormRenderer:(0,e.iP)(a.tenderResponsePlan),...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},...a.scopeSectionIds?.length?{scopeSectionIds:a.scopeSectionIds}:{},...g?{figureUrlFor:(b,c,d)=>{let e=c.replace(/^图\s*\d+(?:[-—–]\d+)?\s*/u,""),f=a=>{j.push({level:"error",severity:"blocker",category:"structure",message:`图件「${b.caption??b.id}」未能渲染:${a instanceof Error?a.message:String(a)};补齐/修正节点边或空间布局后重试`})};try{if(b.planChart){if(!a.executionBaseline)return f(Error("计划图必须由执行基准渲染,本次运行没有可用基准"));let c=g.renderer({...b,id:d??h.get(b.id),kind:"figure",caption:e,nodes:[],edges:[],planBaseline:a.executionBaseline,planView:b.planChart.view});for(let a of"string"==typeof c?[c]:c)i.add(a);return c}let c=g.renderer({...b,id:d??h.get(b.id),kind:"figure",caption:e,nodes:b.nodes??[],edges:b.edges??[]});for(let a of"string"==typeof c?[c]:c)i.add(a);return c}catch(a){return f(a)}}}:{}}),m=(g?.receipts()??[]).map(a=>{let b=f.get(a.unitId);if(!b)throw Error("CONSTRUCTION_FIGURE_SOURCE_IDENTITY_REQUIRED");return{...a,entityId:a.unitId,...b}}),n=new Set(["figure","diagram","org_chart","chart"]);for(let b of a.tenderResponsePlan?.sections??[])for(let a of b.requiredOutputs.filter(a=>n.has(a.form))){let c=d.filter(a=>a.sectionIds.includes(b.sectionId)).filter(b=>"figure"===b.unit.kind&&(!a.id||b.unit.outputId===a.id)),e=a.basis||a.id||"未命名必出图";if(!c.length){j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」没有图件载体:${b.sectionId} 必须有 kind=figure 的单元承接`});continue}for(let a of(c.length>1&&j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」有 ${c.length} 个图件载体;一张点名图只能有一个主载体`}),c)){let b=m.find(b=>b.entityId===a.entityId);if(!b){j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」已写单元但未渲染资产:${a.entityId}`});continue}let c=b.file.split(/[\\/]/u).at(-1)??b.file;l.markdown.includes(c)||j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」已渲染但未进入正文:${c}`}),(a.unit.caption??"").trim()||j.push({level:"error",severity:"blocker",category:"structure",message:`必出图「${e}」缺少题注(图号/图题由正文承担)`})}}let o=[];for(;;){let b=a.store.issuePage({states:["open","investigating","awaiting-decision","resolved","invalidated"],...void 0===c?{}:{afterSequence:c},limit:200});if(o.push(...b.issues.map(b=>"review-finding"===b.kind?(0,G.N7)(a.store,b):b)),void 0===b.nextAfterSequence)break;c=b.nextAfterSequence}let p=(0,x.IQ)(a.bidComposition,a.bidCompositionSources),q=(0,x.T9)(a.store,p,a.tenderResponsePlan),r=(0,x.S2)(a.store).map(b=>({id:b.id,...b.value.reviewInvocationId?{reviewInvocationId:b.value.reviewInvocationId}:{},unitRefs:b.value.unitRefs.map(a=>({id:a.id,version:a.version})),criterionIds:b.value.levels.map(a=>a.criterionId),claimsSupported:(0,x.O0)(a.store,b.value),current:(0,x.O4)(a.store,b.value,void 0,p,a.tenderResponsePlan)})),s=a.qualityLevels&&a.qualityLevelsProvenance?a.qualityLevels:void 0,t=s??(Object.keys(q.levels).length?q.levels:void 0),u=!!a.sectionPlans?.size,v=a.contract.sections.filter(b=>!a.scopeSectionIds?.length||a.scopeSectionIds.includes(b.id)).flatMap(b=>{let c=(0,E.Pp)(a.store,b.id);if(u){let d=a.sectionPlans?.get(b.id);if(!d)return[{sectionId:b.id,reason:`${b.id}: 未生成冻结节计划,本节未进入写作`}];if(!c)return[{sectionId:b.id,reason:`${b.id}: 节轨道未建立(无 section-state)`}];if("locked"!==c.phase&&"closed-with-items"!==c.phase)return[{sectionId:b.id,reason:`${b.id}: ${c.phase}${c.reason?`:${c.reason}`:":本节尚未 resolved/locked"}`}];let e=new Set((0,y.rz)(a.store,b.id).map(a=>a.subsectionId).filter(a=>!!a)),f=d.subsections.filter(a=>!e.has(a.subsectionId));return f.length?[{sectionId:b.id,reason:`${b.id}: ${f.length} 个计划小节没有正文:${f.slice(0,6).map(a=>a.title).join("、")}`}]:[]}return c&&"locked"!==c.phase&&("blocked"===c.phase||c.snapshot.sectionPlanHash)?[{sectionId:b.id,reason:`${b.id}: ${c.phase}${c.reason?`:${c.reason}`:":当前节尚未按新协议完成收口"}`}]:[]}),w=a.planningContext?(0,D.planningApplicabilityGaps)(a.planningContext):[],z=new Set(w.map(a=>(0,J.Fu)(a))),R=[...new Map([...a.tenderResponsePlan?.applicabilityGaps??[],...w].map(a=>[a.obligationId+":"+a.reason,a])).values()],S=d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))),T=(0,B.$H)(l.markdown,l.deliveryPlacements,{outputPlacements:k,units:S});for(let b of(T.valid||R.push({obligationId:"delivery-placement",kind:"output",reason:T.issues.join(";")}),a.planningContext?.outputObligations??[])){if("tender-required"!==b.kind||!(0,C.oY)(b)||a.scopeSectionIds?.length&&!a.tenderResponsePlan?.sections.some(c=>a.scopeSectionIds.includes(c.sectionId)&&c.requiredOutputs.some(a=>a.obligationId===b.id)))continue;if(1!==k.filter(a=>a.obligationId===b.id).length){R.push({obligationId:b.id,kind:"output",reason:"必交输出没有唯一当前交付位置与原格式承接映射"});continue}let c=l.deliveryPlacements.units.filter(a=>a.binding?.obligationId===b.id);(1!==c.length||c[0].location!==b.applicability.delivery.location)&&R.push({obligationId:b.id,kind:"output",reason:"必交输出尚未实际装配到已核位置,不能凭标题或规划认定完成"})}let U=(0,A.b)({contract:a.contract,plan:a.tenderResponsePlan,units:d,composition:l,figureAssets:m,figureStyle:a.figureRender,assessments:(0,x.S2)(a.store),reviewStore:a.store,expectedBidCompositionHash:p,scopeSectionIds:a.scopeSectionIds});for(let a of U.filter(a=>"met"!==a.status))R.push({obligationId:a.obligationId||a.outputId,kind:"output",reason:a.checks.filter(a=>"met"!==a.status).map(a=>a.reason).join(";")});let V=R.filter(a=>z.has((0,J.Fu)(a))),W=R.filter(a=>!z.has((0,J.Fu)(a))),X=function(a){let b=function(a){let b=[],c=a.scopeSectionIds?.length?new Set(a.scopeSectionIds):void 0,d=c?new Set(a.contract.sections.filter(a=>c.has(a.id)).map(a=>a.chapterId)):void 0,e=a=>!!c&&(a.sectionId?!c.has(a.sectionId):!!a.chapterId&&!d.has(a.chapterId)),f=a.issues.filter(G.S0),g=(a.reviewAssessments??[]).filter(a=>a.current),h=new Set(g.flatMap(a=>a.unitRefs.map(a=>`${a.id}::${a.version}`))).size,i=[...new Set(g.map(a=>a.reviewInvocationId).filter(a=>!!a))].sort(),j=a.scopeSectionIds?.length?a.scopeSectionIds:void 0,k=new Set(j?a.units.filter(a=>(a.sectionIds??[]).some(a=>j.includes(a))).map(a=>a.entityId):a.units.map(a=>a.entityId)),l=a.units.filter(a=>k.has(a.entityId)),m=a.issues.filter(a=>"review-finding"===a.kind&&a.scope.entityIds.some(a=>k.has(a))),n=m.filter(G.S0),o=m.filter(a=>"resolved"===a.state),p=new Map;for(let a of g.filter(a=>!1!==a.claimsSupported))for(let b of a.unitRefs)void 0===a.criterionIds?p.set(b.id,void 0):p.has(b.id)&&void 0===p.get(b.id)||p.set(b.id,new Set([...p.get(b.id)??[],...a.criterionIds]));let q=new Set(l.filter(b=>p.has(b.entityId)&&(b.unit.criterionIds?.length?b.unit.criterionIds:a.contract.criteria.filter(a=>a.applicable&&(b.sectionIds??[]).includes(a.sectionId??"")).map(a=>a.id)).every(a=>void 0===p.get(b.entityId)||p.get(b.entityId).has(a))).map(a=>a.entityId)),r={rounds:new Set((a.reviewAssessments??[]).filter(a=>a.unitRefs.some(a=>k.has(a.id))).map(a=>a.reviewInvocationId??a.id)).size,openFindings:n.length,resolvedFindings:o.length,unitsWithOpenFindings:new Set(n.flatMap(a=>a.scope.entityIds.filter(a=>k.has(a)))).size,converged:!a.incompleteSections?.length&&0===n.length&&l.length>0&&l.every(a=>q.has(a.entityId))},s=b=>{let c=a.contract.criteria.find(a=>a.id===b)?.sectionId;return a.units.filter(a=>{let d=a.unit.criterionIds??[];return d.length?d.includes(b):!!c&&(a.sectionIds??[]).includes(String(c))}).map(a=>a.entityId)},t=[];for(let c of a.contract.criteria){if(!c.applicable||e(c))continue;let d=a.incompleteSections?.filter(b=>b.sectionId===c.sectionId||!c.sectionId&&a.contract.sections.some(a=>a.id===b.sectionId&&a.chapterId===c.chapterId))??[];if(d.length){t.push({criterionId:c.id,status:"not-met",reason:d.map(a=>a.reason).join(";")}),b.push({criterionId:c.id,dimension:c.dimension,reason:d.map(a=>a.reason).join(";")});continue}let g=s(c.id);if(!g.length){t.push({criterionId:c.id,status:"unmeasured",reason:"尚未有生效正文声明服务本条要求"}),b.push({criterionId:c.id,dimension:c.dimension,reason:"没有生效正文覆盖"});continue}let h=f.filter(a=>a.scope.entityIds.some(a=>g.includes(a)));if(h.length){t.push({criterionId:c.id,status:"not-met",reason:`独立审查仍有未关闭意见:${h.map(a=>a.title).join(";")}`}),b.push({criterionId:c.id,dimension:c.dimension,reason:h.map(a=>`${a.id}:${a.title}`).join(";")});continue}let i=void 0!==a.reviewAssessments?g.filter(a=>!p.has(a)||void 0!==p.get(a)&&!p.get(a).has(c.id)):[];if(i.length){t.push({criterionId:c.id,status:"unmeasured",reason:`独立审查尚未给出档位:本条要求有 ${i.length} 个当前单元未完整审查`}),b.push({criterionId:c.id,dimension:c.dimension,reason:"逐单元准则档位未齐"});continue}let j=a.qualityLevels?.[c.id];if(!j){t.push({criterionId:c.id,status:"unmeasured",reason:"已有正文覆盖,但独立审查尚未给出档位"}),b.push({criterionId:c.id,dimension:c.dimension,reason:"独立审查未给档位"});continue}t.push({criterionId:c.id,status:"met",qualityLevel:j,reason:"独立审查已核正文并给出档位"})}let u=(0,H._n)(a.contract,t,a.scopeSectionIds?.length?{scopeSectionIds:a.scopeSectionIds}:{}),v=a.applicabilityGaps??[];for(let a of v)b.push({criterionId:`tender-applicability:${a.obligationId}`,dimension:"technical-scope",reason:a.reason});return{findings:t,receipt:v.length?{...u,deliveryReady:!1,verificationComplete:!1,defects:[...u.defects,...v.map(a=>({id:`tender-applicability:${a.obligationId}`,criterionIds:[],impact:"blocking",status:"unmeasured",reason:a.reason}))]}:u,gaps:b,reviewedUnits:h,reviewInvocations:i,reviewConvergence:r}}(a),c=b.receipt,d=a.reviewAssessments??[];return{version:I.Ly,contractId:a.contract.id,projectSnapshotId:a.projectSnapshotId,documentHash:a.documentHash,modelIdentity:a.modelIdentity,...a.authorModelHash?{authorModelHash:a.authorModelHash}:{},findings:b.findings,batches:d.map(a=>({id:a.reviewInvocationId??a.id,expectedIds:[...new Set(a.unitRefs.map(a=>a.id))],status:a.current?"executed":"unmeasured",...a.current?{}:{reason:"审查档位绑定的是被审单元的旧版本(作者已修订),本次回执不继承"}})),score:c,primary:!0,expertValidated:!1,reviewConvergence:b.reviewConvergence}}({contract:a.contract,incompleteSections:v,applicabilityGaps:W,units:d.map(a=>({entityId:a.entityId,responsibilityId:a.responsibilityId,unit:a.unit,sectionIds:a.sectionIds})),issues:o,documentHash:l.documentHash,projectSnapshotId:a.projectSnapshotId,modelIdentity:a.modelIdentity,...a.authorModelHash?{authorModelHash:a.authorModelHash}:{},reviewAssessments:r,...a.scopeSectionIds?.length?{scopeSectionIds:a.scopeSectionIds}:{},...t?{qualityLevels:t}:{}}),Y=S.filter(a=>"figure"===a.unit.kind).flatMap(a=>[a.unit.caption??"",...(a.unit.nodes??[]).map(a=>a.label)]).join("\n"),Z=(0,N.Vl)(`${l.markdown}
|
|
7
|
+
${Y}`,a.bidComposition?.identityMarksForbidden),$=(0,O.Sz)(l.markdown).map(a=>({level:"error",severity:"blocker",category:"structure",owner:"system",message:a.message})),_=[...j];for(let b of d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b)))){let c=a.sectionPlans?.get(b.sectionIds[0]),d=c?.subsections.find(a=>a.subsectionId===b.unit.subsectionId)?.contentContract;for(let c of(d&&b.unit.contentContractHash!==d.hash&&_.push({level:"error",severity:"blocker",category:"structure",message:`单元 ${b.entityId} 的内容契约身份已失效`}),(0,e.B$)(b.unit,a.tenderResponsePlan,b.sectionIds)))_.push({level:"error",severity:"blocker",category:"structure",message:`单元 ${b.entityId} 的位置/原格式绑定无效:${c}`});for(let a of(0,F.dA)(b.unit))_.push({level:"error",severity:"blocker",category:"fact_consistency",message:`单元 ${b.entityId} 主张/实现片段无效:${a}`})}let aa=v.map(a=>({level:"error",severity:"blocker",category:"structure",message:a.reason}));if(a.planningContext&&a.sectionPlans?.size){let b=a.contract.chapters[0]?.sectionIds[0],c=!b||!a.scopeSectionIds?.length||a.scopeSectionIds.includes(b);if(b&&c){let c=(0,P.XI)(a.planningContext);for(let e of(0,P.Gm)({sectionId:b,isFirstSection:!0,units:d.filter(a=>a.sectionIds.includes(b)).map(a=>a.unit),facts:c.facts,...c.projectName?{projectName:c.projectName}:{},...a.sectionPlans?.get(b)?{sectionPlan:a.sectionPlans.get(b)}:{}}))aa.push({level:"error",severity:"blocker",category:"structure",message:e.message})}}let ab=W.map(a=>({level:"error",severity:"blocker",category:"structure",message:`招标义务 ${a.obligationId} 必交交付缺口:${a.reason}`})),ac=V.map(a=>({level:"warning",severity:"warning",category:"structure",message:`招标义务 ${a.obligationId} 适用性待核:${a.reason}`})),ad=[...$,..._,...(0,Q.Kf)(a.bidComposition)?a.inspectBodyContent?a.inspectBodyContent({markdown:l.markdown,spec:a.bidComposition,deliveryPlacements:l.deliveryPlacements,outputPlacements:k,isVerifiedDiagram:a=>i.has(a),unrenderedDiagramCount:g?0:d.filter(b=>"figure"===b.unit.kind&&(!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b)))).length}):[(0,Q.Hr)(l.markdown)]:[]];return{...l,identityIssues:Z,bodyPolicyIssues:ad,sectionStateIssues:aa,applicabilityIssues:ab,applicabilityWarnings:ac,unitCount:d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))).length,figureAssets:m,receipt:{...X,deliveryPlacements:l.deliveryPlacements,originalFormVerifications:U,reviewAssessments:{applied:q.applied,stale:q.stale,...s?{provenance:a.qualityLevelsProvenance}:{}}}}})({store:aU,contract:a.contract,projectSnapshotId:a.project.snapshotId,tenderResponsePlan:a.tenderResponsePlan,planningContext:a.planningContext,...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},modelIdentity:bp,figureRender:aP,inspectBodyContent:av,...a3&&al.current?{executionBaseline:al.current}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},..."unmeasured"!==bp?{authorModelHash:(0,j.createHash)("sha256").update(bp).digest("hex")}:{},...aF?{scopeSectionIds:aF}:{}}),br=bq(),bs=[];if(a.jsonCaller&&0===bm.length&&ap&&0===be.length&&!br.issues.some(a=>"section-unwritten"===a.code))try{let b=br.chapters.map(a=>({id:a.id,title:a.title,content:a.content})),c=a.structurePlan?(0,R.F_)(a.structurePlan).map(({section:a,chapter:b})=>{let c=(0,y.rz)(aU,a.sectionId).map(a=>{let b=(0,K.iC)(aU.entity(a.entityId));return b?.text??b?.caption??""}).filter(Boolean).join("\n").slice(0,400);return{sectionId:a.sectionId,chapterId:b.chapterId,title:a.title,contentGroup:a.contentGroup,digest:c}}):a.contract.sections.map(a=>({sectionId:a.id,chapterId:a.chapterId,title:a.title})),d=await an({runId:a.runId,artifactDir:aI,chapters:b,sections:c,caller:a.jsonCaller,diagnostics:aW,signal:a.signal});bs=d.findings,d.calls&&a_("construction-final-document-review",{calls:d.calls,chapters:d.chaptersReviewed,findings:d.findings.length,p0:d.findings.filter(a=>"P0"===a.severity).length,p1:d.findings.filter(a=>"P1"===a.severity).length});let e=d.findings.filter(a=>"P0"===a.severity||"P1"===a.severity);if(e.length&&a.sectionPlans?.size){let b=[],c=[],d=[],f=new Map;for(let a of e){if(!a.sectionId||!a.quote||!a.replacement){b.push({sectionId:a.sectionId??"",reason:"缺少 sectionId/quote/replacement,无法程序化替换"});continue}f.set(a.sectionId,[...f.get(a.sectionId)??[],a])}for(let[e,g]of f){let f=a.sectionPlans.get(e);if(!f){b.push({sectionId:e,reason:"缺少冻结节计划"});continue}let h=(0,y.rz)(aU,e),i=h.flatMap(a=>{let b=(0,K.iC)(aU.entity(a.entityId));return b?[{entityId:a.entityId,sectionIds:[e],unit:b}]:[]}),j=new Map;for(let a of g){let c=i.find(b=>"paragraph"===b.unit.kind&&(b.unit.text??"").includes(a.quote));if(!c){b.push({sectionId:e,reason:`找不到逐字片段:${a.quote.slice(0,40)}`});continue}let d=j.get(c.entityId)??c.unit.text??"";if(!d.includes(a.quote)){b.push({sectionId:e,reason:`同一单元的前序替换已改变片段:${a.quote.slice(0,40)}`});continue}j.set(c.entityId,d.replace(a.quote,a.replacement))}if(!j.size)continue;let k=aU.entity([...j.keys()][0]),l=String(k?.value?.responsibilityId??"");if(!l){b.push({sectionId:e,reason:"写作单元缺少职责身份"});continue}try{let g=(0,ao.y)({store:aU,contract:a.contract,authority:{actorId:l,memberIndices:[],sectionIds:[e]},project:a.project,evidenceExists:b=>(a.project.sourceControls??[]).some(a=>a.factId===b&&"verified-source-excerpt"===a.roleId),evidenceText:b=>(a.project.sourceControls??[]).find(a=>a.factId===b&&"verified-source-excerpt"===a.roleId)?.value,...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{},...a3&&al.current?{executionBaseline:al.current}:{},...a.structurePlan?{structurePlan:a.structurePlan}:{},sectionPlan:f,responsibilityId:l,sectionIds:[e],unitEntityIds:h.map(a=>a.entityId),sectionUnits:i,unitReplacements:[...j].map(([a,b])=>({unitEntityId:a,replacement:b}))});for(let a of(g.appliedUnitIds.length&&(c.push(e),d.push(...g.appliedUnitIds)),g.refused))b.push({sectionId:e,reason:a})}catch(a){b.push({sectionId:e,reason:a instanceof Error?a.message:String(a)})}}if(c.length){for(let b of new Set(c)){let c=a.sectionPlans.get(b),d=(0,y.rz)(aU,b)[0]?.entityId,e=String(aU.entity(d??"")?.value?.responsibilityId??"");c&&e&&(0,E.ey)({store:aU,sectionId:b,responsibilityId:e,phase:"closed-with-items",trigger:"final-document-review-revision",reason:"整稿终审定向修订后正文已变更;未重新送节级复审,按未决项收口",snapshot:{structurePlanHash:a.structurePlan?.planHash,sectionPlanHash:c.sectionPlanHash,unitVersions:(0,y.rz)(aU,b).map(a=>({entityId:a.entityId,version:a.version})),unreviewedUnitIds:[],sourceReviewComplete:!0,blockingFindingIds:(0,G.bF)(aU,(0,y.rz)(aU,b).map(a=>a.entityId)).filter(G.S0).map(a=>a.id)}})}br=bq(),a_("construction-final-document-revision",{appliedSections:c,appliedUnits:d,refused:b,reFinalized:!0})}else a_("construction-final-document-revision",{appliedSections:[],appliedUnits:[],refused:b})}}catch(a){a_("construction-final-document-review-failed",{error:a instanceof Error?a.message:String(a)})}let bt=a.tenderResponsePlan?(0,S.sV)({plan:aF?{...a.tenderResponsePlan,sections:a.tenderResponsePlan.sections.filter(a=>aF.includes(a.sectionId))}:a.tenderResponsePlan,contract:a.contract,markdown:br.markdown,outputIdsBySection:br.outputIdsBySection}):void 0;bt&&(0,af.tv)(aI,"tender-response-audit.json",bt,a.runId);let bu=a3?al.current:void 0,bv=bu?[...(0,U._D)(br.markdown,bu),...(0,U.Pu)(br.markdown,bu),...(0,U.ke)(br.markdown,bu),...(0,U.mM)(br.markdown,bu)]:[];bu&&(0,af.tv)(aI,"execution-baseline-audit.json",{runId:a.runId,baselineHash:(0,J.Fu)((0,U.PI)(bu)),issues:bv},a.runId);let bw=(0,W.M)(br.markdown);(0,af.tv)(aI,"language-quality-audit.json",{runId:a.runId,issues:bw},a.runId);let bx=(0,X.ip)(a.documentId,{baseDir:aJ}).stages,by=(0,I.pT)(br.receipt),bz=(0,I.R3)(br.receipt),bA=bk.length>0&&bk.every(a=>aU.actor(a.actorId)?.checkpoint?.status==="completed"),bB=br.issues.filter(a=>"section-unwritten"===a.code).length,bC=aY(),bD=function(a,b={}){let c=[],d=a.filter(a=>"not-sent"!==a.usageStatus),e=a=>Number.isSafeInteger(a.call.cacheHitTokens)&&Number.isSafeInteger(a.call.cacheMissTokens),f=d.filter(a=>"reported"!==a.usageStatus||p(a.unknownAttemptUsage)>0||!Number.isSafeInteger(a.call.inputTokens)||!Number.isSafeInteger(a.call.outputTokens)||!e(a)&&(void 0!==a.call.cacheHitTokens||void 0!==a.call.cacheMissTokens));c.push({id:"usage-reported",passed:0===f.length,...f.length?{detail:`${f.length} 条调用存在未报告用量(未知不记零):${f.slice(0,3).map(a=>a.call.kind).join("、")}`}:{}});let g=d.filter(a=>e(a)&&Number.isSafeInteger(a.call.inputTokens)&&p(a.call.cacheHitTokens)+p(a.call.cacheMissTokens)!==p(a.call.inputTokens));c.push({id:"cache-conservation",passed:0===g.length,...g.length?{detail:`${g.length} 条调用 cacheHit+cacheMiss≠inputTokens`}:{}});let h=d.filter(a=>void 0!==a.actualProviderInvocations&&p(a.call.providerAttempts)!==p(a.actualProviderInvocations));c.push({id:"provider-attempts",passed:0===h.length,...h.length?{detail:`${h.length} 条调用的 providerAttempts 与实际运输尝试不一致`}:{}});let i=a=>d.reduce((b,c)=>b+p(c.call[a]),0),j=d.filter(a=>(0,o.K)(a.call.kind)),k=d.filter(a=>"reasoning"===a.call.taskKind),l=Math.max(1,Math.trunc(b.sectionCount??1)),m=b.budget?.perSection.maxInputTokens??4e5,n=d.reduce((a,b)=>a+(a=>{let b=p(a.unknownAttemptUsage);return"reported"!==a.usageStatus||!Number.isSafeInteger(a.call.inputTokens)||b?Number.isSafeInteger(a.call.inputChars)&&Number(a.call.inputChars)>0?Number(a.call.inputChars):m:0})(b),0);if(b.budget){let a=b.budget.perSection.maxReviewCalls;if(void 0!==a&&a>0){let b=a*l;c.push({id:"review-budget",passed:j.length<=b,...j.length>b?{detail:`审查调用 ${j.length} 次 > 预算 ${b} 次`}:{}})}let e=b.budget.perSection.maxThinkCalls*l;c.push({id:"think-budget",passed:k.length<=e,...k.length>e?{detail:`推演调用 ${k.length} 次 > 预算 ${e} 次`}:{}});let f=b.budget.perRun?.maxCalls;void 0!==f&&c.push({id:"run-call-budget",passed:d.length<=f,...d.length>f?{detail:`调用 ${d.length} 次 > 整轮预算 ${f} 次`}:{}});let g=b.budget.perRun?.maxInputTokens,h=i("inputTokens")+n;void 0!==g&&c.push({id:"run-token-budget",passed:h<=g,...h>g?{detail:`输入 token ${i("inputTokens")}${n?` + 未知上界 ${n}`:""} = ${h} > 整轮预算 ${g}`}:{}})}let q=new Map;for(let b of a){if(b.call.ok)continue;let a=`${b.call.kind}:${b.call.actorId??"unassigned"}:${b.call.failureKind??"unknown"}`;q.set(a,(q.get(a)??0)+1)}let r=[...q.entries()].filter(([,a])=>a>1).map(([a])=>a);return c.push({id:"deterministic-waste",passed:!0,...r.length?{detail:`${r.length} 个失败签名重复出现(报告项,不等同于缺陷):${r.slice(0,5).join("、")}`}:{}}),{ok:c.every(a=>a.passed),checks:c,totals:{calls:d.length,providerInvocations:d.reduce((a,b)=>a+p(b.call.providerAttempts),0),inputTokens:i("inputTokens"),outputTokens:i("outputTokens"),cacheHitTokens:i("cacheHitTokens"),cacheMissTokens:i("cacheMissTokens"),unknownUsageCalls:f.length,unknownInputTokenUpperBound:n},review:{calls:j.length,inputTokens:j.reduce((a,b)=>a+p(b.call.inputTokens),0),outputTokens:j.reduce((a,b)=>a+p(b.call.outputTokens),0)},think:{calls:k.length,inputTokens:k.reduce((a,b)=>a+p(b.call.inputTokens),0)},deterministicWaste:{repeatedFailures:r.length,signatures:r}}}(bo.map(a=>{let b=a.transportActivities?.filter(a=>"not-started"!==a.providerInvocation),c=b?.length??a.providerAttempts??0;return{usageStatus:0===c?"not-sent":void 0===a.inputTokens||void 0===a.outputTokens?"unreported":"reported",actualProviderInvocations:c,unknownAttemptUsage:b?b.filter(a=>!a.usage).length:void 0===a.inputTokens||void 0===a.outputTokens?a.providerAttempts??0:0,call:a}}),{budget:ad,sectionCount:bC.sections.length}),bE={usage:bC,audit:bD,reviewCalls:bC.run.reviewCalls??0,...void 0===bC.run.reviewInputTokens?{}:{reviewInputTokens:bC.run.reviewInputTokens},thinkCalls:bC.run.thinkCalls??0,...void 0===bC.run.thinkInputTokens?{}:{thinkInputTokens:bC.run.thinkInputTokens},unknownUsageCalls:bC.run.unknownUsageCalls,...bC.run.reviewUnknownUsageCalls?{reviewUnknownUsageCalls:bC.run.reviewUnknownUsageCalls}:{},...bC.run.thinkUnknownUsageCalls?{thinkUnknownUsageCalls:bC.run.thinkUnknownUsageCalls}:{}},bF=(0,w.eW)({store:aU,project:a.project,contract:a.contract}),bG={},bH=[];for(let a of["construction",""]){let b=i().join(aI,a,"write-check-failures.jsonl");try{if(!g().existsSync(b))continue;for(let a of(bH.push(b),g().readFileSync(b,"utf8").split("\n")))if(a.trim())try{for(let b of JSON.parse(a).blocking??[])b.code&&(bG[b.code]=(bG[b.code]??0)+1)}catch{}}catch{}}let bI={runId:a.runId,generatedAt:new Date().toISOString(),...bF,writeCheckFailureCounts:bG,writeCheckFailureTotal:Object.values(bG).reduce((a,b)=>a+b,0),notMetSections:bF.perSection.filter(a=>"blocked"===a.phase||"closed-with-items"===a.phase).map(a=>({sectionId:a.sectionId,phase:a.phase,reason:a.reason??"未记录原因"}))};(0,af.tv)(aI,"run-source-review-readings.json",bI,a.runId);let bJ=new Set(["plan-chart-unrendered","criterion-unknown","unit-unassigned","tertiary-numbering-missing","section-hierarchy-invalid","section-parent-order-invalid","section-unwritten","carrier-caption-missing","carrier-section-ambiguous","carrier-number-duplicate","carrier-reference-unresolved","carrier-reference-leaked"]),bK=!br.issues.some(a=>bJ.has(a.code)||/^(?:delivery-placement|original-form|original-figure)/u.test(a.code)),bL=0===br.identityIssues.length,bM=0===br.bodyPolicyIssues.length,bN=0===br.sectionStateIssues.length,bO=!!bu&&0===bv.length,bP=!bw.some(a=>"blocker"===a.severity),bQ=ap&&by&&bA&&0===bm.length&&0===bB&&bK&&bL&&bM&&bN&&bO&&bP,bR={planningGate:ap,receiptReady:by,qualityReady:bz,responsibilitiesComplete:bA,waiting:bm.length,missingSections:bB,compositionValid:bK,identityMarksValid:bL,bodyPolicyValid:bM,sectionStates:bN,executionBaseline:bO,languageQuality:bP},bS=[...b?[{level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`主控本轮未继续推进:${b}`}]:[],...br.identityIssues,...br.bodyPolicyIssues,...br.sectionStateIssues,...br.issues.map(a=>({level:"error",severity:bJ.has(a.code)?"blocker":"warning",category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}})),...br.applicabilityIssues,...br.applicabilityWarnings,...bt?.issues.map(a=>({level:"error",severity:a.severity,category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}}))??[],...bv.map(a=>({level:"error",severity:"blocker",category:"structure",owner:"system",message:`执行基准不一致:${a.message}${a.evidence?`(${a.evidence})`:""}`})),...bw.map(a=>({level:"blocker"===a.severity?"error":"warning",severity:a.severity,category:"structure",owner:"system",message:`语言质量${"blocker"===a.severity?"阻断":"提示"}:${a.message}${a.line?`(第 ${a.line} 行)`:""}`})),...br.receipt.score.qualityGaps.map(a=>({level:"error",severity:"warning",category:"professional_chain",owner:"system",message:`专业档位不足:${a.criterionId};${a.reason}`})),...ap?[]:[{level:"error",severity:"blocker",category:"structure",owner:"system",message:`规划闸门未通过${b?`:${b}`:":章节/义务/输出/基准承接不完整"}`}]],bT=[];for(let a of br.receipt.findings.filter(a=>"met"!==a.status))bT.push({key:(0,J.Fu)(["criterion",a.criterionId,a.reason]),source:"contract-criterion",severity:"blocking"===a.impact?"blocker":"warning",target:a.criterionId,message:a.reason,disposition:"not-met"===a.status?"not-met":"unmeasured"});for(let a of br.receipt.score.qualityGaps)bT.push({key:(0,J.Fu)(["quality-gap",a.criterionId,a.reason]),source:"quality-gap",severity:"warning",target:a.criterionId,message:a.reason,disposition:"quality-gap"});for(let a of bS)bT.push({key:(0,J.Fu)(["issue",a.category,a.message]),source:"run-issue",severity:"blocker"===a.severity?"blocker":"warning",message:a.message,disposition:"open"});for(let b of a.contract.sections){let a=(0,E.Pp)(aU,b.id);a?.phase==="closed-with-items"&&bT.push({key:(0,J.Fu)(["closed-with-items",b.id,a.reason??""]),source:"section",severity:"warning",target:b.id,message:a.reason??"审查/修订达到上限,按未决项收口",disposition:"recorded-unresolved"})}for(let a of bs)bT.push({key:(0,J.Fu)(["final-document-review",a.severity,a.sectionId??"",a.quote??"",a.problem]),source:"final-document-review",severity:"P0"===a.severity?"blocker":"warning",...a.sectionId?{target:a.sectionId}:{},message:`[${a.severity}] ${a.problem};修法:${a.fix}`,disposition:"recorded"});let bU=[...new Map(bT.map(a=>[a.key,a])).values()].sort((a,b)=>a.severity===b.severity?a.message.localeCompare(b.message):"blocker"===a.severity?-1:1),bV={total:bU.length,blocker:bU.filter(a=>"blocker"===a.severity).length,warning:bU.filter(a=>"warning"===a.severity).length};(0,af.tv)(aI,"run-issue-ledger.json",{version:"run-issue-ledger-v1",runId:a.runId,documentId:a.documentId,documentHash:br.receipt.documentHash,counts:bV,entries:bU},a.runId),a_("construction-run-issue-ledger",bV),ar({artifactDir:aI,runId:a.runId,onReceipt:a_});let bW=a.deliveryAssets?(()=>{let b=(0,ae.vx)(aU,a.project,{documentHash:br.receipt.documentHash}),c=(b,c)=>(0,af.tv)(aI,b,c,a.runId);return c("run-inputs.json",{runId:a.runId,documentId:a.documentId,generatedAt:new Date().toISOString(),...a.materialRoot?{materialRoot:a.materialRoot}:{},...a.generationProjectId?{generationProjectId:a.generationProjectId}:{},sources:Object.entries(a.project.sources).map(([a,b])=>({filePath:a,sha256:b.sha256}))}),c("document-contract.json",a.contract),c("project-model.json",a.project),c("contract-quality.json",br.receipt),c("document-delivery-placements.json",{runId:a.runId,documentId:a.documentId,workspaceId:aU.workspaceId,planningContextHash:a.planningContext?(0,J.Fu)(a.planningContext):null,documentHash:br.documentHash,placements:br.deliveryPlacements}),c("construction-source-coverage.json",b),a_("construction-run-delivery-assets",{status:b.status,sources:b.sources.length,referenced:b.sources.filter(a=>a.referenceCount).length,unreferenced:b.unreferenced.length,missingOpinions:b.missingOpinions.length,omissions:b.omissions.length,reasons:b.reasons}),{key:"source-coverage-ledger",label:"来源覆盖账(引用+未引用处置)",passed:!0,..."measured"===b.status?{}:{message:`来源覆盖意见待核(不阻断完整稿):${b.reasons.join(";")}`}}})():void 0;bW?.message&&bS.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:bW.message}),bW&&(bQ=bQ&&bW.passed,bR={...bR,sourceCoverage:bW.passed});let bX=[...bt?.issues.filter(a=>"blocker"===a.severity)??[],...br.applicabilityIssues];bQ=bQ&&0===bX.length,bR={...bR,tenderResponse:{passed:0===bX.length,...bX.length?{message:`${bX.length} 项招标响应或适用性问题尚未解决:${bX.slice(0,3).map(a=>a.message).join(";")}`}:{}}};let bY=aZ(),bZ=function(a){let{input:b,finalized:c}=a,d=a.scopeSectionIds?.length?[...new Set(a.scopeSectionIds)]:void 0,e=d?b.contract.sections.filter(a=>!d.includes(a.id)).length:0,f=[...new Set([...a.waiting.map(a=>`${a.actorId}:${a.reason}`),...(a.advisoryWaiting??[]).map(a=>`非首版必需职责(参谋/生产细化) ${a.actorId}:${a.reason}(不阻断完整初稿,细化结论另行审查/认证)`),...a.chiefBlocked?[`主控未继续推进:${a.chiefBlocked}`]:[],...0===a.responsibilities.total?["本次运行没有委派任何专业职责:没有正文成果"]:[],...a.responsibilities.total>a.responsibilities.completed?[`${a.responsibilities.total-a.responsibilities.completed} 条职责未完成(共 ${a.responsibilities.total} 条)`]:[],...e?[`范围外章节 ${e} 节未在本次运行内(本次为范围运行,全稿未完成)`]:[],...a.blockedSections?.length?[`${a.blockedSections.length} 节因内容/审查动作重复且无新依据而阻塞:${a.blockedSections.join("、")};这些节未锁定,交付回执按未达标记录`]:[]])],g=[...new Set([...a.issues.map(a=>a.message),...f])];a.executionBaselineRef.current?.allocationBasis==="provisional-source-ownership"&&g.push("执行基准为来源归属暂定口径:跨包清单行按主包一次计量,正文数字待生产细化/认证后复核");let h={templateId:b.contract.id,templateName:b.title,title:b.title,requirement:b.requirement,...b.bidComposition?{bidComposition:b.bidComposition,exportSettings:(0,ai.b2)(b.bidComposition.formatRules,{anonymize:b.bidComposition.identityMarksForbidden})}:{},projectRoot:b.projectRoot,markdown:c.markdown,facts:b.planningContext?Object.fromEntries(b.planningContext.factsBaseline.flatMap(a=>a.selected?[[a.objectName?`${a.key}@${a.objectName}`:a.key,a.selected.value]]:[])):Object.fromEntries(b.project.facts.map(a=>[a.key,a.value])),structuredFacts:b.project.facts,factsModel:b.project.factsModel,chapters:c.chapters.map(a=>({id:a.id,title:a.title,content:a.content,evidence:[],missingFacts:[]})),...a.sectionProgress?.length?{sectionProgress:a.sectionProgress}:{},...a.budgetPause?{budgetPause:a.budgetPause}:{},sources:Object.keys(b.project.sources).map(a=>({filePath:a,count:1})),missingItems:f,validation:{passed:0===a.issues.length,warnings:a.issues.map(a=>a.message),errors:[]},validationIssues:a.issues,executionStages:a.stages,exportGate:{passed:a.deliveryReady,blockingIssues:a.deliveryReady?[]:a.issues.filter(a=>"blocker"===a.severity),textFingerprint:(0,z.c6)(c.markdown),deliveryFingerprint:(0,z.c6)(c.markdown),checklist:[{key:"contract-delivery",label:"同稿完整性回执",passed:a.delivery.receiptReady,...a.delivery.receiptReady?{}:{message:"回执未绑定当前正文或不属于当前协议;完整稿不能靠旧回执导出"}},{key:"responsibilities-complete",label:"全部职责完成或显式豁免",passed:a.delivery.responsibilitiesComplete,...a.delivery.responsibilitiesComplete?{}:{message:"仍有职责未完成;交付前必须全部完成(或在主控收口里显式声明未分配)"}},{key:"no-waiting",label:"无仍在等待的职责",passed:0===a.delivery.waiting,...0===a.delivery.waiting?{}:{message:`${a.delivery.waiting} 条职责仍在等待依赖`}},{key:"sections-complete",label:"合同章节无缺章",passed:0===a.delivery.missingSections,...0===a.delivery.missingSections?{}:{message:`${a.delivery.missingSections} 个合同章节没有生效正文`}},...a.sectionProgress?.length?[(()=>{let b=a.sectionProgress.filter(a=>"out-of-scope"!==a.phase),c=b.filter(a=>a.locked||"closed-with-items"===a.phase).length,d=a.delivery.sectionStates&&c===b.length;return{key:"sections-locked",label:"全部合同节已锁定或带未决项收口且基本信息表合格",passed:d,...d?{}:{message:`${b.length-c}/${b.length} 节尚未收口${a.delivery.sectionStates?"":",或项目基本信息表未通过"}:${b.filter(a=>!a.locked&&"closed-with-items"!==a.phase).slice(0,6).map(a=>`${a.title}(${a.phase})`).join("、")}`}}})()]:[],...a.delivery.tenderResponse?[{key:"tender-response",label:"招标明确要求的输出已落实",passed:a.delivery.tenderResponse.passed,...a.delivery.tenderResponse.passed?{}:{message:a.delivery.tenderResponse.message}}]:[],{key:"composition-structure",label:"成稿编号与冻结结构一致",passed:a.delivery.compositionValid,...a.delivery.compositionValid?{}:{message:"成稿存在编号、父子结构或正文归属缺陷,不能交付"}},{key:"execution-baseline",label:a.executionBaselineRef.current?.allocationBasis==="provisional-source-ownership"?"工期、阶段与里程碑数字与暂定基准一致":"工期、阶段与里程碑数字一致",passed:a.delivery.executionBaseline,...a.delivery.executionBaseline?a.executionBaselineRef.current?.allocationBasis==="provisional-source-ownership"?{message:"数字为来源归属暂定基准;生产细化/认证后可升版复核"}:{}:{message:a.executionBaselineRef.current?"正文的阶段区间、里程碑日期或天序与执行基准冲突,不能交付":"本次运行没有有来源的执行基准;工期、阶段与资源数字未核,不能交付"}},{key:"language-quality",label:"已知错词与异体字已清零",passed:a.delivery.languageQuality,...a.delivery.languageQuality?{}:{message:"正文仍有已知错词/日式异体字,不能交付"}},...b.bidComposition?.identityMarksForbidden?[{key:"bid-identity",label:"暗标身份机械核验",passed:a.delivery.identityMarksValid,message:"只核既有身份标记模式;完整匿名语义仍须独立审查"}]:[],...(0,Q.Kf)(b.bidComposition)?[{key:"bid-body-content",label:"正文图表及封面机械核验",passed:a.delivery.bodyPolicyValid,message:"只核实际正文语法与已验身图件;不凭标题授附表资格,不代表专业适用通过"}]:[],...a.sourceCompleteness?[a.sourceCompleteness]:[]]},reviewMetadata:{workflowVersion:ag.E,contractQuality:c.receipt,writingMetrics:{chapters:a.stages.filter(a=>"purpose"===a.type).length,tables:0,figures:new Set(c.figureAssets.map(a=>a.entityId)).size,citations:a.stages.length,totalChars:c.markdown.length,perChapter:{}},chapterSummaries:[],globalIssues:a.issues.map(a=>a.message),diagnostics:{metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0,schemaFailures:0,promptCacheHitTokens:0,promptCacheMissTokens:0,inputTokens:0,outputTokens:0,inputChars:0,layerChars:{l0:0,l1:0,l2:0,l3:0}},semantic:{embedCacheHits:0,embedCacheMisses:0},evidence:{raw:0,used:0,filteredNoise:0,budgetDropped:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0,t0Chars:0,t1Chars:0,t2Lines:0,omittedChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}}},generatedAt:Date.now()},i=at({chiefBlocked:a.chiefBlocked,waitingCount:a.waiting.length,responsibilityCount:a.responsibilities.total,completedResponsibilityCount:a.responsibilities.completed,receiptReady:a.delivery.receiptReady,issueCount:c.issues.length});return{id:b.documentId,taskId:b.runId,runId:b.runId,workflowVersion:ag.E.version,templateId:b.contract.id,templateName:b.title,title:b.title,requirement:b.requirement,projectRoot:b.projectRoot,projectId:b.project.snapshotId,...b.materialRoot?{materialRoot:b.materialRoot}:{},...b.generationProjectId?{generationProjectId:b.generationProjectId}:{},markdown:c.markdown,wordCount:c.markdown.replace(/\s+/gu,"").length,status:i,draft:h,executionStages:a.stages,reviewMetadata:h.reviewMetadata,warningIssues:g,...d?{scope:{sectionIds:d,partial:!0}}:{},assets:[],createdAt:h.generatedAt,updatedAt:h.generatedAt}}({input:a,finalized:br,stages:bx,issues:bS,deliveryReady:bQ,delivery:bR,waiting:bm,advisoryWaiting:bn,...aG.size?{blockedSections:[...aG].sort()}:{},responsibilities:{total:bk.length,completed:bk.filter(a=>aU.actor(a.actorId)?.checkpoint?.status==="completed").length},...aF?{scopeSectionIds:aF}:{},executionBaselineRef:al,...bY?{sectionProgress:bY}:{},...d?{budgetPause:{enforcement:ad.enforcement,where:d.where,message:ay(d),violations:d.violations}}:{},...bW?{sourceCompleteness:bW}:{},...b?{chiefBlocked:b}:{}});bZ.assets=(b=>{if(!b.figureAssets.length)return[];let c=(0,J.Fu)(b.figureAssets),d=(0,J.Fu)([b.documentHash,c]),e=(0,af.tv)(aI,`construction-figure-assets-${d}.json`,{runId:a.runId,documentId:a.documentId,documentHash:b.documentHash,sourceBindingHash:c,workspace:{file:(0,k.constructionWorkspacePath)(a.projectRoot,a.generatedDir),identity:aU.identity},renderedFromCommittedUnitsOnly:!0,receipts:b.figureAssets},a.runId);return[...new Map(b.figureAssets.map(b=>[b.svgHash,{id:`run:${a.runId}:construction-figure:${b.svgHash}`,type:"image",role:"generated",artifactKind:"construction-figure",runId:a.runId,sha256:b.svgHash,path:b.file,status:"generated",url:`/api/documents/generated/${a.documentId}/figure/${i().basename(b.file)}?projectRoot=${encodeURIComponent(a.projectRoot)}`}])).values(),{id:`run:${a.runId}:construction-figure-manifest:${e.sha256}`,type:"file",role:"attachment",artifactKind:"construction-figure-manifest",runId:a.runId,path:e.assetPath,sha256:e.sha256,status:"generated"}]})(br),bZ.createdAt=h.createdAt;let b$=aU.latestEvent();if(!h.publish(bZ,(0,J.Fu)(JSON.parse(JSON.stringify([bZ.markdown,bZ.status,bZ.reviewMetadata]))),!0,b$?{workspaceId:aU.workspaceId,eventSequence:b$.sequence,eventId:b$.id}:void 0))throw Error("CONSTRUCTION_RUN_SUPERSEDED:较新运行或文档修订已接管记录,旧运行不得覆盖");return bd=!0,aW.quality={...aW.quality,blockingCount:bS.filter(a=>"blocker"===a.severity).length,importantCount:bS.filter(a=>"warning"===a.severity).length,minorCount:bS.length,repairedCount:0},{record:bZ,diagnostics:aW,rounds:{chief:t,drains:T,responsibilities:bf.length},waiting:bm,budget:ad,budgetReport:bE,...b?{chiefBlocked:b}:{}}}catch(b){if(!bd)try{bb(!0,a.signal?.aborted?"paused":"failed")}catch(a){a_("construction-progress-stop-save-failed",{error:String(a),lastSuccess:h?.state().lastSuccess??null})}throw b}finally{a.signal?.removeEventListener("abort",bc),aQ=()=>{},h?.close(),aT.unbindSectionContracts?.(),aU.close()}}function at(a){return a.chiefBlocked||a.waitingCount>0||0===a.responsibilityCount||a.completedResponsibilityCount<a.responsibilityCount?"paused":!a.receiptReady||a.issueCount>0?"completed_with_issues":"completed"}function au(a){let b=[...new Set(a.flatMap(a=>a.provider&&a.model?[`${a.provider}:${a.model}`]:[]))].sort();return b.length?1===b.length?b[0]:"multi:"+(0,j.createHash)("sha256").update(b.join("\n")).digest("hex").slice(0,24):"unmeasured"}function av(a){return i().join((0,$.Gl)(a),"construction")}}};
|