@customize-agent/server 4.61.14 → 4.61.16
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 -1
- package/.next/server/chunks/2292.js +5 -5
- package/.next/server/chunks/5037.js +6 -6
- package/.next/server/chunks/5763.js +3 -3
- package/.next/server/chunks/8176.js +1 -1
- package/.next/server/chunks/8570.js +1 -1
- package/.next/server/chunks/9688.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +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 +27 -27
- package/package.json +1 -1
- /package/.next/static/{7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09 → 1a1f48133f2076cc92481d6ccddb7dad5dd83503c7dd4ee6b24cea41ea741f05}/_buildManifest.js +0 -0
- /package/.next/static/{7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09 → 1a1f48133f2076cc92481d6ccddb7dad5dd83503c7dd4ee6b24cea41ea741f05}/_ssgManifest.js +0 -0
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
"dataRoutes": [
|
|
287
287
|
{
|
|
288
288
|
"page": "/",
|
|
289
|
-
"dataRouteRegex": "^/_next/data/
|
|
289
|
+
"dataRouteRegex": "^/_next/data/1a1f48133f2076cc92481d6ccddb7dad5dd83503c7dd4ee6b24cea41ea741f05/index\\.json$"
|
|
290
290
|
}
|
|
291
291
|
],
|
|
292
292
|
"rsc": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=1710,exports.ids=[1710],exports.modules={61710:(a,b,c)=>{c.r(b),c.d(b,{classifyConstructionFailure:()=>e});let d=[{pattern:/ABORT_ERR|AbortError|aborted|已按用户请求暂停/iu,code:"user-abort",action:"pause-for-input",strategy:"保留已落盘成果,按暂停收口;续跑只补未完成部分",retryable:!1},{pattern:/DOCUMENT_STRUCTURE_PLAN_(?:INVALID|DEGRADED_INVALID)|STRUCTURE_PLAN_INVALID/iu,code:"structure-plan-invalid",action:"reduce-scope",strategy:"缩到受影响章/契约项组,先修机械合法性再送独立审查;保留已可校验部分",retryable:!0,scope:"affected-chapters"},{pattern:/context length|maximum context|too many tokens|input too long|INPUT_OVERSIZE|输入超出|输入.*预算|上下文.*(?:超|长)|超出.*上下文/iu,code:"context-overflow",action:"reduce-scope",strategy:"按章/按节/按来源分批,缩到当前受影响范围后重试",retryable:!0,scope:"affected-sections"},{pattern:/BUDGET|EXHAUSTED|预算|PAUSE/iu,code:"budget-paused",action:"pause-for-input",strategy:"按预算暂停收口;续跑沿用已用额度,不重置、不换模型",retryable:!1},{pattern:/PLANNING_CONTEXT_INCOMPLETE|EXTRACTION_INCOMPLETE|SOURCE_.*INCOMPLETE|窗口未读|unread/iu,code:"input-incomplete",action:"switch-tool",strategy:"换检索/读取路径把未读窗口分批读完;不把未读当已覆盖,也不换模型",retryable:!0,tool:"paged-retrieval"},{pattern:/STRUCTURE_SELECTION|DOMAIN_JSON_INVALID|INVALID_JSON|JSON|SCHEMA|PROTOCOL|REQUIRED_PROPERTY|validateProtocol|PURPOSE_REQUIRED|ASSIGNMENT_INVALID/iu,code:"protocol-json-invalid",action:"repair-protocol-json",strategy:"先做本地 JSON/别名归一;仍不合格则带字段级错误重试同一策略",retryable:!0,tool:"schema-constrained-json"},{pattern:/ETIMEDOUT|ECONNRESET|ECONNREFUSED|EPIPE|socket hang up|network|rate.?limit|(?<!\d)(?:429|5\d\d)(?!\d)/iu,code:"transport-transient",action:"retry-same-strategy",strategy:"保持当前模型与策略,按退避重试传输;不更换模型",retryable:!0},{pattern:/PERMISSION|SCOPE_DENIED|LEASE|FORBIDDEN|UNAUTHORIZED/iu,code:"scope-denied",action:"switch-tool",strategy:"换用当前授权内的工具/读法;仍无权限则缩到已授权范围",retryable:!0,tool:"authorized-alternative"},{pattern:/NOT_FOUND|MISSING|REQUIRED|UNCOVERED|未取得|不存在|缺少|未覆盖|没有工作包|不可读/iu,code:"input-missing",action:"switch-tool",strategy:"换检索/读取路径取证;确实无据则记录缺口并暂停等输入",retryable:!0,tool:"alternate-retrieval"},{pattern:/review|审查|pending|recorded-unresolved/iu,code:"review-unresolved",action:"record-and-continue",strategy:"语义意见按未决项入台账,继续成稿;不阻塞完整稿导出",retryable:!1},{pattern:/figure|chart|diagram|render|图件|渲染/iu,code:"figure-degraded",action:"degrade-artifact",strategy:"保留同内容组的等效载体并记账;不静默省略必出图",retryable:!1,degrade:"equivalent-carrier"}];function e(a,b){let c=a instanceof Error?`${a.name}: ${a.message}`:String(a??""),e=d.find(a=>a.pattern.test(c)),f=c.replace(/\s+/gu," ").slice(0,400)||"未提供错误文本";return e?{version:"construction-failure-strategy-v1",code:e.code,action:e.action,strategy:e.strategy,...e.tool?{tool:e.tool}:{},...e.scope?{scope:e.scope}:{},...e.degrade?{degrade:e.degrade}:{},...b?.phase?{reason:`${b.phase}:${f}`}:{reason:f},retryable:e.retryable,modelSwitch:!1}:{version:"construction-failure-strategy-v1",code:"unclassified",action:"record-and-continue",strategy:"不盲目重跑同一失败;保留当前成果并把失败原因写入台账,等待下一轮策略调整",retryable:!1,modelSwitch:!1,reason:f}}}};
|
|
1
|
+
"use strict";exports.id=1710,exports.ids=[1710],exports.modules={61710:(a,b,c)=>{c.r(b),c.d(b,{classifyConstructionFailure:()=>e});let d=[{pattern:/ABORT_ERR|AbortError|aborted|已按用户请求暂停/iu,code:"user-abort",action:"pause-for-input",strategy:"保留已落盘成果,按暂停收口;续跑只补未完成部分",retryable:!1},{pattern:/(?<!\d)(?:401|402|403)(?!\d)|insufficient[\s_-]?quota|insufficient\s+balance|exceeded\s+your\s+current\s+quota|quota\s+(?:exceeded|exhausted)|billing|余额不足|欠费|配额不足|额度不足|额度已用/iu,code:"provider-account-unavailable",action:"pause-for-input",strategy:"账户/配额不可用:整轮暂停并保留检查点、已写正文与出箱事件;充值/恢复后从原检查点续跑,不换模型",retryable:!1},{pattern:/DOCUMENT_STRUCTURE_PLAN_(?:INVALID|DEGRADED_INVALID)|STRUCTURE_PLAN_INVALID/iu,code:"structure-plan-invalid",action:"reduce-scope",strategy:"缩到受影响章/契约项组,先修机械合法性再送独立审查;保留已可校验部分",retryable:!0,scope:"affected-chapters"},{pattern:/context length|maximum context|too many tokens|input too long|INPUT_OVERSIZE|输入超出|输入.*预算|上下文.*(?:超|长)|超出.*上下文/iu,code:"context-overflow",action:"reduce-scope",strategy:"按章/按节/按来源分批,缩到当前受影响范围后重试",retryable:!0,scope:"affected-sections"},{pattern:/BUDGET|EXHAUSTED|预算|PAUSE/iu,code:"budget-paused",action:"pause-for-input",strategy:"按预算暂停收口;续跑沿用已用额度,不重置、不换模型",retryable:!1},{pattern:/PLANNING_CONTEXT_INCOMPLETE|EXTRACTION_INCOMPLETE|SOURCE_.*INCOMPLETE|窗口未读|unread/iu,code:"input-incomplete",action:"switch-tool",strategy:"换检索/读取路径把未读窗口分批读完;不把未读当已覆盖,也不换模型",retryable:!0,tool:"paged-retrieval"},{pattern:/STRUCTURE_SELECTION|DOMAIN_JSON_INVALID|INVALID_JSON|JSON|SCHEMA|PROTOCOL|REQUIRED_PROPERTY|validateProtocol|PURPOSE_REQUIRED|ASSIGNMENT_INVALID/iu,code:"protocol-json-invalid",action:"repair-protocol-json",strategy:"先做本地 JSON/别名归一;仍不合格则带字段级错误重试同一策略",retryable:!0,tool:"schema-constrained-json"},{pattern:/ETIMEDOUT|ECONNRESET|ECONNREFUSED|EPIPE|socket hang up|network|rate.?limit|(?<!\d)(?:429|5\d\d)(?!\d)/iu,code:"transport-transient",action:"retry-same-strategy",strategy:"保持当前模型与策略,按退避重试传输;不更换模型",retryable:!0},{pattern:/PERMISSION|SCOPE_DENIED|LEASE|FORBIDDEN|UNAUTHORIZED/iu,code:"scope-denied",action:"switch-tool",strategy:"换用当前授权内的工具/读法;仍无权限则缩到已授权范围",retryable:!0,tool:"authorized-alternative"},{pattern:/NOT_FOUND|MISSING|REQUIRED|UNCOVERED|未取得|不存在|缺少|未覆盖|没有工作包|不可读/iu,code:"input-missing",action:"switch-tool",strategy:"换检索/读取路径取证;确实无据则记录缺口并暂停等输入",retryable:!0,tool:"alternate-retrieval"},{pattern:/review|审查|pending|recorded-unresolved/iu,code:"review-unresolved",action:"record-and-continue",strategy:"语义意见按未决项入台账,继续成稿;不阻塞完整稿导出",retryable:!1},{pattern:/figure|chart|diagram|render|图件|渲染/iu,code:"figure-degraded",action:"degrade-artifact",strategy:"保留同内容组的等效载体并记账;不静默省略必出图",retryable:!1,degrade:"equivalent-carrier"}];function e(a,b){let c=a instanceof Error?`${a.name}: ${a.message}`:String(a??""),e=d.find(a=>a.pattern.test(c)),f=c.replace(/\s+/gu," ").slice(0,400)||"未提供错误文本";return e?{version:"construction-failure-strategy-v1",code:e.code,action:e.action,strategy:e.strategy,...e.tool?{tool:e.tool}:{},...e.scope?{scope:e.scope}:{},...e.degrade?{degrade:e.degrade}:{},...b?.phase?{reason:`${b.phase}:${f}`}:{reason:f},retryable:e.retryable,modelSwitch:!1}:{version:"construction-failure-strategy-v1",code:"unclassified",action:"record-and-continue",strategy:"不盲目重跑同一失败;保留当前成果并把失败原因写入台账,等待下一轮策略调整",retryable:!1,modelSwitch:!1,reason:f}}}};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";exports.id=2292,exports.ids=[2292],exports.modules={32292:(a,b,c)=>{c.r(b),c.d(b,{constructionCapabilityCatalog:()=>as,constructionModelIdentity:()=>aw,constructionRecordStatus:()=>av,constructionRunDirectory:()=>ax,runConstructionDocument:()=>au,writeConstructionRunCallAudit:()=>at});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(5468),w=c(745);async function x(a){let b=Date.now(),c=Math.max(1,Math.floor(a.concurrency)),d=[],e=[];for(let b of a.actors){let c,f;if(b.sectionIds.length){try{c=a.responsibility(b.actorId)}catch(a){d.push({actorId:b.actorId,sectionId:b.sectionIds[0],stage:"responsibility-unavailable",reason:a instanceof Error?a.message:String(a)});continue}if(c){try{f=a.toolsOf(c).find(a=>"plan_section"===a.name)}catch(a){d.push({actorId:b.actorId,sectionId:b.sectionIds[0],stage:"lane-tool-unavailable",reason:a instanceof Error?a.message:String(a)});continue}if(f)for(let a of b.sectionIds)e.push({actorId:b.actorId,sectionId:a,invoke:async()=>f.invoke({sectionId:a},`plan-lane:${a}:${(0,w.Fu)([b.actorId]).slice(0,8)}`)})}}}let f=0;if(!e.length)return{sections:0,planned:f,failures:d,concurrency:c,elapsedMs:Date.now()-b};let g=0,h=async()=>{for(;;){let b=g;if(g+=1,b>=e.length||a.signal?.aborted||a.blocked?.())return;let c=e[b];try{let b=await c.invoke(),e=b?.data??{};!1===e.ok?d.push({actorId:c.actorId,sectionId:c.sectionId,stage:String(e.stage??"unknown"),reason:String(e.reason??e.error??e.stage??"节计划未生成")}):(f+=1,a.onSection?.({sectionId:c.sectionId,actorId:c.actorId,sectionPlanHash:"string"==typeof e.sectionPlanHash?e.sectionPlanHash:null,subsections:Array.isArray(e.subsections)?e.subsections.length:null}))}catch(a){d.push({actorId:c.actorId,sectionId:c.sectionId,stage:"transport",reason:a instanceof Error?a.message:String(a)})}}};for(let b of(await Promise.all(Array.from({length:Math.min(c,e.length)},()=>h())),d.filter(a=>/SECTION_PLAN_TITLE_DUPLICATE/u.test(a.reason)))){if(a.signal?.aborted||a.blocked?.())break;let c=e.find(a=>a.sectionId===b.sectionId&&a.actorId===b.actorId);if(c)try{let e=await c.invoke(),g=e?.data??{};if(!1===g.ok){b.stage=String(g.stage??b.stage),b.reason=String(g.reason??g.error??b.reason);continue}let h=d.indexOf(b);h>=0&&d.splice(h,1),f+=1,a.onSection?.({sectionId:c.sectionId,actorId:c.actorId,sectionPlanHash:"string"==typeof g.sectionPlanHash?g.sectionPlanHash:null,subsections:Array.isArray(g.subsections)?g.subsections.length:null})}catch(a){b.stage="transport",b.reason=a instanceof Error?a.message:String(a)}}return{sections:e.length,planned:f,failures:d,concurrency:c,elapsedMs:Date.now()-b}}var y=c(37038),z=c(3737),A=c(61485),B=c(31232),C=c(25821),D=c(98459),E=c(45408),F=c(69977),G=c(36980),H=c(25164),I=c(6873),J=c(25353),K=c(47353),L=c(42165),M=c(4053),N=c(1932),O=c(73005),P=c(63072),Q=c(47523),R=c(16669),S=c(69970),T=c(36690),U=c(16208),V=c(45532),W=c(1623),X=c(9104),Y=c(85585),Z=c(26621),$=c(98943),_=c(68515),aa=c(85738),ab=c(81146),ac=c(49724),ad=c(49584),ae=c(45304),af=c(6906),ag=c(3410),ah=c(13380),ai=c(39375),aj=c(19045),ak=c(6158);let al=new Map;var am=c(62563),an=c(91088);let ao={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 ap(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,an.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:ao,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,ah.tv)(a.artifactDir,"final-document-review.json",{version:"final-document-review-v1",runId:a.runId,...e},a.runId),e}var aq=c(4387);let ar=["query_project_facts","query_work_packages","search_evidence","discover_files","read_source"];function as(a){let b={projectRoot:i().resolve(a.projectRoot),scopeRootNames:[...a.scopeRootNames],skills:[...a.skills],toolNames:[...af.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:$.callDocumentLlmWithTools,...a.deferSectionReview?{deferSectionReview:a.deferSectionReview}:{}}]}function at(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=a=>{let b=new Map;for(let c of d){let d=a(c)||"unknown",e=b.get(d)??{calls:0,inputTokens:0,outputTokens:0,maxInputChars:0};e.calls+=1,e.inputTokens+=c.inputTokens??0,e.outputTokens+=c.outputTokens??0,e.maxInputChars=Math.max(e.maxInputChars,c.inputChars??0),b.set(d,e)}return[...b].sort((a,b)=>b[1].inputTokens-a[1].inputTokens)},j={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),byKind:h(a=>String(a.kind??"unknown")),byActor:h(a=>String(a.actorId??a.kind??"unknown")).slice(0,20)};return(0,ah.tv)(a.artifactDir,"run-call-audit.json",j,a.runId),a.onReceipt?.("construction-run-call-audit",{calls:j.calls,duplicateInputCalls:j.duplicateInputCalls,emptyCalls:j.emptyCalls,unknownUsageCalls:j.unknownUsageCalls}),j}catch{return}}async function au(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 af=(0,n.En)(a.budget),an={},ao=Object.keys(a.project.sources).filter(b=>!a.scopeRootNames.some(a=>b===a||b.startsWith(`${a}/`)));if(ao.length)throw Error(`CONSTRUCTION_RUN_MATERIAL_SCOPE_INCOMPLETE:${ao.length} 份冻结来源不在本次资料范围内,例如 ${ao[0]}`);let au=a.caller??$.callDocumentLlmWithTools,ax=(0,S.Kf)(a.bidComposition)?await (0,S.m3)():void 0,ay=a.skills??(0,ae.loadGenerationSkills)(),az=()=>[],aA=as({projectRoot:a.projectRoot,scopeRootNames:a.scopeRootNames,skills:ay,structurePlanning:!!a.structurePlan,deferSectionReview:()=>!!a.structurePlan&&az().length>0}).map(a=>({...a,caller:au})),aB={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},aC=(0,V.BI)(a.project),aD=new Map;for(let b of aC){let c=b.entry.sourceFile,d=aD.get(c)??{total:0,authorized:0};d.total+=1,(!a.scope?.memberIndices?.length||a.scope.memberIndices.includes(b.index))&&(d.authorized+=1),aD.set(c,d)}let aE=[...aD].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 aF=new Set(aC.map(a=>a.index));if(a.scope?.memberIndices?.some(a=>!Number.isSafeInteger(a)||!aF.has(a)))throw Error(`CONSTRUCTION_RUN_SCOPE_MEMBER_UNKNOWN:${(a.scope.memberIndices??[]).filter(a=>!aF.has(a)).slice(0,8).join("、")}
|
|
2
|
-
不是本次冻结清单的有效 memberIndices(有效范围 0..${Math.max(0,aC.length-1)})`);let aG=a.scope?.memberIndices?.length?[...a.scope.memberIndices]:aC.map(a=>a.index),aH=a.scope?.sectionIds?.length?[...a.scope.sectionIds]:a.contract.sections.map(a=>a.id),aI=a.scope?.sectionIds?.length?[...new Set(a.scope.sectionIds)]:void 0,aJ=new Set,aK=new Map,aL=a.artifactDir??a.generatedDir,aM=a.nodeLogBaseDir??aL,aN=(0,t.QG)(),aO=a.planningContext?.sourceLedger.entries.filter(a=>"read"!==a.readStatus)??[],aP=aI?new Set(aI):void 0,aQ=a.contract.sections.filter(a=>!aP||aP.has(a.id)),aR=a.contract.chapters.filter(a=>aQ.some(b=>b.chapterId===a.id)),aS=a.chiefGoal??(0,t.IC)({projectName:a.projectName,title:a.title,requirement:a.requirement,documentTitle:a.title,chapterTitles:aR.map(a=>a.title),sectionIds:aH,sectionDirectory:aQ.map(b=>({id:b.id,title:b.title,chapterId:b.chapterId,chapterTitle:a.contract.chapters.find(a=>a.id===b.chapterId)?.title??""})),workPackageCount:aC.length,memberCount:aC.length,sourceFiles:aE,...a.scope?{scope:{sectionTitles:aH.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,F.oY)(a)).map(a=>({element:a.element,form:a.form,status:"domain-baseline"===a.kind?"施工组织设计垂直领域基线(建议出图;确不适用的可按 outputExceptions 写明理由与等效载体,由独立审查接受)":"招标明确要求(必须出)"})),contractObligations:a.planningContext.contractObligations.filter(F.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,am.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,am.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:aO.slice(0,40).map(a=>({filePath:a.filePath,readStatus:a.readStatus,unknowns:a.unknowns})),unreadSourceCount:aO.length,...aO.length>40?{unreadSourcesNote:`仅列前 40 份;其余 ${aO.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}}:{}}),aT=()=>{},aU=()=>{},aV=()=>{},aW=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:[...ar]},...a.onReceipt?{onReceipt:a.onReceipt}:{},...a.onBusinessCommit?{onBusinessCommit:a.onBusinessCommit}:{},...a.onProgressBoundary?{onProgressBoundary:a.onProgressBoundary}:{},...a.signal?{signal:a.signal}:{}},e=a.diagnostics??(0,ab.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?()=>aV():void 0,earlyDrafts:a.earlyDrafts,workspaceInput:aB,runId:a.runId,chiefSystem:aN,chiefGoal:aS,profiles:aA,memberIndices:aG,sectionIds:aH,generatedDir:aL,...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??$.callDocumentLlmJson,executionBaselineRef:an,blockedSections:aJ,nodeLogBaseDir:aM,projectRoot:a.projectRoot,skills:ay,scopeRootNames:a.scopeRootNames,caller:au,budget:af,...a.diagnostics?{diagnostics:a.diagnostics}:{},onReceipt:(b,c)=>{a.onReceipt?.(b,c),b.startsWith("construction-progress-")||aT()},onBusinessCommit:()=>{bc=!0},onProgressBoundary:()=>aU(),...a.signal?{signal:a.signal}:{}}),{store:aX,coordinator:aY,diagnostics:aZ}=aW,a$=[...new Set([...a.scope?.sectionIds??[],...a.contract.sections.map(a=>a.id)])],a_=()=>(0,n.r0)({sections:a$,calls:(aZ.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?aX.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:af.perSection.maxInputTokens}),a0=()=>a.structurePlan?(0,T.F_)(a.structurePlan).map(({section:b,chapter:c},d)=>{let e=(0,H.Pp)(aX,b.sectionId),f=a.sectionPlans?.get(b.sectionId)??aX.entity(`section-plan:${b.sectionId}`)?.value?.plan,g=(0,B.rz)(aX,b.sectionId).length,h=aI&&!aI.includes(b.sectionId)?"out-of-scope":e?0===g?f?"section-planned":"not-started":"planned"===e.phase?"drafting":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;an.current=(0,X.nu)(aX);let a1=aW.chief,a2=aW.onReceipt,a3="provisional-source-ownership",a4=()=>{let b=(0,X.qN)(aX,a.project).filter(a=>a.sectionIds.some(a=>aH.includes(a))),c=new Set(b.flatMap(a=>a.sectionIds).filter(a=>aH.includes(a)));return{packages:b,coveredSectionIds:[...c],missingSectionIds:aH.filter(a=>!c.has(a)),missingAllocations:[],overAllocated:[]}},a5=!!a.planningContext,a6=!1,a7=async()=>{if(!a5)return;if(an.current){let b=an.current,c=(0,X.PE)({store:aX,project:a.project,sectionIds:aH,allocationMode:a3}),d=new Set(b.coveredSectionIds??[]);if(b.workPackageSetHash===c.workPackageSetHash&&b.allocationSetHash===c.allocationSetHash&&aH.every(a=>d.has(a))){a6=!0,(0,ah.Jv)({generatedDir:aL,fileName:"execution-baseline.json",value:b,runId:a.runId});return}a2("construction-run-execution-baseline-stale",{reason:"工作包集合/分配/覆盖章节已变化,重编基准",previous:{workPackageSetHash:b.workPackageSetHash??null,allocationSetHash:b.allocationSetHash??null},current:{workPackageSetHash:c.workPackageSetHash,allocationSetHash:c.allocationSetHash}}),an.current=void 0,a6=!1}let b=a4();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,X.du)({store:aX,project:a.project,sectionIds:aH,allocationMode:a3,...a.planningContext?{planningContext:a.planningContext}:{},caller:a.jsonCaller??$.callDocumentLlmJson,diagnostics:aZ,signal:a.signal,artifactDir:aL,runId:a.runId,laborPolicy:_.Qk.p??null}),d=(0,X.ZO)({store:aX,baseline:c.baseline,runId:a.runId});an.current=c.baseline,a6=!0,(0,ah.Jv)({generatedDir:aL,fileName:"execution-baseline.json",value:c.baseline,runId:a.runId}),a2("construction-run-execution-baseline",{workPackages:b.packages.length,batches:c.coverage.batches,members:c.coverage.members,written:d})},a8=()=>{let a=a4();return{coverage:a,ready:!a.missingSectionIds.length&&!a.missingAllocations.length&&!a.overAllocated.length}},a9=()=>{if(!a5||f)return Promise.resolve();if(c)return c;let a={};return a.current=(async()=>{try{await a7()}catch(b){let a=b instanceof Error?b.message:String(b);/^EXECUTION_BASELINE_(SECTION_UNCOVERED|ALLOCATION_MISSING)/u.test(a)?a2("construction-run-execution-baseline-deferred",{reason:a}):f=a}finally{c===a.current&&(c=void 0)}})(),c=a.current,a.current},ba=()=>{if(!a5||c||a6&&an.current||f)return;let{coverage:a,ready:b}=a8();b&&(a2("construction-run-execution-baseline-started",{workPackages:a.packages.length,members:a.packages.reduce((a,b)=>a+b.members.length,0)}),a9())},bb=async()=>{if(c&&await c,f)throw Error(f)};if((0,ad.bindRunModelConfiguration)(aZ,a),(0,ac.bindDocumentCallLedger)(aZ,{generatedDir:aL,runId:a.runId}),(0,ah.tv)(aL,"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:ai.E.version,contractId:a.contract.id,...a.contract.chapterSource?{chapterSource:a.contract.chapterSource}:{},...a.documentOutline?{documentOutlineHash:(0,w.Fu)(a.documentOutline)}:{},...a.structurePlan?{structurePlanHash:(0,T.cI)(a.structurePlan)}:{},...a.tenderResponsePlan?{tenderResponsePlanHash:(0,w.Fu)(a.tenderResponsePlan)}:{},...a.planningContext?{planningContextHash:(0,w.Fu)(a.planningContext)}:{},budget:{perSection:af.perSection,perRun:af.perRun??null,enforcement:af.enforcement},scope:aI?{sectionIds:aI,partial:!0}:{partial:!1}},a.runId),a.structurePlan)for(let{section:b}of(0,T.F_)(a.structurePlan))(0,H.Pp)(aX,b.sectionId)||(0,H.ey)({store:aX,sectionId:b.sectionId,responsibilityId:w.P6,phase:"planned",trigger:"section-track-initialized",snapshot:{structurePlanHash:a.structurePlan.planHash,unitVersions:[],unreviewedUnitIds:[],blockingFindingIds:[],sourceReviewComplete:!1}});(0,ah.tv)(aL,"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:ai.E.version,actualPath:b.structurePlan?"two-level-planning":"legacy-outline",contract:{id:b.contract.id,hash:(0,w.Fu)(b.contract)},sources:{snapshotId:b.project.snapshotId,hash:(0,ag.ik)(b.project)},structurePlanHash:b.structurePlan?(0,T.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:F.q$,tenderApplicabilityReview:F.lK,review:A.dT,sourceReview:ag.pO,originalForm:aj.LR,originalFormReview:aj.mw,deliveryPlacement:"document-delivery-placement-v1",sectionState:H.VM,contentContract:"writing-content-contract-v1",atomicStructuralRevision:!0,finding:"review-finding-contract-v1"}},a.runId),a.documentOutline&&(0,ah.tv)(aL,"document-outline.json",a.documentOutline,a.runId),a.structurePlan&&(0,ah.tv)(aL,"document-structure-plan.json",a.structurePlan,a.runId),a.planningContext&&((0,ah.tv)(aL,"planning-context.json",a.planningContext,a.runId),(0,ah.tv)(aL,"source-extraction-ledger.json",a.planningContext.sourceLedger,a.runId)),a.tenderResponsePlan&&(0,ah.tv)(aL,"tender-response-plan.json",a.tenderResponsePlan,a.runId),a.bidComposition&&(0,ah.tv)(aL,"bid-composition.json",{version:"construction-bid-composition-v1",projectSnapshotId:a.project.snapshotId,spec:a.bidComposition,sources:a.bidCompositionSources??[]},a.runId);let bc=!1,bd=!1,be=()=>{},bf=()=>{},bg=!1;try{let b,c,d,l;h=function(a){let b,c,d=a.now??Date.now,e=a.read??(()=>(0,aa.CX)(a.documentId,a.projectRoot)),f=a.save??(b=>(0,aa.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,w.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:aL,onReceipt:a2}),aW.migration&&((0,ah.tv)(aL,"construction-migration-receipt.json",{at:new Date().toISOString(),runId:a.runId,documentId:a.documentId,sourceRunId:a.sourceRunId,sourceBuildId:a.sourceBuildId,...aW.migration.manifest,pending:aW.migration.pending,activationEligible:!1},a.runId),a2("construction-run-migration-receipt",{counts:aW.migration.manifest.counts??null,pending:aW.migration.pending.length}));let t=aX.recoverActorOwners(a.runId);(t.released.length||t.retained.length)&&a2("construction-run-owner-recovery",t);let V=0,X=0,$=`document-run:${a.documentId}`,ab=new Set,ac=()=>{let a=c;c=void 0;let b=(()=>{let a=[];for(let b of aX.supervisedActors(a1.authority.actorId)){let c=aX.actor(b.actorId),d=aX.actorEventFailure(b.actorId),e=String(c?.definition.assignmentBinding?.responsibilityKey??b.actorId);if(d){let c="failed:"+b.actorId+":"+d.receiptId;if(ab.has(c))continue;ab.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(ab.has(c))continue;ab.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(ab.has(c))continue;ab.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);ab.has(g)||(ab.add(g),a.push(`- 职责「${e}」(${b.actorId})已声明**完成职责**(检查点 ${String(f.decodedSha256??"").slice(0,16)}):核对它的成果是否满足你要的成果条件;不满足就给出具体裁决,满足则本轮可以收口。`))}let b=[];for(let a;;){let c=aX.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;ab.has(b)||(ab.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(aX.supervisedActors(a1.authority.actorId).flatMap(a=>(a.definition.toolFace??[]).includes("writing")?a.definition.sectionIds:[])),b=aX.actor(a1.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=2292,exports.ids=[2292],exports.modules={32292:(a,b,c)=>{c.r(b),c.d(b,{constructionCapabilityCatalog:()=>as,constructionModelIdentity:()=>aw,constructionRecordStatus:()=>av,constructionRunDirectory:()=>ax,runConstructionDocument:()=>au,writeConstructionRunCallAudit:()=>at});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(5468),w=c(745);async function x(a){let b=Date.now(),c=Math.max(1,Math.floor(a.concurrency)),d=[],e=[];for(let b of a.actors){let c,f;if(b.sectionIds.length){try{c=a.responsibility(b.actorId)}catch(a){d.push({actorId:b.actorId,sectionId:b.sectionIds[0],stage:"responsibility-unavailable",reason:a instanceof Error?a.message:String(a)});continue}if(c){try{f=a.toolsOf(c).find(a=>"plan_section"===a.name)}catch(a){d.push({actorId:b.actorId,sectionId:b.sectionIds[0],stage:"lane-tool-unavailable",reason:a instanceof Error?a.message:String(a)});continue}if(f)for(let a of b.sectionIds)e.push({actorId:b.actorId,sectionId:a,invoke:async()=>f.invoke({sectionId:a},`plan-lane:${a}:${(0,w.Fu)([b.actorId]).slice(0,8)}`)})}}}let f=0;if(!e.length)return{sections:0,planned:f,failures:d,concurrency:c,elapsedMs:Date.now()-b};let g=0,h=async()=>{for(;;){let b=g;if(g+=1,b>=e.length||a.signal?.aborted||a.blocked?.())return;let c=e[b];try{let b=await c.invoke(),e=b?.data??{};!1===e.ok?d.push({actorId:c.actorId,sectionId:c.sectionId,stage:String(e.stage??"unknown"),reason:String(e.reason??e.error??e.stage??"节计划未生成")}):(f+=1,a.onSection?.({sectionId:c.sectionId,actorId:c.actorId,sectionPlanHash:"string"==typeof e.sectionPlanHash?e.sectionPlanHash:null,subsections:Array.isArray(e.subsections)?e.subsections.length:null,..."number"==typeof e.authorAttempts?{authorAttempts:e.authorAttempts}:{},..."number"==typeof e.reviewRounds?{reviewRounds:e.reviewRounds}:{}}))}catch(a){d.push({actorId:c.actorId,sectionId:c.sectionId,stage:"transport",reason:a instanceof Error?a.message:String(a)})}}};for(let b of(await Promise.all(Array.from({length:Math.min(c,e.length)},()=>h())),d.filter(a=>/SECTION_PLAN_TITLE_DUPLICATE/u.test(a.reason)))){if(a.signal?.aborted||a.blocked?.())break;let c=e.find(a=>a.sectionId===b.sectionId&&a.actorId===b.actorId);if(c)try{let e=await c.invoke(),g=e?.data??{};if(!1===g.ok){b.stage=String(g.stage??b.stage),b.reason=String(g.reason??g.error??b.reason);continue}let h=d.indexOf(b);h>=0&&d.splice(h,1),f+=1,a.onSection?.({sectionId:c.sectionId,actorId:c.actorId,sectionPlanHash:"string"==typeof g.sectionPlanHash?g.sectionPlanHash:null,subsections:Array.isArray(g.subsections)?g.subsections.length:null,..."number"==typeof g.authorAttempts?{authorAttempts:g.authorAttempts}:{},..."number"==typeof g.reviewRounds?{reviewRounds:g.reviewRounds}:{}})}catch(a){b.stage="transport",b.reason=a instanceof Error?a.message:String(a)}}return{sections:e.length,planned:f,failures:d,concurrency:c,elapsedMs:Date.now()-b}}var y=c(37038),z=c(3737),A=c(61485),B=c(31232),C=c(25821),D=c(98459),E=c(45408),F=c(69977),G=c(36980),H=c(25164),I=c(6873),J=c(25353),K=c(47353),L=c(42165),M=c(4053),N=c(1932),O=c(73005),P=c(63072),Q=c(47523),R=c(16669),S=c(69970),T=c(36690),U=c(16208),V=c(45532),W=c(1623),X=c(9104),Y=c(85585),Z=c(26621),$=c(98943),_=c(68515),aa=c(85738),ab=c(81146),ac=c(49724),ad=c(49584),ae=c(45304),af=c(6906),ag=c(3410),ah=c(13380),ai=c(39375),aj=c(19045),ak=c(6158);let al=new Map;var am=c(62563),an=c(91088);let ao={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 ap(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,an.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:ao,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,ah.tv)(a.artifactDir,"final-document-review.json",{version:"final-document-review-v1",runId:a.runId,...e},a.runId),e}var aq=c(4387);let ar=["query_project_facts","query_work_packages","search_evidence","discover_files","read_source"];function as(a){let b={projectRoot:i().resolve(a.projectRoot),scopeRootNames:[...a.scopeRootNames],skills:[...a.skills],toolNames:[...af.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:$.callDocumentLlmWithTools,...a.deferSectionReview?{deferSectionReview:a.deferSectionReview}:{}}]}function at(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=a=>{let b=new Map;for(let c of d){let d=a(c)||"unknown",e=b.get(d)??{calls:0,inputTokens:0,outputTokens:0,maxInputChars:0};e.calls+=1,e.inputTokens+=c.inputTokens??0,e.outputTokens+=c.outputTokens??0,e.maxInputChars=Math.max(e.maxInputChars,c.inputChars??0),b.set(d,e)}return[...b].sort((a,b)=>b[1].inputTokens-a[1].inputTokens)},j={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),byKind:h(a=>String(a.kind??"unknown")),bySection:h(a=>String(a.sectionId??"unknown")).slice(0,40),byActor:h(a=>String(a.actorId??a.kind??"unknown")).slice(0,20)};return(0,ah.tv)(a.artifactDir,"run-call-audit.json",j,a.runId),a.onReceipt?.("construction-run-call-audit",{calls:j.calls,duplicateInputCalls:j.duplicateInputCalls,emptyCalls:j.emptyCalls,unknownUsageCalls:j.unknownUsageCalls}),j}catch{return}}async function au(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 af=(0,n.En)(a.budget),an={},ao=Object.keys(a.project.sources).filter(b=>!a.scopeRootNames.some(a=>b===a||b.startsWith(`${a}/`)));if(ao.length)throw Error(`CONSTRUCTION_RUN_MATERIAL_SCOPE_INCOMPLETE:${ao.length} 份冻结来源不在本次资料范围内,例如 ${ao[0]}`);let au=a.caller??$.callDocumentLlmWithTools,ax=!a.caller,ay=(0,S.Kf)(a.bidComposition)?await (0,S.m3)():void 0,az=a.skills??(0,ae.loadGenerationSkills)(),aA=()=>[],aB=as({projectRoot:a.projectRoot,scopeRootNames:a.scopeRootNames,skills:az,structurePlanning:!!a.structurePlan,deferSectionReview:()=>!!a.structurePlan&&aA().length>0}).map(a=>({...a,caller:au})),aC={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},aD=(0,V.BI)(a.project),aE=new Map;for(let b of aD){let c=b.entry.sourceFile,d=aE.get(c)??{total:0,authorized:0};d.total+=1,(!a.scope?.memberIndices?.length||a.scope.memberIndices.includes(b.index))&&(d.authorized+=1),aE.set(c,d)}let aF=[...aE].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 aG=new Set(aD.map(a=>a.index));if(a.scope?.memberIndices?.some(a=>!Number.isSafeInteger(a)||!aG.has(a)))throw Error(`CONSTRUCTION_RUN_SCOPE_MEMBER_UNKNOWN:${(a.scope.memberIndices??[]).filter(a=>!aG.has(a)).slice(0,8).join("、")}
|
|
2
|
+
不是本次冻结清单的有效 memberIndices(有效范围 0..${Math.max(0,aD.length-1)})`);let aH=a.scope?.memberIndices?.length?[...a.scope.memberIndices]:aD.map(a=>a.index),aI=a.scope?.sectionIds?.length?[...a.scope.sectionIds]:a.contract.sections.map(a=>a.id),aJ=a.scope?.sectionIds?.length?[...new Set(a.scope.sectionIds)]:void 0,aK=new Set,aL=new Map,aM=a.artifactDir??a.generatedDir,aN=a.nodeLogBaseDir??aM,aO=(0,t.QG)(),aP=a.planningContext?.sourceLedger.entries.filter(a=>"read"!==a.readStatus)??[],aQ=aJ?new Set(aJ):void 0,aR=a.contract.sections.filter(a=>!aQ||aQ.has(a.id)),aS=a.contract.chapters.filter(a=>aR.some(b=>b.chapterId===a.id)),aT=a.chiefGoal??(0,t.IC)({projectName:a.projectName,title:a.title,requirement:a.requirement,documentTitle:a.title,chapterTitles:aS.map(a=>a.title),sectionIds:aI,sectionDirectory:aR.map(b=>({id:b.id,title:b.title,chapterId:b.chapterId,chapterTitle:a.contract.chapters.find(a=>a.id===b.chapterId)?.title??""})),workPackageCount:aD.length,memberCount:aD.length,sourceFiles:aF,...a.scope?{scope:{sectionTitles:aI.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,F.oY)(a)).map(a=>({element:a.element,form:a.form,status:"domain-baseline"===a.kind?"施工组织设计垂直领域基线(建议出图;确不适用的可按 outputExceptions 写明理由与等效载体,由独立审查接受)":"招标明确要求(必须出)"})),contractObligations:a.planningContext.contractObligations.filter(F.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,am.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,am.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:aP.slice(0,40).map(a=>({filePath:a.filePath,readStatus:a.readStatus,unknowns:a.unknowns})),unreadSourceCount:aP.length,...aP.length>40?{unreadSourcesNote:`仅列前 40 份;其余 ${aP.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}}:{}}),aU=()=>{},aV=()=>{},aW=()=>{},aX=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,...void 0===a.callerErrorsAreProviderFailures?{}:{callerErrorsAreProviderFailures:a.callerErrorsAreProviderFailures},evidence:{projectRoot:i().resolve(a.projectRoot),scopeRootNames:[...a.scopeRootNames],skills:[...a.skills],toolNames:[...ar]},...a.onReceipt?{onReceipt:a.onReceipt}:{},...a.onBusinessCommit?{onBusinessCommit:a.onBusinessCommit}:{},...a.onProgressBoundary?{onProgressBoundary:a.onProgressBoundary}:{},...a.signal?{signal:a.signal}:{}},e=a.diagnostics??(0,ab.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?()=>aW():void 0,earlyDrafts:a.earlyDrafts,workspaceInput:aC,runId:a.runId,chiefSystem:aO,chiefGoal:aT,profiles:aB,memberIndices:aH,sectionIds:aI,generatedDir:aM,...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??$.callDocumentLlmJson,executionBaselineRef:an,blockedSections:aK,nodeLogBaseDir:aN,projectRoot:a.projectRoot,skills:az,scopeRootNames:a.scopeRootNames,caller:au,budget:af,...a.diagnostics?{diagnostics:a.diagnostics}:{},onReceipt:(b,c)=>{a.onReceipt?.(b,c),b.startsWith("construction-progress-")||aU()},onBusinessCommit:()=>{be=!0},onProgressBoundary:()=>aV(),callerErrorsAreProviderFailures:ax,...a.signal?{signal:a.signal}:{}}),{store:aY,coordinator:aZ,diagnostics:a$}=aX,a_=[...new Set([...a.scope?.sectionIds??[],...a.contract.sections.map(a=>a.id)])],a0=b=>{let c=b?aY.actor(b):void 0,d=c?.definition.sectionIds??[];return 1===d.length?d[0]:a.earlyDrafts?.sectionOfActor(b)},a1=()=>(0,n.r0)({sections:a_,calls:(a$.llm.callLog??[]).map(a=>({inputTokens:a.inputTokens,providerAttempts:a.transportActivities?a.transportActivities.filter(a=>"not-started"!==a.providerInvocation).length:a.providerAttempts,unknownAttempts:(()=>{let b=a.transportActivities?.filter(a=>"not-started"!==a.providerInvocation);return b?b.filter(a=>!a.usage).length:0})(),sectionId:a.sectionId??a0(a.actorId),role:(0,o.K)(a.kind)?"review":"reasoning"===a.taskKind?"think":"chief"===a.actorId?"chief":"author"}))},{unknownCallUpperBound:af.perSection.maxInputTokens}),a2=()=>a.structurePlan?(0,T.F_)(a.structurePlan).map(({section:b,chapter:c},d)=>{let e=(0,H.Pp)(aY,b.sectionId),f=a.sectionPlans?.get(b.sectionId)??aY.entity(`section-plan:${b.sectionId}`)?.value?.plan,g=(0,B.rz)(aY,b.sectionId).length,h=aJ&&!aJ.includes(b.sectionId)?"out-of-scope":e?0===g?f?"section-planned":"not-started":"planned"===e.phase?"drafting":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;an.current=(0,X.nu)(aY);let a3=aX.chief,a4=aX.onReceipt,a5="provisional-source-ownership",a6=()=>{let b=(0,X.qN)(aY,a.project).filter(a=>a.sectionIds.some(a=>aI.includes(a))),c=new Set(b.flatMap(a=>a.sectionIds).filter(a=>aI.includes(a)));return{packages:b,coveredSectionIds:[...c],missingSectionIds:aI.filter(a=>!c.has(a)),missingAllocations:[],overAllocated:[]}},a7=!!a.planningContext,a8=!1,a9=async()=>{if(!a7)return;if(an.current){let b=an.current,c=(0,X.PE)({store:aY,project:a.project,sectionIds:aI,allocationMode:a5}),d=new Set(b.coveredSectionIds??[]);if(b.workPackageSetHash===c.workPackageSetHash&&b.allocationSetHash===c.allocationSetHash&&aI.every(a=>d.has(a))){a8=!0,(0,ah.Jv)({generatedDir:aM,fileName:"execution-baseline.json",value:b,runId:a.runId});return}a4("construction-run-execution-baseline-stale",{reason:"工作包集合/分配/覆盖章节已变化,重编基准",previous:{workPackageSetHash:b.workPackageSetHash??null,allocationSetHash:b.allocationSetHash??null},current:{workPackageSetHash:c.workPackageSetHash,allocationSetHash:c.allocationSetHash}}),an.current=void 0,a8=!1}let b=a6();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,X.du)({store:aY,project:a.project,sectionIds:aI,allocationMode:a5,...a.planningContext?{planningContext:a.planningContext}:{},caller:a.jsonCaller??$.callDocumentLlmJson,diagnostics:a$,signal:a.signal,artifactDir:aM,runId:a.runId,laborPolicy:_.Qk.p??null}),d=(0,X.ZO)({store:aY,baseline:c.baseline,runId:a.runId});an.current=c.baseline,a8=!0,(0,ah.Jv)({generatedDir:aM,fileName:"execution-baseline.json",value:c.baseline,runId:a.runId}),a4("construction-run-execution-baseline",{workPackages:b.packages.length,batches:c.coverage.batches,members:c.coverage.members,written:d})},ba=()=>{let a=a6();return{coverage:a,ready:!a.missingSectionIds.length&&!a.missingAllocations.length&&!a.overAllocated.length}},bb=()=>{if(!a7||f)return Promise.resolve();if(c)return c;let a={};return a.current=(async()=>{try{await a9()}catch(b){let a=b instanceof Error?b.message:String(b);/^EXECUTION_BASELINE_(SECTION_UNCOVERED|ALLOCATION_MISSING)/u.test(a)?a4("construction-run-execution-baseline-deferred",{reason:a}):f=a}finally{c===a.current&&(c=void 0)}})(),c=a.current,a.current},bc=()=>{if(!a7||c||a8&&an.current||f)return;let{coverage:a,ready:b}=ba();b&&(a4("construction-run-execution-baseline-started",{workPackages:a.packages.length,members:a.packages.reduce((a,b)=>a+b.members.length,0)}),bb())},bd=async()=>{if(c&&await c,f)throw Error(f)};if((0,ad.bindRunModelConfiguration)(a$,a),(0,ac.bindDocumentCallLedger)(a$,{generatedDir:aM,runId:a.runId}),(0,ah.tv)(aM,"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:ai.E.version,contractId:a.contract.id,...a.contract.chapterSource?{chapterSource:a.contract.chapterSource}:{},...a.documentOutline?{documentOutlineHash:(0,w.Fu)(a.documentOutline)}:{},...a.structurePlan?{structurePlanHash:(0,T.cI)(a.structurePlan)}:{},...a.tenderResponsePlan?{tenderResponsePlanHash:(0,w.Fu)(a.tenderResponsePlan)}:{},...a.planningContext?{planningContextHash:(0,w.Fu)(a.planningContext)}:{},budget:{perSection:af.perSection,perRun:af.perRun??null,enforcement:af.enforcement},scope:aJ?{sectionIds:aJ,partial:!0}:{partial:!1}},a.runId),a.structurePlan)for(let{section:b}of(0,T.F_)(a.structurePlan))(0,H.Pp)(aY,b.sectionId)||(0,H.ey)({store:aY,sectionId:b.sectionId,responsibilityId:w.P6,phase:"planned",trigger:"section-track-initialized",snapshot:{structurePlanHash:a.structurePlan.planHash,unitVersions:[],unreviewedUnitIds:[],blockingFindingIds:[],sourceReviewComplete:!1}});(0,ah.tv)(aM,"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:ai.E.version,actualPath:b.structurePlan?"two-level-planning":"legacy-outline",contract:{id:b.contract.id,hash:(0,w.Fu)(b.contract)},sources:{snapshotId:b.project.snapshotId,hash:(0,ag.ik)(b.project)},structurePlanHash:b.structurePlan?(0,T.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:F.q$,tenderApplicabilityReview:F.lK,review:A.dT,sourceReview:ag.pO,originalForm:aj.LR,originalFormReview:aj.mw,deliveryPlacement:"document-delivery-placement-v1",sectionState:H.VM,contentContract:"writing-content-contract-v1",atomicStructuralRevision:!0,finding:"review-finding-contract-v1"}},a.runId),a.documentOutline&&(0,ah.tv)(aM,"document-outline.json",a.documentOutline,a.runId),a.structurePlan&&(0,ah.tv)(aM,"document-structure-plan.json",a.structurePlan,a.runId),a.planningContext&&((0,ah.tv)(aM,"planning-context.json",a.planningContext,a.runId),(0,ah.tv)(aM,"source-extraction-ledger.json",a.planningContext.sourceLedger,a.runId)),a.tenderResponsePlan&&(0,ah.tv)(aM,"tender-response-plan.json",a.tenderResponsePlan,a.runId),a.bidComposition&&(0,ah.tv)(aM,"bid-composition.json",{version:"construction-bid-composition-v1",projectSnapshotId:a.project.snapshotId,spec:a.bidComposition,sources:a.bidCompositionSources??[]},a.runId);let be=!1,bf=!1,bg=()=>{},bh=()=>{},bi=!1;try{let b,c,d,l;h=function(a){let b,c,d=a.now??Date.now,e=a.read??(()=>(0,aa.CX)(a.documentId,a.projectRoot)),f=a.save??(b=>(0,aa.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,w.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:aM,onReceipt:a4}),aX.migration&&((0,ah.tv)(aM,"construction-migration-receipt.json",{at:new Date().toISOString(),runId:a.runId,documentId:a.documentId,sourceRunId:a.sourceRunId,sourceBuildId:a.sourceBuildId,...aX.migration.manifest,pending:aX.migration.pending,activationEligible:!1},a.runId),a4("construction-run-migration-receipt",{counts:aX.migration.manifest.counts??null,pending:aX.migration.pending.length}));let t=aY.recoverActorOwners(a.runId);(t.released.length||t.retained.length)&&a4("construction-run-owner-recovery",t);let V=0,X=0,$=`document-run:${a.documentId}`,ab=new Set,ac=()=>{let a=c;c=void 0;let b=(()=>{let a=[];for(let b of aY.supervisedActors(a3.authority.actorId)){let c=aY.actor(b.actorId),d=aY.actorEventFailure(b.actorId),e=String(c?.definition.assignmentBinding?.responsibilityKey??b.actorId);if(d){let c="failed:"+b.actorId+":"+d.receiptId;if(ab.has(c))continue;ab.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(ab.has(c))continue;ab.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(ab.has(c))continue;ab.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);ab.has(g)||(ab.add(g),a.push(`- 职责「${e}」(${b.actorId})已声明**完成职责**(检查点 ${String(f.decodedSha256??"").slice(0,16)}):核对它的成果是否满足你要的成果条件;不满足就给出具体裁决,满足则本轮可以收口。`))}let b=[];for(let a;;){let c=aY.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;ab.has(b)||(ab.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(aY.supervisedActors(a3.authority.actorId).flatMap(a=>(a.definition.toolFace??[]).includes("writing")?a.definition.sectionIds:[])),b=aY.actor(a3.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},ad=()=>aX.supervisedActors(a1.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")}}),ae=(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:ad(),tenderResponsePlan:a.tenderResponsePlan,workPackageSectionIds:b.coveredSectionIds,allocationMissing:0,allocationRequired:!1,baselineReady:!!(a6&&an.current),requireBaseline:c,...aI?{scopeSectionIds:aI}:{}}),aj="",am=0,ao=0,ar=Math.max(1,Math.floor(_.yv?.gateMaxRounds??20)),as=!1,ay=0,aA=!1,aB=!1,aC=new Set,aD=a=>`预算安全暂停(${af.enforcement}):${a.violations.map(a=>`${"run"===a.scope?"整轮":`节 ${a.id}`} ${a.metric} ${a.actual} > ${a.limit}${a.includesUnknownUpperBound?"(含未报告用量上界)":""}`).join(";")}。已提交正文保留;补充预算或人工确认后从检查点续跑。`,aE=b=>{if(d)return!0;let c="report-only"===af.enforcement?[]:(0,n.Ag)(a_(),af).violations;if(!c.length)return!1;let e=a_();d={violations:c,usage:e,where:b};try{a.onBudgetPause?.(aD(d))}catch{}a2("construction-run-budget-paused",{where:b,enforcement:af.enforcement,violations:c,usage:e});try{(0,ah.tv)(aL,"budget-pause.json",{at:new Date().toISOString(),runId:a.runId,where:b,enforcement:af.enforcement,budget:af,violations:c,usage:e},a.runId)}catch{}return!0};aV=()=>{if(aE("before-model-call"))throw Error("CONSTRUCTION_RUN_BUDGET_PAUSED")};let aF=new Set,aG=new Map,aN=new Map,aO=Promise.resolve(),aP=b=>{let c=aX.actor(b),d=Array.isArray(c?.definition.sectionIds)?c.definition.sectionIds.map(String).sort():[],e=(0,A.cD)(aX,{responsibilityId:b,contract:a.contract,expectedBidCompositionHash:(0,A.IQ)(a.bidComposition,a.bidCompositionSources),...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{}});return(0,w.Fu)(d.map(a=>{let b=(0,B.rz)(aX,a),c=new Set(b.map(a=>a.entityId)),d=(0,B.l9)(aX,a),f=[];for(let a;;){let b=aX.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,H.Pp)(aX,a)?.boundaryKey??null,blocked:aJ.has(a),openFindingIds:f.sort()}}))},aQ=()=>(0,w.Fu)([an.current??null,aP(a1.authority.actorId),aX.supervisedActors(a1.authority.actorId).map(a=>[a.actorId,aX.actorInstruction(a.actorId)?.version??0,aP(a.actorId),aX.actorEventFailure(a.actorId)?.receiptId??null])]),aR=a.planningContext||a.tenderResponsePlan?"planning-gate-not-evaluated(规划闸门尚未通过,写作事件不投递)":void 0,aS=async()=>{for(;;){if(a.signal?.throwIfAborted(),l||aE("event-drain"))return;ba(),!bl&&void 0===aR&&a.structurePlan&&a.sectionPlans&&a.planningContext&&(!a5||a6&&an.current)&&(bl=!0,await bn());let b=aX.supervisedActors(a1.authority.actorId).filter(a=>a.definition.assignmentBinding?.purpose==="writing").length,c=await (0,u.E)({store:aX,consumerId:$,responsibilities:aY.responsibility,signal:a.signal,limit:a.eventPageSize??_.f0.T??24,concurrency:Math.max(1,b||_.N6.authorSections||12),budgetBlockedActors:aC,transportPausedActors:aF,pausedInstructionVersions:aG,haltDispatching:()=>void 0!==l,onTransportPaused:({actorId:a,reason:b})=>{!l&&(0,s.zc)(b)&&(l=b,a2("construction-run-provider-unavailable",{actorId:a,reason:b}))},recoveryStateHash:aP,stagnationRecoveryHashes:aN,deferActor:b=>{if("hard-stop"===af.enforcement&&aE("event-dispatch"))return"budget-hard-stop(预算已到上限,停止继续派发)";let c=aX.actor(b)?.definition.assignmentBinding?.purpose;if("production-calculation"===c)return a6&&an.current?aR:"provisional-baseline-not-ready(首版暂定基准完成前生产计算不投递)";if("writing"===c){if(a5&&!(a6&&an.current))return"baseline-not-ready(执行基准完成前写作事件不投递)";if(bl&&a.structurePlan){let c=(Array.isArray(aX.actor(b)?.definition.sectionIds)?aX.actor(b).definition.sectionIds.map(String):[]).filter(b=>{let c=aX.entity(`section-plan:${b}`)?.value;return!a.sectionPlans?.get(b)&&!c?.plan});if(c.length)return`section-plan-missing(计划车道未能为 ${c.slice(0,4).join("、")} 生成冻结计划,等待台账处理)`}return aR}},onActorSettled:a=>(ba(),aO=aO.catch(a=>a2("construction-progress-boundary-failed",{error:String(a)})).then(async()=>{let b=aP(a);aA=await a7(a)||aA;let c=aP(a);b!==c&&aX.actor(a)?.checkpoint?.status==="yielded"&&aX.enqueueActorContinuation(a,`closure:${c}`,"节收口产生新的实际状态,继续处理本职责其余章节"),be(!0)}))});if(a.signal?.throwIfAborted(),X+=1,ay=c.consumed,a2("construction-run-event-drain",{drain:X,outcomes:c.outcomes,consumed:c.consumed,scannedPages:c.scannedPages,hasMore:c.hasMore,deferredByConcurrency:c.deferredByConcurrency}),!c.consumed)break}},a$=()=>{if(!a.structurePlan)return[];let b=[],c=new Set(aX.supervisedActors(a1.authority.actorId).flatMap(a=>{let b=a.definition.assignmentBinding;return b?.purpose!=="writing"?[]:Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[]}));for(let{section:d}of(0,T.F_)(a.structurePlan)){if(aI&&!aI.includes(d.sectionId)||!c.has(d.sectionId))continue;let e=(0,H.Pp)(aX,d.sectionId);if(e&&("closed-with-items"===e.phase||"blocked"===e.phase))continue;let f=aX.entity(`section-plan:${d.sectionId}`)?.value,g=f?.plan??a.sectionPlans?.get(d.sectionId),h=(0,B.rz)(aX,d.sectionId);if(!g){h.length||b.push(d.sectionId);continue}let i=(g.subsections??[]).filter(a=>"transition"!==a.role);if(!i.length)continue;let j=new Set(h.flatMap(a=>{let b=aX.entity(a.entityId)?.value,c=b?.subsectionId;return"string"==typeof c&&c?[c]:[]}));if(!j.size){if(h.length)continue;b.push(d.sectionId);continue}i.some(a=>!j.has(String(a.subsectionId??"")))&&b.push(d.sectionId)}return b};az=a$;let a3=-1,a7=async b=>{if(!a.structurePlan||a.signal?.aborted||aR||a5&&!(a6&&an.current))return!1;let c=a$();if(c.length)return c.length!==a3&&(a3=c.length,a2("construction-run-first-draft-pending",{pendingCount:c.length,pendingSectionIds:c.slice(0,12)})),!1;void 0===b&&(aB=!0);let d=aX.supervisedActors(a1.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)}),e=!1,f=Math.max(1,Math.floor(_.N6.reviewSections??4)),g=[];for(let a of d){let b=Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[];if(b.length)for(let c of b)g.push({actor:a,actorSections:b,sectionId:c})}let h=0,i=async()=>{for(;;){let b=h;if(h+=1,b>=g.length)return;let c=g[b],{actor:d,actorSections:f,sectionId:i}=c;try{let b=await (0,z.H_)({store:aX,contract:a.contract,project:a.project,responsibilityId:d.actorId,sectionId:i,authoritySectionIds:f,...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}:{},...an.current?{executionBaseline:an.current}:{},projectRoot:a.projectRoot,caller:au,diagnostics:aZ,artifactDir:aL,runId:a.runId,...a.signal?{signal:a.signal}:{},...a1.sourceCoverageLock?{sourceCoverageLock:a1.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&&(e=!0),a2("construction-run-section-review",{actorId:d.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&&a2("construction-run-section-review-skipped",{actorId:d.actorId,sectionId:i,reason:b.reason,...b.planGaps?.length?{planGaps:b.planGaps}:{}});let c=(0,z.OL)({store:aX,contract:a.contract,project:a.project,responsibilityId:d.actorId,sectionId:i,authoritySectionIds:f,...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}:{},...an.current?{executionBaseline:an.current}:{},lock:!0,lockActorId:w.P6,lockedBy:"mechanical-closure"});c.wroteLock&&c.lock&&(e=!0,a2("construction-run-section-locked",{actorId:d.actorId,sectionId:i,sectionPlanHash:c.sectionPlanHash,unitCount:c.lock.unitVersions.length,reviewApplied:c.lock.review.applied}));let g=c.openFindingIds.length;if(c.contractPassed&&0===c.unreviewedUnitIds.length&&g>0){let b=(0,w.Fu)([(0,B.rz)(aX,i).map(a=>[a.entityId,aX.entity(a.entityId)?.value??null]),c.openFindingIds.map(a=>{let b=aX.issue(a);return b?[b.title,b.detail,b.evidence.filter(a=>!a.startsWith("review-invocation:"))]:null})]),f=aK.get(i)??new Set,g=f.has(b);if(f.add(b),aK.set(i,f),!aJ.has(i)&&g){aJ.add(i),e=!0;let f=(0,H.Pp)(aX,i);f&&(0,H.ey)({store:aX,sectionId:i,responsibilityId:d.actorId,phase:"blocked",snapshot:f.snapshot,resumeFrom:"reviewing",trigger:"runtime-review-state-repeated",dependencyKeys:[b],reason:"当前正文和未关闭审查动作重复出现,未取得新的处理依据"});let g=(0,H.Pp)(aX,i);g&&(0,y.mr)({actorId:d.actorId,goal:"",documentId:a.documentId,baseDir:aM,sectionId:i,state:g.phase,key:g.boundaryKey,reason:g.reason??""}),a2("construction-run-section-blocked",{actorId:d.actorId,sectionId:i,findingIssueIds:c.openFindingIds,stateFingerprint:b})}else aJ.has(i)||g||(e=!0)}else 0===g&&(aK.delete(i),aJ.delete(i)&&(e=!0,a2("construction-run-section-unblocked",{actorId:d.actorId,sectionId:i})))}catch(a){a2("construction-run-section-closure-failed",{actorId:c.actor.actorId,sectionId:c.sectionId,error:a instanceof Error?a.message:String(a)})}}};if(await Promise.all(Array.from({length:Math.min(f,g.length)},()=>i())),void 0===b)for(let a of d){let b=aX.actor(a.actorId)?.checkpoint?.status;b&&"completed"!==b&&"running"!==b&&aX.enqueueActorContinuation(a.actorId,`closure:${aP(a.actorId)}`,"节收口产生新的实际状态,继续处理本职责剩余章节")}return e},bh={generatedDir:(0,aa.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},bi=(b=!1,c="generating")=>{if(!h?.owns())return a2("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=aX.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,M.iC)(a);c&&b.push({entityId:a.id,entityVersion:a.version,entityHash:(0,w.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,O.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,w.Fu)(JSON.parse(JSON.stringify([h,g,b])));if(al.has(i))return al.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 al.size>=512&&al.delete(al.keys().next().value),al.set(i,d),d}catch{al.size>=512&&al.delete(al.keys().next().value),al.set(i,void 0);return}}:void 0;return{...(0,N.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:aX,contract:a.contract,outputPlacements:(0,e.rL)(a.tenderResponsePlan),originalFormRenderer:(0,e.iP)(a.tenderResponsePlan),...f.size?{sectionPlans:f}:{},...aI?{scopeSectionIds:aI}:{},figureRender:bh,...a6&&an.current?{executionBaseline:an.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,Z.ip)(a.documentId,{baseDir:aM}).stages,k=[aX.actor(a1.authority.actorId),...aX.supervisedActors(a1.authority.actorId)].filter(a=>void 0!==a),l=aH.map(a=>{let b=(0,H.Pp)(aX,a);return{sectionId:a,blocked:aJ.has(a),phase:b?.phase??"planned",boundaryKey:b?.boundaryKey??null,reason:b?.reason??null,lock:(0,B.l9)(aX,a)?.entity.version??null}}),m=[];for(let a;;){let b=aX.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,w.Fu)(JSON.parse(JSON.stringify([g.markdown,n,c]))),p=aX.latestEvent(),q=p?{workspaceId:aX.workspaceId,eventSequence:p.sequence,eventId:p.id}:void 0,r=Date.now(),s=a0(),t={templateId:a.contract.id,templateName:a.title,title:a.title,requirement:a.requirement,...a.bidComposition?{bidComposition:a.bidComposition,exportSettings:(0,ak.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:af.enforcement,where:d.where,message:aD(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:ai.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||a2("construction-progress-stale",{runId:a.runId,reason:"not-published",lastSuccess:h.state().lastSuccess??null,composedUnits:g.unitCount,markdownChars:g.markdown.length}),u};be=bi,aT=()=>{bc=!0},aU=()=>{bc&&(bd||(bd=!0,Promise.resolve().then(()=>{try{if(bc)try{bi()&&(bc=!1)}catch(a){a2("construction-progress-build-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}}finally{bd=!1}})))},bf=()=>{try{bi(!0,"paused")}catch(a){a2("construction-progress-stop-save-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}},a.signal?.addEventListener("abort",bf,{once:!0});let bj=()=>{let a=0;for(let b of aX.supervisedActors(a1.authority.actorId))a+=b.revision;return a+(aX.actor(a1.authority.actorId)?.revision??0)},bk=()=>{if(aB)return;let a=a$();if(!a.length)return;let b=aX.supervisedActors(a1.authority.actorId).filter(a=>a.definition.assignmentBinding?.purpose==="writing"&&!aX.actor(a.actorId)?.checkpoint).map(a=>a.actorId);if(b.length&&!(X<6))return{reason:`首版阶段 ${b.length} 条写作职责 0 回合、${a.length} 节未写:调度未推进,停止继续空转`,idleActorIds:b,pendingSectionIds:a}},bl=!1,bm=[],bn=async()=>{if(a.structurePlan&&a.sectionPlans&&a.planningContext)try{let b=aX.supervisedActors(a1.authority.actorId).filter(a=>a.definition.assignmentBinding?.purpose==="writing");if(a.earlyDrafts)for(let c of b){let b=aY.responsibility.get(c.actorId);if(b)try{await a.earlyDrafts.adopt(b)}catch(a){a2("construction-run-early-draft-adopt-failed",{actorId:c.actorId,error:a instanceof Error?a.message:String(a)})}}let c=await x({actors:b.map(a=>({actorId:a.actorId,sectionIds:Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[]})),responsibility:a=>aY.responsibility.get(a),toolsOf:a=>(0,v.F)({...a,excludeTools:(a.excludeTools??[]).filter(a=>"plan_section"!==a)}),concurrency:Math.max(1,Math.floor(_.N6.llmRequests??8)),...a.signal?{signal:a.signal}:{},blocked:()=>aE("plan-lane"),onSection:a=>a2("construction-run-plan-lane-section",a)});bm.push(...c.failures);let d=l?void 0:bm.find(a=>(0,s.zc)(a.reason));d&&(l=d.reason,a2("construction-run-provider-unavailable",{actorId:d.actorId,reason:d.reason,stage:d.stage})),a2("construction-run-plan-lane",{sections:c.sections,planned:c.planned,failed:bm.length,concurrency:c.concurrency,elapsedMs:c.elapsedMs}),bm.length&&a2("construction-run-plan-lane-failed",{failureCount:bm.length,failures:bm.slice(0,12)});try{(0,ah.tv)(aL,"construction-plan-lane.json",{runId:a.runId,at:new Date().toISOString(),sections:c.sections,planned:c.planned,failures:bm},a.runId)}catch{}try{aU()}catch{}}catch(a){a2("construction-run-plan-lane-error",{error:a instanceof Error?a.message:String(a),failures:bm.slice(0,12)})}},bo=()=>{if(!l)return!1;b=`模型服务账户/配额不可用,运行暂停:${l}`,a2("construction-run-provider-paused",{reason:l});try{bi(!0,"paused")}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}return!0};for(;;){let e;if(aE("chief-round")){b=aD(d);try{bi()}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let g=bk();if(g){b=g.reason,a2("construction-run-first-draft-starvation",g);try{bi(!0,"paused")}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let h=bj();aA=!1,ba();let i=!1;try{e=await (0,m.p)({...a1,coordination:aY,diagnostics:aZ,resumeCompleted:ac})}catch(a){if(!(a instanceof q.a)&&!(0,s.UM)(a))throw a;i=(0,s.UM)(a),(0,s.UM)(a)&&(0,s.zc)(a.receipt.reason)&&!l&&(l=a.receipt.reason,a2("construction-run-provider-unavailable",{actorId:a1.authority.actorId,reason:a.receipt.reason,stage:"chief"})),b=a.message,a2("construction-run-chief-blocked",{round:V+1,reason:a.message,...(0,s.UM)(a)?{transportReceipt:a.receipt}:{}}),e=void 0}if(aU(),!e){let e=aQ();if(a.planningContext||a.tenderResponsePlan){let a=a4(),c=ae(a,a5&&!!(a6&&an.current));if(aR=c.passed?void 0:"planning-gate-blocked(主控暂停分支:规划闸门未通过,写作事件不投递)",!c.passed){if(as=!1,(ao+=1)>=ar){b=`规划闸门连续失败 ${ao} 轮(运行保护上限 ${ar}):`+c.issues.slice(0,6).map(a=>a.detail).join(";"),a2("construction-run-planning-gate-blocked",{round:V,issues:c.issues,guard:"gate-max-rounds"});break}a2("construction-run-planning-gate-deferred",{stage:"chief-stalled",issues:c.issues})}}if(await aS(),aU(),bo())break;if(d){b=aD(d);try{bi()}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}aA=await a7();try{bi()}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(a5&&(an.current||a8().ready)&&(await a9(),f)){b=`执行基准编制失败:${f}`,a2("construction-run-execution-baseline-blocked",{reason:b});break}let g=aQ();if(!i&&an.current&&g!==e){c="执行基准已由工作区工作包/原量分配编制完成。现在可以委派 purpose=writing 的职责;写作职责会按节拿到本节工作包/成员与基准投影,不要另算日期或数量。",b=void 0;continue}aR&&a2("construction-run-planning-gate-blocked",{round:V,reason:aR,guard:"chief-paused-no-business-change"});break}if(V+=1,a2("construction-run-chief-round",{round:V,result:e.result??null,status:e.checkpoint?.status??null}),e.checkpoint?.status==="blocked"){b="主控自报阻塞";break}let j=!!(a.planningContext||a.tenderResponsePlan),k=j?ad():[],n=aX.actorWait(a1.authority.actorId)?.state==="waiting"||aX.actor(a1.authority.actorId)?.checkpoint?.status==="completed";if(j&&!an.current){if(ba(),await aS(),aU(),bo())break;if(d){b=aD(d);try{bi()}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}}let o=j?a4():{packages:[],coveredSectionIds:[],missingSectionIds:[],missingAllocations:[],overAllocated:[]};if(!an.current&&n&&j&&a8().ready&&(await a9(),f)){b=`执行基准编制失败:${f}`,a2("construction-run-execution-baseline-blocked",{reason:b});break}if(a5&&n)try{(an.current||a8().ready)&&await a9(),await bb()}catch(a){b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`,a2("construction-run-execution-baseline-blocked",{reason:b});break}if(j&&(k.length>0||n)){let a=ae(o,a5&&(!!n||!!(a6&&an.current)));if(a2("construction-run-planning-gate",{round:V,passed:a.passed,checks:a.checks,issues:a.issues}),!a.passed){if(as=!1,aR="planning-gate-blocked(规划闸门未通过,写作事件不投递)",(ao+=1)>=ar){b=`规划闸门连续失败 ${ao} 轮(运行保护上限 ${ar}):`+a.issues.slice(0,6).map(a=>a.detail).join(";"),a2("construction-run-planning-gate-blocked",{round:V,issues:a.issues,guard:"gate-max-rounds"});break}let d=a.issues.map(a=>`${a.kind}:${a.sectionId??""}`).join("|")||"unknown";if(d===aj?am+=1:(aj=d,am=1),am>=2){b=`规划闸门未通过:${a.issues.slice(0,6).map(a=>a.detail).join(";")}`,a2("construction-run-planning-gate-blocked",{round:V,issues:a.issues});break}c=`【规划闸门\xb7实际缺口】以下承接关系尚未成立(程序按实际角色定义核对,不是转述):
|
|
4
|
+
请按实际状态作出具体裁决;不需要动作时用 \`conclude_construction_organization\` 再次收口。`})();return[a,b].filter(Boolean).join("\n\n")||void 0},ad=()=>aY.supervisedActors(a3.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")}}),ae=(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:ad(),tenderResponsePlan:a.tenderResponsePlan,workPackageSectionIds:b.coveredSectionIds,allocationMissing:0,allocationRequired:!1,baselineReady:!!(a8&&an.current),requireBaseline:c,...aJ?{scopeSectionIds:aJ}:{}}),aj="",am=0,ao=0,ar=Math.max(1,Math.floor(_.yv?.gateMaxRounds??20)),as=!1,ax=0,az=!1,aB=!1,aC=new Map,aD=new Map,aE=new Set,aF=a=>`预算安全暂停(${af.enforcement}):${a.violations.map(a=>`${"run"===a.scope?"整轮":`节 ${a.id}`} ${a.metric} ${a.actual} > ${a.limit}${a.includesUnknownUpperBound?"(含未报告用量上界)":""}`).join(";")}。已提交正文保留;补充预算或人工确认后从检查点续跑。`,aG=b=>{if(d)return!0;let c="report-only"===af.enforcement?[]:(0,n.Ag)(a1(),af).violations;if(!c.length)return!1;let e=a1();d={violations:c,usage:e,where:b};try{a.onBudgetPause?.(aF(d))}catch{}a4("construction-run-budget-paused",{where:b,enforcement:af.enforcement,violations:c,usage:e});try{(0,ah.tv)(aM,"budget-pause.json",{at:new Date().toISOString(),runId:a.runId,where:b,enforcement:af.enforcement,budget:af,violations:c,usage:e},a.runId)}catch{}return!0};aW=()=>{if(aG("before-model-call"))throw Error("CONSTRUCTION_RUN_BUDGET_PAUSED")};let aH=new Set,aO=new Map,aP=new Map,aQ=Promise.resolve(),aR=b=>{let c=aY.actor(b),d=Array.isArray(c?.definition.sectionIds)?c.definition.sectionIds.map(String).sort():[],e=(0,A.cD)(aY,{responsibilityId:b,contract:a.contract,expectedBidCompositionHash:(0,A.IQ)(a.bidComposition,a.bidCompositionSources),...a.tenderResponsePlan?{tenderResponsePlan:a.tenderResponsePlan}:{}});return(0,w.Fu)(d.map(a=>{let b=(0,B.rz)(aY,a),c=new Set(b.map(a=>a.entityId)),d=(0,B.l9)(aY,a),f=[];for(let a;;){let b=aY.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,H.Pp)(aY,a)?.boundaryKey??null,blocked:aK.has(a),openFindingIds:f.sort()}}))},aS=()=>(0,w.Fu)([an.current??null,aR(a3.authority.actorId),aY.supervisedActors(a3.authority.actorId).map(a=>[a.actorId,aY.actorInstruction(a.actorId)?.version??0,aR(a.actorId),aY.actorEventFailure(a.actorId)?.receiptId??null])]),aT=a.planningContext||a.tenderResponsePlan?"planning-gate-not-evaluated(规划闸门尚未通过,写作事件不投递)":void 0,a_=async()=>{for(;;){if(a.signal?.throwIfAborted(),l||aG("event-drain"))return;bc(),!bo&&a.structurePlan&&a.sectionPlans&&a.planningContext&&(!a7||a8&&an.current)&&ae(a6(),a7&&!!(a8&&an.current)).passed&&(bo=!0,await bq());let b=aY.supervisedActors(a3.authority.actorId).filter(a=>a.definition.assignmentBinding?.purpose==="writing").length,c=await (0,u.E)({store:aY,consumerId:$,responsibilities:aZ.responsibility,signal:a.signal,limit:a.eventPageSize??_.f0.T??24,concurrency:Math.max(1,b||_.N6.authorSections||12),budgetBlockedActors:aE,transportPausedActors:aH,pausedInstructionVersions:aO,haltDispatching:()=>void 0!==l,onTransportPaused:({actorId:a,reason:b})=>{!l&&(0,s.zc)(b)&&(l=b,a4("construction-run-provider-unavailable",{actorId:a,reason:b}))},recoveryStateHash:aR,stagnationRecoveryHashes:aP,deferActor:b=>{if("hard-stop"===af.enforcement&&aG("event-dispatch"))return"budget-hard-stop(预算已到上限,停止继续派发)";let c=aY.actor(b)?.definition.assignmentBinding?.purpose;if("production-calculation"===c)return a8&&an.current?aT:"provisional-baseline-not-ready(首版暂定基准完成前生产计算不投递)";if("writing"===c){if(a7&&!(a8&&an.current))return"baseline-not-ready(执行基准完成前写作事件不投递)";if(bo&&a.structurePlan){let c=(Array.isArray(aY.actor(b)?.definition.sectionIds)?aY.actor(b).definition.sectionIds.map(String):[]).filter(b=>{let c=aY.entity(`section-plan:${b}`)?.value;return!a.sectionPlans?.get(b)&&!c?.plan});if(c.length)return`section-plan-missing(计划车道未能为 ${c.slice(0,4).join("、")} 生成冻结计划,等待台账处理)`;if(!a7||a8&&an.current)return}return aT}},onActorSettled:a=>(bc(),aQ=aQ.catch(a=>a4("construction-progress-boundary-failed",{error:String(a)})).then(async()=>{let b=aR(a);az=await bj(a)||az;let c=aR(a);b!==c&&aY.actor(a)?.checkpoint?.status==="yielded"&&aY.enqueueActorContinuation(a,`closure:${c}`,"节收口产生新的实际状态,继续处理本职责其余章节"),bg(!0)}))});if(a.signal?.throwIfAborted(),X+=1,ax=c.consumed,a4("construction-run-event-drain",{drain:X,outcomes:c.outcomes,consumed:c.consumed,scannedPages:c.scannedPages,hasMore:c.hasMore,deferredByConcurrency:c.deferredByConcurrency}),!c.consumed)break}},a5=()=>{if(!a.structurePlan)return[];let b=[],c=new Set(aY.supervisedActors(a3.authority.actorId).flatMap(a=>{let b=a.definition.assignmentBinding;return b?.purpose!=="writing"?[]:Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[]}));for(let{section:d}of(0,T.F_)(a.structurePlan)){if(aJ&&!aJ.includes(d.sectionId)||!c.has(d.sectionId))continue;let e=(0,H.Pp)(aY,d.sectionId);if(e&&("closed-with-items"===e.phase||"blocked"===e.phase))continue;let f=aY.entity(`section-plan:${d.sectionId}`)?.value,g=f?.plan??a.sectionPlans?.get(d.sectionId),h=(0,B.rz)(aY,d.sectionId);if(!g){h.length||b.push(d.sectionId);continue}let i=(g.subsections??[]).filter(a=>"transition"!==a.role);if(!i.length)continue;let j=new Set(h.flatMap(a=>{let b=aY.entity(a.entityId)?.value,c=b?.subsectionId;return"string"==typeof c&&c?[c]:[]}));if(!j.size){if(h.length)continue;b.push(d.sectionId);continue}i.some(a=>!j.has(String(a.subsectionId??"")))&&b.push(d.sectionId)}return b};aA=a5;let a9=-1,bj=async b=>{if(!a.structurePlan||a.signal?.aborted||aT||a7&&!(a8&&an.current))return!1;let c=a5();if(c.length){c.length!==a9&&(a9=c.length,a4("construction-run-first-draft-pending",{pendingCount:c.length,pendingSectionIds:c.slice(0,12)}));{let a=!1;for(let d of c){let c=aY.supervisedActors(a3.authority.actorId).find(a=>{if(b&&a.actorId!==b)return!1;let c=a.definition.assignmentBinding?.purpose;return"writing"===c&&Array.isArray(a.definition.sectionIds)&&a.definition.sectionIds.map(String).includes(d)});if(!c)continue;let e=aY.actor(c.actorId)?.checkpoint?.status;if("paused"!==e&&"blocked"!==e)continue;let f=aC.get(d)??0;if(f>=2){let b=(0,H.Pp)(aY,d);b&&"blocked"!==b.phase&&(aK.add(d),(0,H.ey)({store:aY,sectionId:d,responsibilityId:c.actorId,phase:"blocked",snapshot:b.snapshot,resumeFrom:"drafting",trigger:"first-draft-revive-exhausted",dependencyKeys:[],reason:"本节首版在两次事实唤醒后仍无生效单元(作者停滞);检查点与已写内容保留,交付门禁按缺节阻断"}),a4("construction-run-first-draft-blocked",{sectionId:d,actorId:c.actorId,attempts:f}),a=!0);continue}aC.set(d,f+1),aY.enqueueActorContinuation(c.actorId,`revive:${d}:${aR(c.actorId)}`,"本节首版仍缺生效单元:按上一轮具体写前拒绝原因修正后重写;不要重复读取同一页或原样重提"),a4("construction-run-first-draft-revive",{sectionId:d,actorId:c.actorId,attempt:f+1}),a=!0}if(a)return!0}return!1}void 0===b&&(aB=!0);let d=aY.supervisedActors(a3.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)}),e=!1,f=Math.max(1,Math.floor(_.N6.reviewSections??4)),g=[];for(let a of d){let b=Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[];if(b.length)for(let c of b)g.push({actor:a,actorSections:b,sectionId:c})}let h=0,i=async()=>{for(;;){let b=h;if(h+=1,b>=g.length)return;let c=g[b],{actor:d,actorSections:f,sectionId:i}=c;try{let b=await (0,z.H_)({store:aY,contract:a.contract,project:a.project,responsibilityId:d.actorId,sectionId:i,authoritySectionIds:f,...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}:{},...an.current?{executionBaseline:an.current}:{},projectRoot:a.projectRoot,caller:au,diagnostics:a$,artifactDir:aM,runId:a.runId,...a.signal?{signal:a.signal}:{},...a3.sourceCoverageLock?{sourceCoverageLock:a3.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&&(e=!0),a4("construction-run-section-review",{actorId:d.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&&a4("construction-run-section-review-skipped",{actorId:d.actorId,sectionId:i,reason:b.reason,...b.planGaps?.length?{planGaps:b.planGaps}:{}});let c=(0,z.OL)({store:aY,contract:a.contract,project:a.project,responsibilityId:d.actorId,sectionId:i,authoritySectionIds:f,...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}:{},...an.current?{executionBaseline:an.current}:{},lock:!0,lockActorId:w.P6,lockedBy:"mechanical-closure"});c.wroteLock&&c.lock&&(e=!0,a4("construction-run-section-locked",{actorId:d.actorId,sectionId:i,sectionPlanHash:c.sectionPlanHash,unitCount:c.lock.unitVersions.length,reviewApplied:c.lock.review.applied}));let g=c.openFindingIds.length;if(c.contractPassed&&0===c.unreviewedUnitIds.length&&g>0){let b=(0,w.Fu)([(0,B.rz)(aY,i).map(a=>[a.entityId,aY.entity(a.entityId)?.value??null]),c.openFindingIds.map(a=>{let b=aY.issue(a);return b?[b.title,b.detail,b.evidence.filter(a=>!a.startsWith("review-invocation:"))]:null})]),f=aL.get(i)??new Set,g=f.has(b);if(f.add(b),aL.set(i,f),!aK.has(i)&&g){aK.add(i),e=!0;let f=(0,H.Pp)(aY,i);f&&(0,H.ey)({store:aY,sectionId:i,responsibilityId:d.actorId,phase:"blocked",snapshot:f.snapshot,resumeFrom:"reviewing",trigger:"runtime-review-state-repeated",dependencyKeys:[b],reason:"当前正文和未关闭审查动作重复出现,未取得新的处理依据"});let g=(0,H.Pp)(aY,i);g&&(0,y.mr)({actorId:d.actorId,goal:"",documentId:a.documentId,baseDir:aN,sectionId:i,state:g.phase,key:g.boundaryKey,reason:g.reason??""}),a4("construction-run-section-blocked",{actorId:d.actorId,sectionId:i,findingIssueIds:c.openFindingIds,stateFingerprint:b})}else aK.has(i)||g||(e=!0)}else 0===g&&(aL.delete(i),aK.delete(i)&&(e=!0,a4("construction-run-section-unblocked",{actorId:d.actorId,sectionId:i})))}catch(a){a4("construction-run-section-closure-failed",{actorId:c.actor.actorId,sectionId:c.sectionId,error:a instanceof Error?a.message:String(a)})}}};if(await Promise.all(Array.from({length:Math.min(f,g.length)},()=>i())),void 0===b){for(let a of d){let b=aY.actor(a.actorId)?.checkpoint?.status;b&&"completed"!==b&&"running"!==b&&aY.enqueueActorContinuation(a.actorId,`closure:${aR(a.actorId)}`,"节收口产生新的实际状态,继续处理本职责剩余章节")}for(let a of aY.supervisedActors(a3.authority.actorId)){let b=a.definition.assignmentBinding?.purpose;if("writing"===b)continue;let c=aY.actor(a.actorId)?.checkpoint;if(!c||"paused"!==c.status&&"blocked"!==c.status)continue;let d=aD.get(a.actorId)??0;d>=2||(aD.set(a.actorId,d+1),aY.enqueueActorContinuation(a.actorId,`revive-actor:${a.actorId}:${c.decodedSha256??c.status}`,"本职责已暂停:按检查点核验已提交成果并完成收口;不要重复同一失败动作"),a4("construction-run-actor-revive",{actorId:a.actorId,purpose:b,attempt:d+1}),e=!0)}}return e},bk={generatedDir:(0,aa.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},bl=(b=!1,c="generating")=>{if(!h?.owns())return a4("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=aY.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,M.iC)(a);c&&b.push({entityId:a.id,entityVersion:a.version,entityHash:(0,w.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,O.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,w.Fu)(JSON.parse(JSON.stringify([h,g,b])));if(al.has(i))return al.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 al.size>=512&&al.delete(al.keys().next().value),al.set(i,d),d}catch{al.size>=512&&al.delete(al.keys().next().value),al.set(i,void 0);return}}:void 0;return{...(0,N.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:aY,contract:a.contract,outputPlacements:(0,e.rL)(a.tenderResponsePlan),originalFormRenderer:(0,e.iP)(a.tenderResponsePlan),...f.size?{sectionPlans:f}:{},...aJ?{scopeSectionIds:aJ}:{},figureRender:bk,...a8&&an.current?{executionBaseline:an.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,Z.ip)(a.documentId,{baseDir:aN}).stages,k=[aY.actor(a3.authority.actorId),...aY.supervisedActors(a3.authority.actorId)].filter(a=>void 0!==a),l=aI.map(a=>{let b=(0,H.Pp)(aY,a);return{sectionId:a,blocked:aK.has(a),phase:b?.phase??"planned",boundaryKey:b?.boundaryKey??null,reason:b?.reason??null,lock:(0,B.l9)(aY,a)?.entity.version??null}}),m=[];for(let a;;){let b=aY.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,w.Fu)(JSON.parse(JSON.stringify([g.markdown,n,c]))),p=aY.latestEvent(),q=p?{workspaceId:aY.workspaceId,eventSequence:p.sequence,eventId:p.id}:void 0,r=Date.now(),s=a2(),t={templateId:a.contract.id,templateName:a.title,title:a.title,requirement:a.requirement,...a.bidComposition?{bidComposition:a.bidComposition,exportSettings:(0,ak.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:af.enforcement,where:d.where,message:aF(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:ai.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||a4("construction-progress-stale",{runId:a.runId,reason:"not-published",lastSuccess:h.state().lastSuccess??null,composedUnits:g.unitCount,markdownChars:g.markdown.length}),u};bg=bl,aU=()=>{be=!0},aV=()=>{be&&(bf||(bf=!0,Promise.resolve().then(()=>{try{if(be)try{bl()&&(be=!1)}catch(a){a4("construction-progress-build-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}}finally{bf=!1}})))},bh=()=>{try{bl(!0,"paused")}catch(a){a4("construction-progress-stop-save-failed",{error:a instanceof Error?a.message:String(a),lastSuccess:h?.state().lastSuccess??null})}},a.signal?.addEventListener("abort",bh,{once:!0});let bm=()=>{let a=0;for(let b of aY.supervisedActors(a3.authority.actorId))a+=b.revision;return a+(aY.actor(a3.authority.actorId)?.revision??0)},bn=()=>{if(aB)return;let a=a5();if(!a.length)return;let b=aY.supervisedActors(a3.authority.actorId).filter(a=>a.definition.assignmentBinding?.purpose==="writing"&&!aY.actor(a.actorId)?.checkpoint).map(a=>a.actorId);if(b.length&&!(X<6))return{reason:`首版阶段 ${b.length} 条写作职责 0 回合、${a.length} 节未写:调度未推进,停止继续空转`,idleActorIds:b,pendingSectionIds:a}},bo=!1,bp=[],bq=async()=>{if(a.structurePlan&&a.sectionPlans&&a.planningContext)try{let b=aY.supervisedActors(a3.authority.actorId).filter(a=>a.definition.assignmentBinding?.purpose==="writing");if(a.earlyDrafts)for(let c of b){let b=aZ.responsibility.get(c.actorId);if(b)try{await a.earlyDrafts.adopt(b)}catch(a){a4("construction-run-early-draft-adopt-failed",{actorId:c.actorId,error:a instanceof Error?a.message:String(a)})}}let c=await x({actors:b.map(a=>({actorId:a.actorId,sectionIds:Array.isArray(a.definition.sectionIds)?a.definition.sectionIds.map(String):[]})),responsibility:a=>aZ.responsibility.get(a),toolsOf:a=>(0,v.F)({...a,excludeTools:(a.excludeTools??[]).filter(a=>"plan_section"!==a)}),concurrency:Math.max(1,Math.floor(_.N6.llmRequests??8)),...a.signal?{signal:a.signal}:{},blocked:()=>aG("plan-lane"),onSection:a=>a4("construction-run-plan-lane-section",a)});bp.push(...c.failures);let d=l?void 0:bp.find(a=>(0,s.zc)(a.reason));d&&(l=d.reason,a4("construction-run-provider-unavailable",{actorId:d.actorId,reason:d.reason,stage:d.stage})),a4("construction-run-plan-lane",{sections:c.sections,planned:c.planned,failed:bp.length,concurrency:c.concurrency,elapsedMs:c.elapsedMs}),bp.length&&a4("construction-run-plan-lane-failed",{failureCount:bp.length,failures:bp.slice(0,12)});try{(0,ah.tv)(aM,"construction-plan-lane.json",{runId:a.runId,at:new Date().toISOString(),sections:c.sections,planned:c.planned,failures:bp},a.runId)}catch{}try{aV()}catch{}}catch(a){a4("construction-run-plan-lane-error",{error:a instanceof Error?a.message:String(a),failures:bp.slice(0,12)})}},br=()=>{if(!l)return!1;b=`模型服务账户/配额不可用,运行暂停:${l}`,a4("construction-run-provider-paused",{reason:l});try{bl(!0,"paused")}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}return!0},bs=()=>{let a=Math.max(1,Number(_.pl?.anomaly?.sectionCallsWithoutUnits??10)),b=new Map;for(let a of a$.llm.callLog??[]){let c=a.sectionId??a0(a.actorId);c&&b.set(c,(b.get(c)??0)+1)}for(let[c,d]of b)if(!(d<a||aK.has(c))&&!((0,B.rz)(aY,c).length>0))return{sectionId:c,calls:d}};for(;;){let e;if(aG("chief-round")){b=aF(d);try{bl()}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let g=bn();if(g){b=g.reason,a4("construction-run-first-draft-starvation",g);try{bl(!0,"paused")}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let h=bs();if(h){b=`单节调用异常:${h.sectionId} 已 ${h.calls} 次模型调用仍无生效单元;整轮暂停并保留已写正文与检查点`,a4("construction-run-section-anomaly",h);try{bl(!0,"paused")}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}let i=bm();az=!1,bc();let j=!1;try{e=await (0,m.p)({...a3,coordination:aZ,diagnostics:a$,resumeCompleted:ac})}catch(a){if(!(a instanceof q.a)&&!(0,s.UM)(a))throw a;j=(0,s.UM)(a),(0,s.UM)(a)&&(0,s.zc)(a.receipt.reason)&&!l&&(l=a.receipt.reason,a4("construction-run-provider-unavailable",{actorId:a3.authority.actorId,reason:a.receipt.reason,stage:"chief"})),b=a.message,a4("construction-run-chief-blocked",{round:V+1,reason:a.message,...(0,s.UM)(a)?{transportReceipt:a.receipt}:{}}),e=void 0}if(aV(),!e){let e=aS();if(a.planningContext||a.tenderResponsePlan){let a=a6(),c=ae(a,a7&&!!(a8&&an.current));if(aT=c.passed?void 0:"planning-gate-blocked(主控暂停分支:规划闸门未通过,写作事件不投递)",!c.passed){if(as=!1,(ao+=1)>=ar){b=`规划闸门连续失败 ${ao} 轮(运行保护上限 ${ar}):`+c.issues.slice(0,6).map(a=>a.detail).join(";"),a4("construction-run-planning-gate-blocked",{round:V,issues:c.issues,guard:"gate-max-rounds"});break}a4("construction-run-planning-gate-deferred",{stage:"chief-stalled",issues:c.issues})}}if(await a_(),aV(),br())break;if(d){b=aF(d);try{bl()}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}az=await bj();try{bl()}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(a7&&(an.current||ba().ready)&&(await bb(),f)){b=`执行基准编制失败:${f}`,a4("construction-run-execution-baseline-blocked",{reason:b});break}let g=aS();if(!j&&an.current&&g!==e){c="执行基准已由工作区工作包/原量分配编制完成。现在可以委派 purpose=writing 的职责;写作职责会按节拿到本节工作包/成员与基准投影,不要另算日期或数量。",b=void 0;continue}aT&&a4("construction-run-planning-gate-blocked",{round:V,reason:aT,guard:"chief-paused-no-business-change"});break}if(V+=1,a4("construction-run-chief-round",{round:V,result:e.result??null,status:e.checkpoint?.status??null}),e.checkpoint?.status==="blocked"){b="主控自报阻塞";break}let k=!!(a.planningContext||a.tenderResponsePlan),n=k?ad():[],o=aY.actorWait(a3.authority.actorId)?.state==="waiting"||aY.actor(a3.authority.actorId)?.checkpoint?.status==="completed";if(k&&!an.current){if(bc(),await a_(),aV(),br())break;if(d){b=aF(d);try{bl()}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}}let p=k?a6():{packages:[],coveredSectionIds:[],missingSectionIds:[],missingAllocations:[],overAllocated:[]};if(!an.current&&o&&k&&ba().ready&&(await bb(),f)){b=`执行基准编制失败:${f}`,a4("construction-run-execution-baseline-blocked",{reason:b});break}if(a7&&o)try{(an.current||ba().ready)&&await bb(),await bd()}catch(a){b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`,a4("construction-run-execution-baseline-blocked",{reason:b});break}if(k&&(n.length>0||o)){let a=ae(p,a7&&(!!o||!!(a8&&an.current)));if(a4("construction-run-planning-gate",{round:V,passed:a.passed,checks:a.checks,issues:a.issues}),!a.passed){if(as=!1,aT="planning-gate-blocked(规划闸门未通过,写作事件不投递)",(ao+=1)>=ar){b=`规划闸门连续失败 ${ao} 轮(运行保护上限 ${ar}):`+a.issues.slice(0,6).map(a=>a.detail).join(";"),a4("construction-run-planning-gate-blocked",{round:V,issues:a.issues,guard:"gate-max-rounds"});break}let d=a.issues.map(a=>`${a.kind}:${a.sectionId??""}`).join("|")||"unknown";if(d===aj?am+=1:(aj=d,am=1),am>=2){b=`规划闸门未通过:${a.issues.slice(0,6).map(a=>a.detail).join(";")}`,a4("construction-run-planning-gate-blocked",{round:V,issues:a.issues});break}c=`【规划闸门\xb7实际缺口】以下承接关系尚未成立(程序按实际角色定义核对,不是转述):
|
|
5
5
|
${a.feedback.join("\n")}
|
|
6
|
-
请补齐承接:可以委派/修订职责、调整章节归属或增加具备相应工具面的职责;具体谁做、按什么顺序做由你决定。如果某项确属不适用,请在职责目标与成果要求里写明理由,而不是静默不派。`,a2("construction-run-planning-gate-deferred",{round:V,issues:a.issues});continue}am=0,ao=0,aj="",as=!0,aR=void 0}if(j||(as=!0),await aS(),aU(),bo())break;if(d){b=aD(d);try{bi()}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}aA=await a7();try{bi()}catch(a){a2("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(aX.actorWait(a1.authority.actorId)?.state==="waiting"||aX.actor(a1.authority.actorId)?.checkpoint?.status==="completed"){let a=aX.supervisedActors(a1.authority.actorId);if(a.every(a=>aX.actor(a.actorId)?.checkpoint?.status==="completed")||!aA&&!a.some(a=>aX.actorEventFailure(a.actorId)))break}if(bj()===h&&0===ay&&!aA){a2("construction-run-no-change",{chiefRounds:V,drains:X});break}}try{a5&&an.current&&await a9(),await bb()}catch(a){b||(b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`)}let bp=()=>{if(!a.sectionPlans?.size)return[];let b=aI?new Set(aI):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,B.rz)(aX,b.id).map(a=>a.subsectionId).filter(a=>!!a)),e=c.subsections.filter(a=>!d.has(a.subsectionId));if(!e.length)return[];let f=aX.supervisedActors(a1.authority.actorId).find(a=>Array.isArray(a.definition.sectionIds)&&a.definition.sectionIds.includes(b.id));return f?[{section:b,missing:e,owner:f}]:[]})},bq=bp();if(bq.length&&!d&&!a.signal?.aborted&&!b){for(let a of bq)aX.enqueueActorContinuation(a.owner.actorId,`completion-gap:${a.section.id}:${(0,w.Fu)(a.missing.map(a=>a.subsectionId))}`,`计划小节未写:${a.missing.slice(0,8).map(a=>a.title).join("、")};只补这些小节,使用已有 facts/evidence,补完再 finalize_section;不得删除或重写已生效小节。`);if(a2("construction-completion-gap-sweep",{sections:bq.map(a=>({sectionId:a.section.id,missing:a.missing.map(a=>a.title),actorId:a.owner.actorId}))}),await aS(),(bq=bp()).length&&!d&&!a.signal?.aborted&&!b){for(let a of bq)aX.enqueueActorContinuation(a.owner.actorId,`completion-fallback:${a.section.id}:${(0,w.Fu)(a.missing.map(a=>a.subsectionId))}`,`【程序兜底写作轮】以下计划小节仍没有实际单元:${a.missing.map(a=>`${a.title}(${a.subsectionId})`).join("、")}。按小节逐个 write_subsection:每个小节至少一个可渲染段落/表,使用已有 facts/evidence;先写最小可审查内容,再补引用与岗位,不要重写已生效小节。确实无法完成的小节,在回执中写明缺什么证据/决定,不得用“已覆盖/详见前文”代替正文。`);a2("construction-completion-gap-fallback",{sections:bq.map(a=>({sectionId:a.section.id,missing:a.missing.map(a=>a.subsectionId),actorId:a.owner.actorId}))}),await aS(),bq=bp()}}let br=aX.supervisedActors(a1.authority.actorId),bs=a=>String(a.definition.assignmentBinding?.purpose??""),bt=new Set(["source-check","method-decision","production-calculation"]),bu=br.filter(a=>bt.has(bs(a))),bv=br.filter(a=>!bt.has(bs(a))),bw=bv.length?bv:br,bx=b=>b.filter(a=>{let b=aX.actor(a.actorId);return!b?.checkpoint||"completed"!==b.checkpoint.status&&!b.leaseToken}).map(b=>{let c=aX.actor(b.actorId);return{actorId:b.actorId,reason:aX.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)(aL,"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)}}),by=bx(bw),bz=bx(bu),bA=aZ.llm.callLog??[],bB=aw(bA),bC=()=>(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,M.iC)(a);if(!b)continue;let c=a.value??{};d.push({entityId:a.id,entityVersion:a.version,entityHash:(0,w.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,w.Fu)(a),unitId:b.id})}if(!c.nextAfterId)break;b=c.nextAfterId}let g=a.figureRender?(0,O.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,N.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,J.N7)(a.store,b):b)),void 0===b.nextAfterSequence)break;c=b.nextAfterSequence}let p=(0,A.IQ)(a.bidComposition,a.bidCompositionSources),q=(0,A.T9)(a.store,p,a.tenderResponsePlan),r=(0,A.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,A.O0)(a.store,b.value),current:(0,A.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,H.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,B.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}`:":当前节尚未按新协议完成收口"}`}]:[]}),x=a.planningContext?(0,G.planningApplicabilityGaps)(a.planningContext):[],y=new Set(x.map(a=>(0,w.Fu)(a))),z=[...new Map([...a.tenderResponsePlan?.applicabilityGaps??[],...x].map(a=>[a.obligationId+":"+a.reason,a])).values()],C=d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))),T=(0,E.$H)(l.markdown,l.deliveryPlacements,{outputPlacements:k,units:C});for(let b of(T.valid||z.push({obligationId:"delivery-placement",kind:"output",reason:T.issues.join(";")}),a.planningContext?.outputObligations??[])){if("tender-required"!==b.kind||!(0,F.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){z.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)&&z.push({obligationId:b.id,kind:"output",reason:"必交输出尚未实际装配到已核位置,不能凭标题或规划认定完成"})}let U=(0,D.b)({contract:a.contract,plan:a.tenderResponsePlan,units:d,composition:l,figureAssets:m,figureStyle:a.figureRender,assessments:(0,A.S2)(a.store),reviewStore:a.store,expectedBidCompositionHash:p,scopeSectionIds:a.scopeSectionIds});for(let a of U.filter(a=>"met"!==a.status))z.push({obligationId:a.obligationId||a.outputId,kind:"output",reason:a.checks.filter(a=>"met"!==a.status).map(a=>a.reason).join(";")});let V=z.filter(a=>y.has((0,w.Fu)(a))),W=z.filter(a=>!y.has((0,w.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(J.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(J.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,K._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:L.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=C.filter(a=>"figure"===a.unit.kind).flatMap(a=>[a.unit.caption??"",...(a.unit.nodes??[]).map(a=>a.label)]).join("\n"),Z=(0,P.Vl)(`${l.markdown}
|
|
7
|
-
${Y}`,a.bidComposition?.identityMarksForbidden),$=(0,Q.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,I.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,R.XI)(a.planningContext);for(let e of(0,R.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,S.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,S.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:aX,contract:a.contract,projectSnapshotId:a.project.snapshotId,tenderResponsePlan:a.tenderResponsePlan,planningContext:a.planningContext,...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},modelIdentity:bB,figureRender:bh,inspectBodyContent:ax,...a6&&an.current?{executionBaseline:an.current}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},..."unmeasured"!==bB?{authorModelHash:(0,j.createHash)("sha256").update(bB).digest("hex")}:{},...aI?{scopeSectionIds:aI}:{}}),bD=bC(),bE=[];if(a.jsonCaller&&0===by.length&&as&&0===bq.length&&!bD.issues.some(a=>"section-unwritten"===a.code))try{let b=bD.chapters.map(a=>({id:a.id,title:a.title,content:a.content})),c=a.structurePlan?(0,T.F_)(a.structurePlan).map(({section:a,chapter:b})=>{let c=(0,B.rz)(aX,a.sectionId).map(a=>{let b=(0,M.iC)(aX.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 ap({runId:a.runId,artifactDir:aL,chapters:b,sections:c,caller:a.jsonCaller,diagnostics:aZ,signal:a.signal});bE=d.findings,d.calls&&a2("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,B.rz)(aX,e),i=h.flatMap(a=>{let b=(0,M.iC)(aX.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=aX.entity([...j.keys()][0]),l=String(k?.value?.responsibilityId??"");if(!l){b.push({sectionId:e,reason:"写作单元缺少职责身份"});continue}try{let g=(0,aq.y)({store:aX,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}:{},...a6&&an.current?{executionBaseline:an.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,B.rz)(aX,b)[0]?.entityId,e=String(aX.entity(d??"")?.value?.responsibilityId??"");c&&e&&(0,H.ey)({store:aX,sectionId:b,responsibilityId:e,phase:"closed-with-items",trigger:"final-document-review-revision",reason:"整稿终审定向修订后正文已变更;未重新送节级复审,按未决项收口",snapshot:{structurePlanHash:a.structurePlan?.planHash,sectionPlanHash:c.sectionPlanHash,unitVersions:(0,B.rz)(aX,b).map(a=>({entityId:a.entityId,version:a.version})),unreviewedUnitIds:[],sourceReviewComplete:!0,blockingFindingIds:(0,J.bF)(aX,(0,B.rz)(aX,b).map(a=>a.entityId)).filter(J.S0).map(a=>a.id)}})}bD=bC(),a2("construction-final-document-revision",{appliedSections:c,appliedUnits:d,refused:b,reFinalized:!0})}else a2("construction-final-document-revision",{appliedSections:[],appliedUnits:[],refused:b})}}catch(a){a2("construction-final-document-review-failed",{error:a instanceof Error?a.message:String(a)})}let bF=a.tenderResponsePlan?(0,U.sV)({plan:aI?{...a.tenderResponsePlan,sections:a.tenderResponsePlan.sections.filter(a=>aI.includes(a.sectionId))}:a.tenderResponsePlan,contract:a.contract,markdown:bD.markdown,outputIdsBySection:bD.outputIdsBySection}):void 0;bF&&(0,ah.tv)(aL,"tender-response-audit.json",bF,a.runId);let bG=a6?an.current:void 0,bH=bG?[...(0,W._D)(bD.markdown,bG),...(0,W.Pu)(bD.markdown,bG),...(0,W.ke)(bD.markdown,bG),...(0,W.mM)(bD.markdown,bG)]:[];bG&&(0,ah.tv)(aL,"execution-baseline-audit.json",{runId:a.runId,baselineHash:(0,w.Fu)((0,W.PI)(bG)),issues:bH},a.runId);let bI=(0,Y.M)(bD.markdown);(0,ah.tv)(aL,"language-quality-audit.json",{runId:a.runId,issues:bI},a.runId);let bJ=(0,Z.ip)(a.documentId,{baseDir:aM}).stages,bK=(0,L.pT)(bD.receipt),bL=(0,L.R3)(bD.receipt),bM=bw.length>0&&bw.every(a=>aX.actor(a.actorId)?.checkpoint?.status==="completed"),bN=bD.issues.filter(a=>"section-unwritten"===a.code).length,bO=a_(),bP=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}}}(bA.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:af,sectionCount:bO.sections.length}),bQ={usage:bO,audit:bP,reviewCalls:bO.run.reviewCalls??0,...void 0===bO.run.reviewInputTokens?{}:{reviewInputTokens:bO.run.reviewInputTokens},thinkCalls:bO.run.thinkCalls??0,...void 0===bO.run.thinkInputTokens?{}:{thinkInputTokens:bO.run.thinkInputTokens},unknownUsageCalls:bO.run.unknownUsageCalls,...bO.run.reviewUnknownUsageCalls?{reviewUnknownUsageCalls:bO.run.reviewUnknownUsageCalls}:{},...bO.run.thinkUnknownUsageCalls?{thinkUnknownUsageCalls:bO.run.thinkUnknownUsageCalls}:{}},bR=(0,z.eW)({store:aX,project:a.project,contract:a.contract}),bS={},bT=[];for(let a of["construction",""]){let b=i().join(aL,a,"write-check-failures.jsonl");try{if(!g().existsSync(b))continue;for(let a of(bT.push(b),g().readFileSync(b,"utf8").split("\n")))if(a.trim())try{for(let b of JSON.parse(a).blocking??[])b.code&&(bS[b.code]=(bS[b.code]??0)+1)}catch{}}catch{}}let bU={runId:a.runId,generatedAt:new Date().toISOString(),...bR,writeCheckFailureCounts:bS,writeCheckFailureTotal:Object.values(bS).reduce((a,b)=>a+b,0),notMetSections:bR.perSection.filter(a=>"blocked"===a.phase||"closed-with-items"===a.phase).map(a=>({sectionId:a.sectionId,phase:a.phase,reason:a.reason??"未记录原因"}))};(0,ah.tv)(aL,"run-source-review-readings.json",bU,a.runId);let bV=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"]),bW=!bD.issues.some(a=>bV.has(a.code)||/^(?:delivery-placement|original-form|original-figure)/u.test(a.code)),bX=0===bD.identityIssues.length,bY=0===bD.bodyPolicyIssues.length,bZ=0===bD.sectionStateIssues.length,b$=!!bG&&0===bH.length,b_=!bI.some(a=>"blocker"===a.severity),b0=as&&bK&&bM&&0===by.length&&0===bN&&bW&&bX&&bY&&bZ&&b$&&b_,b1={planningGate:as,receiptReady:bK,qualityReady:bL,responsibilitiesComplete:bM,waiting:by.length,missingSections:bN,compositionValid:bW,identityMarksValid:bX,bodyPolicyValid:bY,sectionStates:bZ,executionBaseline:b$,languageQuality:b_},b2=[...b?[{level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`主控本轮未继续推进:${b}`}]:[],...bD.identityIssues,...bD.bodyPolicyIssues,...bD.sectionStateIssues,...bD.issues.map(a=>({level:"error",severity:bV.has(a.code)?"blocker":"warning",category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}})),...bD.applicabilityIssues,...bD.applicabilityWarnings,...bF?.issues.map(a=>({level:"error",severity:a.severity,category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}}))??[],...bH.map(a=>({level:"error",severity:"blocker",category:"structure",owner:"system",message:`执行基准不一致:${a.message}${a.evidence?`(${a.evidence})`:""}`})),...bI.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} 行)`:""}`})),...bD.receipt.score.qualityGaps.map(a=>({level:"error",severity:"warning",category:"professional_chain",owner:"system",message:`专业档位不足:${a.criterionId};${a.reason}`})),...as?[]:[{level:"error",severity:"blocker",category:"structure",owner:"system",message:`规划闸门未通过${b?`:${b}`:":章节/义务/输出/基准承接不完整"}`}]],b3=[];for(let a of bD.receipt.findings.filter(a=>"met"!==a.status))b3.push({key:(0,w.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 bD.receipt.score.qualityGaps)b3.push({key:(0,w.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 b2)b3.push({key:(0,w.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,H.Pp)(aX,b.id);a?.phase==="closed-with-items"&&b3.push({key:(0,w.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 bE)b3.push({key:(0,w.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 b4=[...new Map(b3.map(a=>[a.key,a])).values()].sort((a,b)=>a.severity===b.severity?a.message.localeCompare(b.message):"blocker"===a.severity?-1:1),b5={total:b4.length,blocker:b4.filter(a=>"blocker"===a.severity).length,warning:b4.filter(a=>"warning"===a.severity).length};(0,ah.tv)(aL,"run-issue-ledger.json",{version:"run-issue-ledger-v1",runId:a.runId,documentId:a.documentId,documentHash:bD.receipt.documentHash,counts:b5,entries:b4},a.runId),a2("construction-run-issue-ledger",b5),at({artifactDir:aL,runId:a.runId,onReceipt:a2});let b6=a.deliveryAssets?(()=>{let b=(0,ag.vx)(aX,a.project,{documentHash:bD.receipt.documentHash}),c=(b,c)=>(0,ah.tv)(aL,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",bD.receipt),c("document-delivery-placements.json",{runId:a.runId,documentId:a.documentId,workspaceId:aX.workspaceId,planningContextHash:a.planningContext?(0,w.Fu)(a.planningContext):null,documentHash:bD.documentHash,placements:bD.deliveryPlacements}),c("construction-source-coverage.json",b),a2("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;b6?.message&&b2.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:b6.message}),b6&&(b0=b0&&b6.passed,b1={...b1,sourceCoverage:b6.passed});let b7=[...bF?.issues.filter(a=>"blocker"===a.severity)??[],...bD.applicabilityIssues];b0=b0&&0===b7.length,b1={...b1,tenderResponse:{passed:0===b7.length,...b7.length?{message:`${b7.length} 项招标响应或适用性问题尚未解决:${b7.slice(0,3).map(a=>a.message).join(";")}`}:{}}};let b8=a0(),b9=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,ak.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,C.c6)(c.markdown),deliveryFingerprint:(0,C.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,S.Kf)(b.bidComposition)?[{key:"bid-body-content",label:"正文图表及封面机械核验",passed:a.delivery.bodyPolicyValid,message:"只核实际正文语法与已验身图件;不凭标题授附表资格,不代表专业适用通过"}]:[],...a.sourceCompleteness?[a.sourceCompleteness]:[]]},reviewMetadata:{workflowVersion:ai.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=av({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:ai.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:bD,stages:bJ,issues:b2,deliveryReady:b0,delivery:b1,waiting:by,advisoryWaiting:bz,...aJ.size?{blockedSections:[...aJ].sort()}:{},responsibilities:{total:bw.length,completed:bw.filter(a=>aX.actor(a.actorId)?.checkpoint?.status==="completed").length},...aI?{scopeSectionIds:aI}:{},executionBaselineRef:an,...b8?{sectionProgress:b8}:{},...d?{budgetPause:{enforcement:af.enforcement,where:d.where,message:aD(d),violations:d.violations}}:{},...b6?{sourceCompleteness:b6}:{},...b?{chiefBlocked:b}:{}});b9.assets=(b=>{if(!b.figureAssets.length)return[];let c=(0,w.Fu)(b.figureAssets),d=(0,w.Fu)([b.documentHash,c]),e=(0,ah.tv)(aL,`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:aX.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"}]})(bD),b9.createdAt=h.createdAt;let ca=aX.latestEvent();if(!h.publish(b9,(0,w.Fu)(JSON.parse(JSON.stringify([b9.markdown,b9.status,b9.reviewMetadata]))),!0,ca?{workspaceId:aX.workspaceId,eventSequence:ca.sequence,eventId:ca.id}:void 0))throw Error("CONSTRUCTION_RUN_SUPERSEDED:较新运行或文档修订已接管记录,旧运行不得覆盖");return bg=!0,aZ.quality={...aZ.quality,blockingCount:b2.filter(a=>"blocker"===a.severity).length,importantCount:b2.filter(a=>"warning"===a.severity).length,minorCount:b2.length,repairedCount:0},{record:b9,diagnostics:aZ,rounds:{chief:V,drains:X,responsibilities:br.length},waiting:by,budget:af,budgetReport:bQ,...b?{chiefBlocked:b}:{}}}catch(b){if(!bg)try{be(!0,a.signal?.aborted?"paused":"failed")}catch(a){a2("construction-progress-stop-save-failed",{error:String(a),lastSuccess:h?.state().lastSuccess??null})}throw b}finally{a.signal?.removeEventListener("abort",bf),aT=()=>{},h?.close(),aW.unbindSectionContracts?.(),aX.close()}}function av(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 aw(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 ax(a){return i().join((0,aa.Gl)(a),"construction")}}};
|
|
6
|
+
请补齐承接:可以委派/修订职责、调整章节归属或增加具备相应工具面的职责;具体谁做、按什么顺序做由你决定。如果某项确属不适用,请在职责目标与成果要求里写明理由,而不是静默不派。`,a4("construction-run-planning-gate-deferred",{round:V,issues:a.issues});continue}am=0,ao=0,aj="",as=!0,aT=void 0}if(k||(as=!0),await a_(),aV(),br())break;if(d){b=aF(d);try{bl()}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}break}az=await bj();try{bl()}catch(a){a4("construction-run-progress-save-failed",{error:a instanceof Error?a.message:String(a)})}if(aY.actorWait(a3.authority.actorId)?.state==="waiting"||aY.actor(a3.authority.actorId)?.checkpoint?.status==="completed"){let a=aY.supervisedActors(a3.authority.actorId);if(a.every(a=>aY.actor(a.actorId)?.checkpoint?.status==="completed")||!az&&!a.some(a=>aY.actorEventFailure(a.actorId)))break}if(bm()===i&&0===ax&&!az){a4("construction-run-no-change",{chiefRounds:V,drains:X});break}}try{a7&&an.current&&await bb(),await bd()}catch(a){b||(b=`执行基准编制失败:${a instanceof Error?a.message:String(a)}`)}let bt=()=>{if(!a.sectionPlans?.size)return[];let b=aJ?new Set(aJ):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,B.rz)(aY,b.id).map(a=>a.subsectionId).filter(a=>!!a)),e=c.subsections.filter(a=>!d.has(a.subsectionId));if(!e.length)return[];let f=aY.supervisedActors(a3.authority.actorId).find(a=>Array.isArray(a.definition.sectionIds)&&a.definition.sectionIds.includes(b.id));return f?[{section:b,missing:e,owner:f}]:[]})},bu=bt();if(bu.length&&!d&&!a.signal?.aborted&&!b){for(let a of bu)aY.enqueueActorContinuation(a.owner.actorId,`completion-gap:${a.section.id}:${(0,w.Fu)(a.missing.map(a=>a.subsectionId))}`,`计划小节未写:${a.missing.slice(0,8).map(a=>a.title).join("、")};只补这些小节,使用已有 facts/evidence,补完再 finalize_section;不得删除或重写已生效小节。`);if(a4("construction-completion-gap-sweep",{sections:bu.map(a=>({sectionId:a.section.id,missing:a.missing.map(a=>a.title),actorId:a.owner.actorId}))}),await a_(),(bu=bt()).length&&!d&&!a.signal?.aborted&&!b){for(let a of bu)aY.enqueueActorContinuation(a.owner.actorId,`completion-fallback:${a.section.id}:${(0,w.Fu)(a.missing.map(a=>a.subsectionId))}`,`【程序兜底写作轮】以下计划小节仍没有实际单元:${a.missing.map(a=>`${a.title}(${a.subsectionId})`).join("、")}。按小节逐个 write_subsection:每个小节至少一个可渲染段落/表,使用已有 facts/evidence;先写最小可审查内容,再补引用与岗位,不要重写已生效小节。确实无法完成的小节,在回执中写明缺什么证据/决定,不得用“已覆盖/详见前文”代替正文。`);a4("construction-completion-gap-fallback",{sections:bu.map(a=>({sectionId:a.section.id,missing:a.missing.map(a=>a.subsectionId),actorId:a.owner.actorId}))}),await a_(),bu=bt()}}let bv=aY.supervisedActors(a3.authority.actorId),bw=a=>String(a.definition.assignmentBinding?.purpose??""),bx=new Set(["source-check","method-decision","production-calculation"]),by=bv.filter(a=>bx.has(bw(a))),bz=bv.filter(a=>!bx.has(bw(a))),bA=bz.length?bz:bv,bB=b=>b.filter(a=>{let b=aY.actor(a.actorId);return!b?.checkpoint||"completed"!==b.checkpoint.status&&!b.leaseToken}).map(b=>{let c=aY.actor(b.actorId);return{actorId:b.actorId,reason:aY.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)(aM,"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)}}),bC=bB(bA),bD=bB(by),bE=a$.llm.callLog??[],bF=aw(bE),bG=()=>(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,M.iC)(a);if(!b)continue;let c=a.value??{};d.push({entityId:a.id,entityVersion:a.version,entityHash:(0,w.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,w.Fu)(a),unitId:b.id})}if(!c.nextAfterId)break;b=c.nextAfterId}let g=a.figureRender?(0,O.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,N.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,J.N7)(a.store,b):b)),void 0===b.nextAfterSequence)break;c=b.nextAfterSequence}let p=(0,A.IQ)(a.bidComposition,a.bidCompositionSources),q=(0,A.T9)(a.store,p,a.tenderResponsePlan),r=(0,A.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,A.O0)(a.store,b.value),current:(0,A.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,H.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,B.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}`:":当前节尚未按新协议完成收口"}`}]:[]}),x=a.planningContext?(0,G.planningApplicabilityGaps)(a.planningContext):[],y=new Set(x.map(a=>(0,w.Fu)(a))),z=[...new Map([...a.tenderResponsePlan?.applicabilityGaps??[],...x].map(a=>[a.obligationId+":"+a.reason,a])).values()],C=d.filter(b=>!a.scopeSectionIds?.length||b.sectionIds.some(b=>a.scopeSectionIds.includes(b))),T=(0,E.$H)(l.markdown,l.deliveryPlacements,{outputPlacements:k,units:C});for(let b of(T.valid||z.push({obligationId:"delivery-placement",kind:"output",reason:T.issues.join(";")}),a.planningContext?.outputObligations??[])){if("tender-required"!==b.kind||!(0,F.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){z.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)&&z.push({obligationId:b.id,kind:"output",reason:"必交输出尚未实际装配到已核位置,不能凭标题或规划认定完成"})}let U=(0,D.b)({contract:a.contract,plan:a.tenderResponsePlan,units:d,composition:l,figureAssets:m,figureStyle:a.figureRender,assessments:(0,A.S2)(a.store),reviewStore:a.store,expectedBidCompositionHash:p,scopeSectionIds:a.scopeSectionIds});for(let a of U.filter(a=>"met"!==a.status))z.push({obligationId:a.obligationId||a.outputId,kind:"output",reason:a.checks.filter(a=>"met"!==a.status).map(a=>a.reason).join(";")});let V=z.filter(a=>y.has((0,w.Fu)(a))),W=z.filter(a=>!y.has((0,w.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(J.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(J.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,K._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:L.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=C.filter(a=>"figure"===a.unit.kind).flatMap(a=>[a.unit.caption??"",...(a.unit.nodes??[]).map(a=>a.label)]).join("\n"),Z=(0,P.Vl)(`${l.markdown}
|
|
7
|
+
${Y}`,a.bidComposition?.identityMarksForbidden),$=(0,Q.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,I.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,R.XI)(a.planningContext);for(let e of(0,R.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,S.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,S.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:aY,contract:a.contract,projectSnapshotId:a.project.snapshotId,tenderResponsePlan:a.tenderResponsePlan,planningContext:a.planningContext,...a.sectionPlans?{sectionPlans:a.sectionPlans}:{},modelIdentity:bF,figureRender:bk,inspectBodyContent:ay,...a8&&an.current?{executionBaseline:an.current}:{},...a.bidComposition?{bidComposition:a.bidComposition,bidCompositionSources:a.bidCompositionSources}:{},..."unmeasured"!==bF?{authorModelHash:(0,j.createHash)("sha256").update(bF).digest("hex")}:{},...aJ?{scopeSectionIds:aJ}:{}}),bH=bG(),bI=[];if(a.jsonCaller&&0===bC.length&&as&&0===bu.length&&!bH.issues.some(a=>"section-unwritten"===a.code))try{let b=bH.chapters.map(a=>({id:a.id,title:a.title,content:a.content})),c=a.structurePlan?(0,T.F_)(a.structurePlan).map(({section:a,chapter:b})=>{let c=(0,B.rz)(aY,a.sectionId).map(a=>{let b=(0,M.iC)(aY.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 ap({runId:a.runId,artifactDir:aM,chapters:b,sections:c,caller:a.jsonCaller,diagnostics:a$,signal:a.signal});bI=d.findings,d.calls&&a4("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,B.rz)(aY,e),i=h.flatMap(a=>{let b=(0,M.iC)(aY.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=aY.entity([...j.keys()][0]),l=String(k?.value?.responsibilityId??"");if(!l){b.push({sectionId:e,reason:"写作单元缺少职责身份"});continue}try{let g=(0,aq.y)({store:aY,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}:{},...a8&&an.current?{executionBaseline:an.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,B.rz)(aY,b)[0]?.entityId,e=String(aY.entity(d??"")?.value?.responsibilityId??"");c&&e&&(0,H.ey)({store:aY,sectionId:b,responsibilityId:e,phase:"closed-with-items",trigger:"final-document-review-revision",reason:"整稿终审定向修订后正文已变更;未重新送节级复审,按未决项收口",snapshot:{structurePlanHash:a.structurePlan?.planHash,sectionPlanHash:c.sectionPlanHash,unitVersions:(0,B.rz)(aY,b).map(a=>({entityId:a.entityId,version:a.version})),unreviewedUnitIds:[],sourceReviewComplete:!0,blockingFindingIds:(0,J.bF)(aY,(0,B.rz)(aY,b).map(a=>a.entityId)).filter(J.S0).map(a=>a.id)}})}bH=bG(),a4("construction-final-document-revision",{appliedSections:c,appliedUnits:d,refused:b,reFinalized:!0})}else a4("construction-final-document-revision",{appliedSections:[],appliedUnits:[],refused:b})}}catch(a){a4("construction-final-document-review-failed",{error:a instanceof Error?a.message:String(a)})}let bJ=a.tenderResponsePlan?(0,U.sV)({plan:aJ?{...a.tenderResponsePlan,sections:a.tenderResponsePlan.sections.filter(a=>aJ.includes(a.sectionId))}:a.tenderResponsePlan,contract:a.contract,markdown:bH.markdown,outputIdsBySection:bH.outputIdsBySection}):void 0;bJ&&(0,ah.tv)(aM,"tender-response-audit.json",bJ,a.runId);let bK=a8?an.current:void 0,bL=bK?[...(0,W._D)(bH.markdown,bK),...(0,W.Pu)(bH.markdown,bK),...(0,W.ke)(bH.markdown,bK),...(0,W.mM)(bH.markdown,bK)]:[];bK&&(0,ah.tv)(aM,"execution-baseline-audit.json",{runId:a.runId,baselineHash:(0,w.Fu)((0,W.PI)(bK)),issues:bL},a.runId);let bM=(0,Y.M)(bH.markdown);(0,ah.tv)(aM,"language-quality-audit.json",{runId:a.runId,issues:bM},a.runId);let bN=(0,Z.ip)(a.documentId,{baseDir:aN}).stages,bO=(0,L.pT)(bH.receipt),bP=(0,L.R3)(bH.receipt),bQ=bA.length>0&&bA.every(a=>aY.actor(a.actorId)?.checkpoint?.status==="completed"),bR=bH.issues.filter(a=>"section-unwritten"===a.code).length,bS=a1(),bT=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}}}(bE.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:af,sectionCount:bS.sections.length}),bU={usage:bS,audit:bT,reviewCalls:bS.run.reviewCalls??0,...void 0===bS.run.reviewInputTokens?{}:{reviewInputTokens:bS.run.reviewInputTokens},thinkCalls:bS.run.thinkCalls??0,...void 0===bS.run.thinkInputTokens?{}:{thinkInputTokens:bS.run.thinkInputTokens},unknownUsageCalls:bS.run.unknownUsageCalls,...bS.run.reviewUnknownUsageCalls?{reviewUnknownUsageCalls:bS.run.reviewUnknownUsageCalls}:{},...bS.run.thinkUnknownUsageCalls?{thinkUnknownUsageCalls:bS.run.thinkUnknownUsageCalls}:{}},bV=(0,z.eW)({store:aY,project:a.project,contract:a.contract}),bW={},bX=[];for(let a of["construction",""]){let b=i().join(aM,a,"write-check-failures.jsonl");try{if(!g().existsSync(b))continue;for(let a of(bX.push(b),g().readFileSync(b,"utf8").split("\n")))if(a.trim())try{for(let b of JSON.parse(a).blocking??[])b.code&&(bW[b.code]=(bW[b.code]??0)+1)}catch{}}catch{}}let bY={runId:a.runId,generatedAt:new Date().toISOString(),...bV,writeCheckFailureCounts:bW,writeCheckFailureTotal:Object.values(bW).reduce((a,b)=>a+b,0),notMetSections:bV.perSection.filter(a=>"blocked"===a.phase||"closed-with-items"===a.phase).map(a=>({sectionId:a.sectionId,phase:a.phase,reason:a.reason??"未记录原因"}))};(0,ah.tv)(aM,"run-source-review-readings.json",bY,a.runId);let bZ=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"]),b$=!bH.issues.some(a=>bZ.has(a.code)||/^(?:delivery-placement|original-form|original-figure)/u.test(a.code)),b_=0===bH.identityIssues.length,b0=0===bH.bodyPolicyIssues.length,b1=0===bH.sectionStateIssues.length,b2=!!bK&&0===bL.length,b3=!bM.some(a=>"blocker"===a.severity),b4=as&&bO&&bQ&&0===bC.length&&0===bR&&b$&&b_&&b0&&b1&&b2&&b3,b5={planningGate:as,receiptReady:bO,qualityReady:bP,responsibilitiesComplete:bQ,waiting:bC.length,missingSections:bR,compositionValid:b$,identityMarksValid:b_,bodyPolicyValid:b0,sectionStates:b1,executionBaseline:b2,languageQuality:b3},b6=[...b?[{level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`主控本轮未继续推进:${b}`}]:[],...bH.identityIssues,...bH.bodyPolicyIssues,...bH.sectionStateIssues,...bH.issues.map(a=>({level:"error",severity:bZ.has(a.code)?"blocker":"warning",category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}})),...bH.applicabilityIssues,...bH.applicabilityWarnings,...bJ?.issues.map(a=>({level:"error",severity:a.severity,category:"structure",owner:"system",message:a.message,...a.sectionId?{chapterId:a.sectionId}:{}}))??[],...bL.map(a=>({level:"error",severity:"blocker",category:"structure",owner:"system",message:`执行基准不一致:${a.message}${a.evidence?`(${a.evidence})`:""}`})),...bM.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} 行)`:""}`})),...bH.receipt.score.qualityGaps.map(a=>({level:"error",severity:"warning",category:"professional_chain",owner:"system",message:`专业档位不足:${a.criterionId};${a.reason}`})),...as?[]:[{level:"error",severity:"blocker",category:"structure",owner:"system",message:`规划闸门未通过${b?`:${b}`:":章节/义务/输出/基准承接不完整"}`}]],b7=[];for(let a of bH.receipt.findings.filter(a=>"met"!==a.status))b7.push({key:(0,w.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 bH.receipt.score.qualityGaps)b7.push({key:(0,w.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 b6)b7.push({key:(0,w.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,H.Pp)(aY,b.id);a?.phase==="closed-with-items"&&b7.push({key:(0,w.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 bI)b7.push({key:(0,w.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 b8=[...new Map(b7.map(a=>[a.key,a])).values()].sort((a,b)=>a.severity===b.severity?a.message.localeCompare(b.message):"blocker"===a.severity?-1:1),b9={total:b8.length,blocker:b8.filter(a=>"blocker"===a.severity).length,warning:b8.filter(a=>"warning"===a.severity).length};(0,ah.tv)(aM,"run-issue-ledger.json",{version:"run-issue-ledger-v1",runId:a.runId,documentId:a.documentId,documentHash:bH.receipt.documentHash,counts:b9,entries:b8},a.runId),a4("construction-run-issue-ledger",b9),at({artifactDir:aM,runId:a.runId,onReceipt:a4});let ca=a.deliveryAssets?(()=>{let b=(0,ag.vx)(aY,a.project,{documentHash:bH.receipt.documentHash}),c=(b,c)=>(0,ah.tv)(aM,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",bH.receipt),c("document-delivery-placements.json",{runId:a.runId,documentId:a.documentId,workspaceId:aY.workspaceId,planningContextHash:a.planningContext?(0,w.Fu)(a.planningContext):null,documentHash:bH.documentHash,placements:bH.deliveryPlacements}),c("construction-source-coverage.json",b),a4("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;ca?.message&&b6.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:ca.message}),ca&&(b4=b4&&ca.passed,b5={...b5,sourceCoverage:ca.passed});let cb=[...bJ?.issues.filter(a=>"blocker"===a.severity)??[],...bH.applicabilityIssues];b4=b4&&0===cb.length,b5={...b5,tenderResponse:{passed:0===cb.length,...cb.length?{message:`${cb.length} 项招标响应或适用性问题尚未解决:${cb.slice(0,3).map(a=>a.message).join(";")}`}:{}}};let cc=a2(),cd=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,ak.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,C.c6)(c.markdown),deliveryFingerprint:(0,C.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,S.Kf)(b.bidComposition)?[{key:"bid-body-content",label:"正文图表及封面机械核验",passed:a.delivery.bodyPolicyValid,message:"只核实际正文语法与已验身图件;不凭标题授附表资格,不代表专业适用通过"}]:[],...a.sourceCompleteness?[a.sourceCompleteness]:[]]},reviewMetadata:{workflowVersion:ai.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=av({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:ai.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:bH,stages:bN,issues:b6,deliveryReady:b4,delivery:b5,waiting:bC,advisoryWaiting:bD,...aK.size?{blockedSections:[...aK].sort()}:{},responsibilities:{total:bA.length,completed:bA.filter(a=>aY.actor(a.actorId)?.checkpoint?.status==="completed").length},...aJ?{scopeSectionIds:aJ}:{},executionBaselineRef:an,...cc?{sectionProgress:cc}:{},...d?{budgetPause:{enforcement:af.enforcement,where:d.where,message:aF(d),violations:d.violations}}:{},...ca?{sourceCompleteness:ca}:{},...b?{chiefBlocked:b}:{}});cd.assets=(b=>{if(!b.figureAssets.length)return[];let c=(0,w.Fu)(b.figureAssets),d=(0,w.Fu)([b.documentHash,c]),e=(0,ah.tv)(aM,`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:aY.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"}]})(bH),cd.createdAt=h.createdAt;let ce=aY.latestEvent();if(!h.publish(cd,(0,w.Fu)(JSON.parse(JSON.stringify([cd.markdown,cd.status,cd.reviewMetadata]))),!0,ce?{workspaceId:aY.workspaceId,eventSequence:ce.sequence,eventId:ce.id}:void 0))throw Error("CONSTRUCTION_RUN_SUPERSEDED:较新运行或文档修订已接管记录,旧运行不得覆盖");return bi=!0,a$.quality={...a$.quality,blockingCount:b6.filter(a=>"blocker"===a.severity).length,importantCount:b6.filter(a=>"warning"===a.severity).length,minorCount:b6.length,repairedCount:0},{record:cd,diagnostics:a$,rounds:{chief:V,drains:X,responsibilities:bv.length},waiting:bC,budget:af,budgetReport:bU,...b?{chiefBlocked:b}:{}}}catch(b){if(!bi)try{bg(!0,a.signal?.aborted?"paused":"failed")}catch(a){a4("construction-progress-stop-save-failed",{error:String(a),lastSuccess:h?.state().lastSuccess??null})}throw b}finally{a.signal?.removeEventListener("abort",bh),aU=()=>{},h?.close(),aX.unbindSectionContracts?.(),aY.close()}}function av(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 aw(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 ax(a){return i().join((0,aa.Gl)(a),"construction")}}};
|