agestra 4.14.2 → 4.14.3

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/dist/bundle.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as ___cr } from 'module';import { fileURLToPath as ___fu } from 'url';import { dirname as ___dn } from 'path';const __filename = ___fu(import.meta.url);const __dirname = ___dn(__filename);const require = ___cr(import.meta.url);
3
- var Ij=Object.create;var om=Object.defineProperty;var xj=Object.getOwnPropertyDescriptor;var Ej=Object.getOwnPropertyNames;var Aj=Object.getPrototypeOf,Tj=Object.prototype.hasOwnProperty;var Wr=(t,e)=>()=>(t&&(e=t(t=0)),e);var R=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),tt=(t,e)=>{for(var r in e)om(t,r,{get:e[r],enumerable:!0})},Dj=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ej(e))!Tj.call(t,n)&&n!==r&&om(t,n,{get:()=>e[n],enumerable:!(s=xj(e,n))||s.enumerable});return t};var Aw=(t,e,r)=>(r=t!=null?Ij(Aj(t)):{},Dj(e||!t||!t.__esModule?om(r,"default",{value:t,enumerable:!0}):r,t));var Dw,Ca,im,Cw,ru,wr,Ow,Mw,Ns,jw,hs,Nw,Uo,Lw,zw,Fw,qw,Bw,En,am,cm,qre,Bre,dm,Uw,Vw,su,An,um,Vo,Hw,Ho,It=Wr(()=>{"use strict";Dw="4.14.2",Ca="http://localhost:11434",im="llama3",Cw=".agestra/.jobs",ru=".agestra/traces",wr=".agestra/runs",Ow=".agestra/worktrees",Mw=".agestra/sessions",Ns=".agestra/workspace",jw="individual",hs="debates",Nw="synthesis",Uo="artifacts",Lw="issue",zw=".agestra/workers",Fw=Object.freeze(["PATH","HOME","USER","USERPROFILE","APPDATA","LOCALAPPDATA","TEMP","TMP","TMPDIR","SHELL","LANG","LC_ALL","NODE_PATH","SystemRoot","SystemDrive","COMSPEC","ComSpec","windir","AGESTRA_CONFIG_PATH","AGESTRA_BASE_DIR","AGESTRA_HOME","AGESTRA_PROMPT_CAPSULE_MODE"]),qw=2,Bw=6e4,En=20,am=5e4,cm=10,qre=Object.freeze([3,5,10]),Bre=Object.freeze(["agree","disagree","abstain","revise"]),dm=2,Uw=1440*60*1e3,Vw=3600*1e3,su=Object.freeze(["ko","zh","ja","en"]),An="ko",um="en",Vo="[REDACTED]",Hw=["","--- REQUIRED RESPONSE FORMAT ---","Respond with JSON only, matching exactly this shape:",'{ "agrees": true | false, "feedback": "specific issues or why you agree", "suggestions": "concrete changes if you disagree (optional, may be omitted)" }',"No prose, markdown, or explanation outside the JSON object. The JSON must be the entire response or wrapped in a single ```json code fence.","-------------------------------"].join(`
3
+ var Ij=Object.create;var om=Object.defineProperty;var xj=Object.getOwnPropertyDescriptor;var Ej=Object.getOwnPropertyNames;var Aj=Object.getPrototypeOf,Tj=Object.prototype.hasOwnProperty;var Wr=(t,e)=>()=>(t&&(e=t(t=0)),e);var R=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),tt=(t,e)=>{for(var r in e)om(t,r,{get:e[r],enumerable:!0})},Dj=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ej(e))!Tj.call(t,n)&&n!==r&&om(t,n,{get:()=>e[n],enumerable:!(s=xj(e,n))||s.enumerable});return t};var Aw=(t,e,r)=>(r=t!=null?Ij(Aj(t)):{},Dj(e||!t||!t.__esModule?om(r,"default",{value:t,enumerable:!0}):r,t));var Dw,Ca,im,Cw,ru,wr,Ow,Mw,Ns,jw,hs,Nw,Uo,Lw,zw,Fw,qw,Bw,En,am,cm,qre,Bre,dm,Uw,Vw,su,An,um,Vo,Hw,Ho,It=Wr(()=>{"use strict";Dw="4.14.3",Ca="http://localhost:11434",im="llama3",Cw=".agestra/.jobs",ru=".agestra/traces",wr=".agestra/runs",Ow=".agestra/worktrees",Mw=".agestra/sessions",Ns=".agestra/workspace",jw="individual",hs="debates",Nw="synthesis",Uo="artifacts",Lw="issue",zw=".agestra/workers",Fw=Object.freeze(["PATH","HOME","USER","USERPROFILE","APPDATA","LOCALAPPDATA","TEMP","TMP","TMPDIR","SHELL","LANG","LC_ALL","NODE_PATH","SystemRoot","SystemDrive","COMSPEC","ComSpec","windir","AGESTRA_CONFIG_PATH","AGESTRA_BASE_DIR","AGESTRA_HOME","AGESTRA_PROMPT_CAPSULE_MODE"]),qw=2,Bw=6e4,En=20,am=5e4,cm=10,qre=Object.freeze([3,5,10]),Bre=Object.freeze(["agree","disagree","abstain","revise"]),dm=2,Uw=1440*60*1e3,Vw=3600*1e3,su=Object.freeze(["ko","zh","ja","en"]),An="ko",um="en",Vo="[REDACTED]",Hw=["","--- REQUIRED RESPONSE FORMAT ---","Respond with JSON only, matching exactly this shape:",'{ "agrees": true | false, "feedback": "specific issues or why you agree", "suggestions": "concrete changes if you disagree (optional, may be omitted)" }',"No prose, markdown, or explanation outside the JSON object. The JSON must be the entire response or wrapped in a single ```json code fence.","-------------------------------"].join(`
4
4
  `),Ho=Object.freeze({auto:Object.freeze({name:"auto",description:"Auto-detect build profile from project structure (package.json scripts, tsconfig, vitest config, etc.).",command:"npx",args:Object.freeze([]),runsBuild:!1,runsTests:!1}),tsc:Object.freeze({name:"tsc",description:"TypeScript project-references build via `npx tsc -b --noEmit`.",command:"npx",args:Object.freeze(["tsc","-b","--noEmit"]),runsBuild:!0,runsTests:!1}),vitest:Object.freeze({name:"vitest",description:"Run the Vitest unit-test suite in CI mode.",command:"npx",args:Object.freeze(["vitest","run","--reporter=dot"]),runsBuild:!1,runsTests:!0}),"npm-build":Object.freeze({name:"npm-build",description:"Run the project's `npm run build` script.",command:"npm",args:Object.freeze(["run","build"]),runsBuild:!0,runsTests:!1}),"npm-test":Object.freeze({name:"npm-test",description:"Run the project's `npm test` script.",command:"npm",args:Object.freeze(["test","--","--run"]),runsBuild:!1,runsTests:!0})})});import{execFileSync as Cj}from"child_process";function Wo(t){if(!Number.isFinite(t)||t<=0)return{delivered:!1};if(process.platform==="win32")try{return Cj("taskkill",["/PID",String(t),"/T","/F"],{stdio:"ignore",windowsHide:!0}),{delivered:!0}}catch{try{return process.kill(t),{delivered:!0}}catch{return{delivered:!1}}}try{return process.kill(-t,"SIGTERM"),{delivered:!0}}catch{try{return process.kill(t,"SIGTERM"),{delivered:!0}}catch{return{delivered:!1}}}}function Sr(t,e=3e3){let r=t.pid;if(r)Wo(r);else try{t.kill("SIGTERM")}catch{}setTimeout(()=>{try{t.kill("SIGKILL")}catch{}},e).unref?.()}var Zo=Wr(()=>{"use strict"});import{StringDecoder as Oj}from"string_decoder";function Bt(){return new Oj("utf8")}function Ls(t=process.env){let e={...t};return process.platform==="win32"&&(e.PYTHONIOENCODING??="utf-8",e.PYTHONUTF8??="1",e.LANG??="C.UTF-8",e.LC_ALL??="C.UTF-8"),e}var Go=Wr(()=>{"use strict"});import{execFileSync as Mj,spawn as jj}from"child_process";import{existsSync as Nj}from"fs";function Ww(t){let e=t.replace(/\s+/g," ").trim();return e.length>200?`${e.slice(0,200)}...`:e}function zs(t,e){if(t)try{t({...e,at:new Date().toISOString()})}catch{}}function zj(t){return process.platform!=="win32"||t.includes("/")||t.includes("\\")?!1:Lj.has(t.toLowerCase())}function Zw(t){if(t.includes("\0"))throw new Error(`Windows shim arg contains null byte: ${JSON.stringify(t)}`);if(t.includes("%"))throw new Error(`Windows shim arg contains '%' which would trigger cmd.exe env expansion: ${JSON.stringify(t)}`);return/[\s"&^<>|()!]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}function Fj(t){let e=t.toLowerCase();if(Jo.has(e))return Jo.get(e)??null;try{let s=Mj("where.exe",[t],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:5e3}).split(/\r?\n/).map(a=>a.trim()).filter(Boolean);if(s.length===0)return Jo.set(e,null),null;let n=s.find(a=>/\.(cmd|bat)$/i.test(a));if(n){let a={type:"cmd",path:n};return Jo.set(e,a),a}let i=`${s[0]}.ps1`;if(Nj(i)){let a={type:"powershell",path:i};return Jo.set(e,a),a}}catch{}return Jo.set(e,null),null}function Tn(t,e){if(!zj(t))return{command:t,args:e};let r=Fj(t);return r?r.type==="cmd"?{command:"cmd.exe",args:["/d","/s","/c",["call",Zw(r.path),...e.map(n=>Zw(n))].join(" ")],windowsVerbatimArguments:!0}:{command:"powershell.exe",args:["-NoProfile","-ExecutionPolicy","RemoteSigned","-File",r.path,...e]}:{command:t,args:e}}function Qt(t){let{command:e,args:r,timeout:s=12e4,overallTimeoutMs:n,cwd:o,env:i,stdin:a,maxBuffer:c=10485760,onStderrChunk:d,onActivity:u,signal:l}=t;return new Promise((f,h)=>{if(l?.aborted){zs(u,{type:"abort",command:e,args:r,reason:String(l.reason??"aborted before spawn")}),h(new xt(l.reason));return}let m=Tn(e,r);zs(u,{type:"start",command:m.command,args:m.args,timeoutMs:s});let g=jj(m.command,m.args,{cwd:o,env:Ls(i?{...process.env,...i}:void 0),stdio:[a?"pipe":"ignore","pipe","pipe"],windowsHide:!0,...m.windowsVerbatimArguments===!0?{windowsVerbatimArguments:!0}:{}}),y="",v="",_=0,b=0,S=!1,w=null,D=!1,L=Bt(),j=Bt(),P=null,O=()=>{P&&l&&l.removeEventListener("abort",P)},E=!1,W=()=>{!E&&_+b>c&&(S=!0,E=!0,Sr(g))},ce=null,Ie=()=>{ce&&(clearTimeout(ce),ce=null)},Qe=()=>{D||(Sr(g),D=!0,Ie(),O(),zs(u,{type:"timeout",command:e,args:r,timeoutMs:s}),h(new Error(`CLI timeout after ${s}ms of inactivity: ${e} ${r.join(" ")}`)))},qt=setTimeout(Qe,s);ce=n!==void 0?setTimeout(()=>{D||(Sr(g),D=!0,clearTimeout(qt),Ie(),O(),zs(u,{type:"timeout",command:e,args:r,timeoutMs:n}),h(new Error(`CLI overall timeout after ${n}ms: ${e} ${r.join(" ")}`)))},n):null,l&&(P=()=>{D||(D=!0,clearTimeout(qt),Ie(),Sr(g),O(),zs(u,{type:"abort",command:e,args:r,reason:String(l.reason??"aborted")}),h(new xt(l.reason)))},l.addEventListener("abort",P));let Bo=()=>{E||(clearTimeout(qt),qt=setTimeout(Qe,s))};if(g.stdout.on("data",Yt=>{_+=Yt.length;let _r=L.write(Yt);zs(u,{type:"stdout",command:e,args:r,preview:Ww(_r)}),_<=c&&(y+=_r),W(),Bo()}),g.stderr.on("data",Yt=>{b+=Yt.length;let _r=j.write(Yt);if(zs(u,{type:"stderr",command:e,args:r,preview:Ww(_r)}),b<=c&&(v+=_r),W(),!E&&d){let Os=d(_r);Os&&(w=Os,E=!0,Sr(g))}Bo()}),a&&g.stdin){g.stdin.on("error",()=>{});try{g.stdin.write(a),g.stdin.end()}catch{}}g.on("close",(Yt,_r)=>{if(clearTimeout(qt),Ie(),D)return;let Os=L.end();Os&&_<=c&&(y+=Os);let Xe=j.end();if(Xe&&b<=c&&(v+=Xe),zs(u,{type:"close",command:e,args:r,exitCode:Yt,signalCode:_r}),w){D=!0,O(),h(w);return}D=!0,O(),f({stdout:y,stderr:v,exitCode:Yt??1,truncated:S})}),g.on("error",Yt=>{clearTimeout(qt),Ie(),!D&&(D=!0,O(),h(new Error(`CLI spawn error: ${Yt.message}`)))})})}var xt,Lj,Jo,Ko=Wr(()=>{"use strict";Zo();Go();xt=class extends Error{constructor(e){let r=e instanceof Error?`: ${e.message}`:typeof e=="string"&&e?`: ${e}`:"";super(`CLI aborted${r}`),this.name="CliAbortedError"}};Lj=new Set(["codex","gemini","npm","npx"]),Jo=new Map});import{writeFileSync as uL,mkdirSync as Na,openSync as hm,writeSync as gm,fsyncSync as pS,closeSync as ym,renameSync as lL,unlinkSync as lS,appendFileSync as pL,copyFileSync as fL}from"fs";import{dirname as La,join as mL}from"path";import{randomUUID as hL}from"crypto";function ae(t,e){let r=La(t);Na(r,{recursive:!0});let s=mL(r,`.tmp-${hL().slice(0,8)}`);try{uL(s,e,"utf-8");try{lL(s,t)}catch(n){if(n.code!=="EXDEV")throw n;fL(s,t),lS(s)}}catch(n){try{lS(s)}catch{}throw n}}function Se(t,e){ae(t,JSON.stringify(e,null,2))}function ai(t,e){let r=La(t);Na(r,{recursive:!0});let s=hm(t,"a");try{gm(s,e),pS(s)}finally{ym(s)}}var ii,rr=Wr(()=>{"use strict";ii=class{buffer=new Map;flushTimer=null;flushIntervalMs;maxBufferSize;auditFsync;destroyed=!1;constructor(e){this.flushIntervalMs=e?.flushIntervalMs??2e3,this.maxBufferSize=e?.maxBufferSize??100,this.auditFsync=e?.auditFsync??!0,this.flushIntervalMs>0&&(this.flushTimer=setInterval(()=>this.flush(),this.flushIntervalMs),this.flushTimer&&typeof this.flushTimer.unref=="function"&&this.flushTimer.unref())}append(e,r,s){if(this.destroyed)throw new Error("DurableAppendWriter has been destroyed");if(s==="audit"){if(this.auditFsync)ai(e,r);else{let o=La(e);Na(o,{recursive:!0}),pL(e,r)}return}let n=this.buffer.get(e);n||(n=[],this.buffer.set(e,n)),n.push(r),n.length>=this.maxBufferSize&&this.flushFile(e),this.flushIntervalMs===0&&this.flushFile(e)}flush(){for(let e of this.buffer.keys())this.flushFile(e)}panicFlush(){for(let[e,r]of this.buffer)if(r.length!==0)try{let s=La(e);Na(s,{recursive:!0});let n=hm(e,"a");try{gm(n,r.join("")),pS(n)}finally{ym(n)}}catch{}this.buffer.clear()}destroy(){this.destroyed||(this.destroyed=!0,this.flushTimer!==null&&(clearInterval(this.flushTimer),this.flushTimer=null),this.flush())}flushFile(e){let r=this.buffer.get(e);if(!r||r.length===0)return;let s=La(e);Na(s,{recursive:!0});let n=hm(e,"a");try{gm(n,r.join(""))}finally{ym(n)}this.buffer.delete(e)}}});import{openSync as gL,writeSync as yL,closeSync as vL,unlinkSync as fS,statSync as bL,mkdirSync as _L}from"fs";import{dirname as wL}from"path";function $L(t){if(t<=0)return;let e=new SharedArrayBuffer(4),r=new Int32Array(e);Atomics.wait(r,0,0,t)}function Yr(t,e,r={}){let s=r.staleMs??SL,n=r.acquireTimeoutMs??kL,o=r.pollMs??RL;_L(wL(t),{recursive:!0});let i=Date.now(),a=null;for(;a===null;)try{a=gL(t,"wx")}catch(c){let d=c.code;if(!(d==="EEXIST"||process.platform==="win32"&&d==="EPERM"))throw c;let l=!1;try{let h=bL(t);l=Date.now()-h.mtimeMs>s}catch{}if(l){try{fS(t)}catch{}continue}let f=Date.now()-i;if(f>=n)throw new vm(t,f);$L(o)}try{try{yL(a,`${process.pid}@${Date.now()}
5
5
  `)}catch{}return e()}finally{try{vL(a)}catch{}try{fS(t)}catch{}}}var SL,kL,RL,vm,za=Wr(()=>{"use strict";SL=3e4,kL=5e3,RL=10,vm=class extends Error{constructor(e,r){super(`withFileLock: timed out after ${r}ms waiting for ${e}`),this.name="FileLockTimeoutError"}}});import{existsSync as mS,realpathSync as PL}from"fs";import{basename as IL,dirname as xL,isAbsolute as _m,join as EL,normalize as gS,resolve as wm,relative as AL}from"path";function TL(t){return t===""||!t.startsWith("..")&&!_m(t)}function bm(t){let e=[],r=wm(t);for(;!mS(r);){let n=xL(r);if(n===r)break;e.unshift(IL(r)),r=n}let s=mS(r)?PL(r):r;return e.reduce((n,o)=>EL(n,o),s)}function yS(t,e){let r=bm(e),s=bm(t),n=AL(r,s);return TL(n)}function Fa(t,e){let r=wm(e,t);return yS(r,e)}function sr(t,e){let r=wm(e,t);if(!yS(r,e))throw new Error(`Path traversal blocked: ${t} escapes ${e}`);return r}function xe(t,e){if(t.length===0)throw new Error("Filename must not be empty");if(t.includes("\0"))throw new Error(`Filename contains null byte: ${JSON.stringify(t)}`);if(t.includes("/")||t.includes("\\"))throw new Error(`Filename must not contain path separators: ${JSON.stringify(t)}`);if(t.includes(".."))throw new Error(`Filename must not contain '..': ${JSON.stringify(t)}`);return sr(t,e)}function qa(t){return fu.test(t)}function DL(t,e="session id"){if(!qa(t))throw new Error(`Invalid ${e}: must match ${fu.source}`);return t}function ws(t,e,r){return xe(`${DL(t)}${e}`,r)}function Ht(t,e){if(_m(t)){let r=gS(t);if(!Fa(r,e))throw new Error(`Read path outside base directory: ${t} is not within ${e}`);return r}return sr(t,e)}function vS(t,e){return _m(t)?bm(gS(t)):sr(t,e)}function Ss(t){return CL.test(t)}function mu(t,e){if(!t||typeof t!="string")throw new Vt(String(t),"command must be a non-empty string");if(t.includes("\0"))throw new Vt(t,"command contains null byte");if(t.includes("/")||t.includes("\\"))throw new Vt(t,"command must not contain path separators");if(!hS.has(t))throw new Vt(t,`command is not in the allowlist (${[...hS].join(", ")})`);for(let r of e){if(typeof r!="string")throw new Vt(t,`args contain a non-string entry: ${JSON.stringify(r)}`);if(r.includes("\0"))throw new Vt(t,`arg contains null byte: ${JSON.stringify(r)}`);if(OL.has(r))throw new Vt(t,`arg ${JSON.stringify(r)} is a code-execution flag and is not permitted`)}}var fu,CL,hS,OL,Vt,Gn=Wr(()=>{"use strict";fu=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;CL=/^[a-zA-Z0-9_-]+-\d+-[a-f0-9]{6}$/;hS=new Set(["gemini","codex","claude","npx","node","npm","tsc"]),OL=new Set(["-e","--eval","-c","--command","-E","--execute","--exec"]),Vt=class extends Error{command;reason;constructor(e,r){super(`CLI command rejected: ${e} \u2014 ${r}`),this.command=e,this.reason=r,this.name="CliCommandRejectedError"}}});import{readFileSync as ML}from"fs";import{join as jL}from"path";function Ke(t,e){let r=jL(t,"status.json"),s=`${r}.lock`;Yr(s,()=>{let n=JSON.parse(ML(r,"utf-8"));Se(r,{...n,...e})})}var Ba=Wr(()=>{"use strict";rr();za()});import{spawn as NL}from"child_process";import{join as Sm}from"path";function bS(t){let e=t.replace(/\s+/g," ").trim();return e.length>200?`${e.slice(0,200)}...`:e}function hu(t){return new Promise(e=>{let r=Tn(t.command,t.args),s={kind:"start",updatedAt:new Date().toISOString(),message:"CLI process started",command:r.command,timeoutMs:t.timeoutMs,stdoutBytes:0,stderrBytes:0},n=0,o,i=(_,b={})=>{Object.assign(s,_,{updatedAt:new Date().toISOString()});let S=Date.now(),w=s.kind!==o;if(!(!b.force&&!w&&S-n<LL))try{Ke(t.jobDir,{activity:{...s}}),n=S,o=s.kind}catch{}};i(s,{force:!0});let a=NL(r.command,r.args,{cwd:t.cwd,env:Ls(),stdio:["ignore","pipe","pipe"],windowsHide:!0});if(t.recordPid&&typeof a.pid=="number"&&a.pid>0)try{Ke(t.jobDir,{pid:a.pid})}catch{}if(!a.stdout||!a.stderr){try{a.kill()}catch{}try{ae(Sm(t.jobDir,"error.txt"),"Worker stdout/stderr streams unavailable (pipe allocation failed)"),Ke(t.jobDir,{state:"error",completedAt:new Date().toISOString()})}catch{}e();return}let c="",d="",u=0,l=0,f=!1,h=!1,m=Bt(),g=Bt();a.stdout.on("data",_=>{u+=_.length;let b=m.write(_);i({kind:"stdout",message:"stdout received",stdoutBytes:u,stderrBytes:l,lastStdoutPreview:bS(b)}),u<=10485760?c+=b:f||(f=!0,Sr(a))}),a.stderr.on("data",_=>{l+=_.length;let b=g.write(_);i({kind:"stderr",message:"stderr received",stdoutBytes:u,stderrBytes:l,lastStderrPreview:bS(b)}),l<=10485760&&(d+=b)});let y=(_,b)=>{if(h)return;h=!0,clearTimeout(v);let S=m.end();S&&u<=10485760&&(c+=S);let w=g.end();w&&l<=10485760&&(d+=w);try{ae(Sm(t.jobDir,"output.txt"),c),ae(Sm(t.jobDir,"error.txt"),b!==void 0?b:d),Ke(t.jobDir,_)}catch{}e()},v=setTimeout(()=>{Sr(a),i({kind:"timeout",message:`timed out after ${t.timeoutMs}ms`,timeoutMs:t.timeoutMs,stdoutBytes:u,stderrBytes:l},{force:!0}),y({state:"timed_out",completedAt:new Date().toISOString()})},t.timeoutMs);a.on("close",_=>{if(h)return;let b=c.trim().length>0,S=_===0||b?"completed":"error";i({kind:"close",message:"CLI process closed",exitCode:_??1,stdoutBytes:u,stderrBytes:l},{force:!0}),y({state:S,exitCode:_??1,completedAt:new Date().toISOString()})}),a.on("error",_=>{if(h)return;let b=_.code==="ENOENT"?"missing_cli":"error";i({kind:"close",message:`CLI spawn error: ${_.message}`,stdoutBytes:u,stderrBytes:l},{force:!0}),y({state:b,completedAt:new Date().toISOString()},_.message)})})}var LL,km=Wr(()=>{"use strict";rr();Ko();Zo();Ba();Go();LL=1e3});var kS={};tt(kS,{CLI_PROVIDERS:()=>wS,resolveCliConfig:()=>SS});import{readFileSync as _S}from"fs";import{join as Jn}from"path";function SS(t){let e=zL[t.provider]??t.provider;return wS[e]??null}async function FL(){let t=process.argv[2];t||process.exit(1);let e;try{e=JSON.parse(_S(Jn(t,"job.json"),"utf-8"))}catch{try{Se(Jn(t,"status.json"),{id:"unknown",state:"error",provider:"unknown",completedAt:new Date().toISOString()}),ae(Jn(t,"error.txt"),"Failed to read job.json")}catch{}process.exit(1)}let r=SS(e);r||(Ke(t,{state:"missing_cli",completedAt:new Date().toISOString()}),ae(Jn(t,"error.txt"),`No CLI mapping for provider: ${e.provider}`),process.exit(1));let{command:s,buildArgs:n}=r;Ke(t,{state:"running",startedAt:new Date().toISOString()});let o=_S(Jn(t,"prompt.txt"),"utf-8"),i=n(o);try{mu(s,i)}catch(c){let d=c instanceof Vt?c.message:`Argv rejected: ${c.message}`;Ke(t,{state:"error",completedAt:new Date().toISOString()}),ae(Jn(t,"error.txt"),d);return}let a;if(e.cwd)try{a=sr(e.cwd,process.cwd())}catch(c){Ke(t,{state:"error",completedAt:new Date().toISOString()}),ae(Jn(t,"error.txt"),`Rejected descriptor.cwd: ${c.message}`);return}await hu({jobDir:t,command:s,args:i,cwd:a,timeoutMs:e.timeout,recordPid:!1})}var zL,wS,qL,RS=Wr(()=>{"use strict";rr();Gn();km();Ba();zL={"gemini-cli":"gemini","codex-cli":"codex","claude-cli":"claude"},wS={gemini:{command:"gemini",buildArgs:t=>["-p",t]},codex:{command:"codex",buildArgs:t=>["exec","--skip-git-repo-check","--full-auto","--ephemeral",t]},claude:{command:"claude",buildArgs:t=>["-p",t]}};qL=process.argv[1]?.endsWith("job-worker.js")||process.argv[1]?.endsWith("job-worker.ts");qL&&FL().catch(()=>process.exit(1))});var jc=R(be=>{"use strict";Object.defineProperty(be,"__esModule",{value:!0});be.regexpCode=be.getEsmExportName=be.getProperty=be.safeStringify=be.stringify=be.strConcat=be.addCodeArg=be.str=be._=be.nil=be._Code=be.Name=be.IDENTIFIER=be._CodeOrName=void 0;var Oc=class{};be._CodeOrName=Oc;be.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var ho=class extends Oc{constructor(e){if(super(),!be.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};be.Name=ho;var lr=class extends Oc{constructor(e){super(),this._items=typeof e=="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((r,s)=>`${r}${s}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((r,s)=>(s instanceof ho&&(r[s.str]=(r[s.str]||0)+1),r),{})}};be._Code=lr;be.nil=new lr("");function zx(t,...e){let r=[t[0]],s=0;for(;s<e.length;)xg(r,e[s]),r.push(t[++s]);return new lr(r)}be._=zx;var Ig=new lr("+");function Fx(t,...e){let r=[Mc(t[0])],s=0;for(;s<e.length;)r.push(Ig),xg(r,e[s]),r.push(Ig,Mc(t[++s]));return AH(r),new lr(r)}be.str=Fx;function xg(t,e){e instanceof lr?t.push(...e._items):e instanceof ho?t.push(e):t.push(CH(e))}be.addCodeArg=xg;function AH(t){let e=1;for(;e<t.length-1;){if(t[e]===Ig){let r=TH(t[e-1],t[e+1]);if(r!==void 0){t.splice(e-1,3,r);continue}t[e++]="+"}e++}}function TH(t,e){if(e==='""')return t;if(t==='""')return e;if(typeof t=="string")return e instanceof ho||t[t.length-1]!=='"'?void 0:typeof e!="string"?`${t.slice(0,-1)}${e}"`:e[0]==='"'?t.slice(0,-1)+e.slice(1):void 0;if(typeof e=="string"&&e[0]==='"'&&!(t instanceof ho))return`"${t}${e.slice(1)}`}function DH(t,e){return e.emptyStr()?t:t.emptyStr()?e:Fx`${t}${e}`}be.strConcat=DH;function CH(t){return typeof t=="number"||typeof t=="boolean"||t===null?t:Mc(Array.isArray(t)?t.join(","):t)}function OH(t){return new lr(Mc(t))}be.stringify=OH;function Mc(t){return JSON.stringify(t).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}be.safeStringify=Mc;function MH(t){return typeof t=="string"&&be.IDENTIFIER.test(t)?new lr(`.${t}`):zx`[${t}]`}be.getProperty=MH;function jH(t){if(typeof t=="string"&&be.IDENTIFIER.test(t))return new lr(`${t}`);throw new Error(`CodeGen: invalid export name: ${t}, use explicit $id name mapping`)}be.getEsmExportName=jH;function NH(t){return new lr(t.toString())}be.regexpCode=NH});var Tg=R(Ct=>{"use strict";Object.defineProperty(Ct,"__esModule",{value:!0});Ct.ValueScope=Ct.ValueScopeName=Ct.Scope=Ct.varKinds=Ct.UsedValueState=void 0;var Dt=jc(),Eg=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},Ll;(function(t){t[t.Started=0]="Started",t[t.Completed=1]="Completed"})(Ll||(Ct.UsedValueState=Ll={}));Ct.varKinds={const:new Dt.Name("const"),let:new Dt.Name("let"),var:new Dt.Name("var")};var zl=class{constructor({prefixes:e,parent:r}={}){this._names={},this._prefixes=e,this._parent=r}toName(e){return e instanceof Dt.Name?e:this.name(e)}name(e){return new Dt.Name(this._newName(e))}_newName(e){let r=this._names[e]||this._nameGroup(e);return`${e}${r.index++}`}_nameGroup(e){var r,s;if(!((s=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||s===void 0)&&s.has(e)||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};Ct.Scope=zl;var Fl=class extends Dt.Name{constructor(e,r){super(r),this.prefix=e}setValue(e,{property:r,itemIndex:s}){this.value=e,this.scopePath=(0,Dt._)`.${new Dt.Name(r)}[${s}]`}};Ct.ValueScopeName=Fl;var LH=(0,Dt._)`\n`,Ag=class extends zl{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?LH:Dt.nil}}get(){return this._scope}name(e){return new Fl(e,this._newName(e))}value(e,r){var s;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let n=this.toName(e),{prefix:o}=n,i=(s=r.key)!==null&&s!==void 0?s:r.ref,a=this._values[o];if(a){let u=a.get(i);if(u)return u}else a=this._values[o]=new Map;a.set(i,n);let c=this._scope[o]||(this._scope[o]=[]),d=c.length;return c[d]=r.ref,n.setValue(r,{property:o,itemIndex:d}),n}getValue(e,r){let s=this._values[e];if(s)return s.get(r)}scopeRefs(e,r=this._values){return this._reduceValues(r,s=>{if(s.scopePath===void 0)throw new Error(`CodeGen: name "${s}" has no value`);return(0,Dt._)`${e}${s.scopePath}`})}scopeCode(e=this._values,r,s){return this._reduceValues(e,n=>{if(n.value===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return n.value.code},r,s)}_reduceValues(e,r,s={},n){let o=Dt.nil;for(let i in e){let a=e[i];if(!a)continue;let c=s[i]=s[i]||new Map;a.forEach(d=>{if(c.has(d))return;c.set(d,Ll.Started);let u=r(d);if(u){let l=this.opts.es5?Ct.varKinds.var:Ct.varKinds.const;o=(0,Dt._)`${o}${l} ${d} = ${u};${this.opts._n}`}else if(u=n?.(d))o=(0,Dt._)`${o}${u}${this.opts._n}`;else throw new Eg(d);c.set(d,Ll.Completed)})}return o}};Ct.ValueScope=Ag});var se=R(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.or=te.and=te.not=te.CodeGen=te.operators=te.varKinds=te.ValueScopeName=te.ValueScope=te.Scope=te.Name=te.regexpCode=te.stringify=te.getProperty=te.nil=te.strConcat=te.str=te._=void 0;var pe=jc(),Cr=Tg(),dn=jc();Object.defineProperty(te,"_",{enumerable:!0,get:function(){return dn._}});Object.defineProperty(te,"str",{enumerable:!0,get:function(){return dn.str}});Object.defineProperty(te,"strConcat",{enumerable:!0,get:function(){return dn.strConcat}});Object.defineProperty(te,"nil",{enumerable:!0,get:function(){return dn.nil}});Object.defineProperty(te,"getProperty",{enumerable:!0,get:function(){return dn.getProperty}});Object.defineProperty(te,"stringify",{enumerable:!0,get:function(){return dn.stringify}});Object.defineProperty(te,"regexpCode",{enumerable:!0,get:function(){return dn.regexpCode}});Object.defineProperty(te,"Name",{enumerable:!0,get:function(){return dn.Name}});var Vl=Tg();Object.defineProperty(te,"Scope",{enumerable:!0,get:function(){return Vl.Scope}});Object.defineProperty(te,"ValueScope",{enumerable:!0,get:function(){return Vl.ValueScope}});Object.defineProperty(te,"ValueScopeName",{enumerable:!0,get:function(){return Vl.ValueScopeName}});Object.defineProperty(te,"varKinds",{enumerable:!0,get:function(){return Vl.varKinds}});te.operators={GT:new pe._Code(">"),GTE:new pe._Code(">="),LT:new pe._Code("<"),LTE:new pe._Code("<="),EQ:new pe._Code("==="),NEQ:new pe._Code("!=="),NOT:new pe._Code("!"),OR:new pe._Code("||"),AND:new pe._Code("&&"),ADD:new pe._Code("+")};var $s=class{optimizeNodes(){return this}optimizeNames(e,r){return this}},Dg=class extends $s{constructor(e,r,s){super(),this.varKind=e,this.name=r,this.rhs=s}render({es5:e,_n:r}){let s=e?Cr.varKinds.var:this.varKind,n=this.rhs===void 0?"":` = ${this.rhs}`;return`${s} ${this.name}${n};`+r}optimizeNames(e,r){if(e[this.name.str])return this.rhs&&(this.rhs=Li(this.rhs,e,r)),this}get names(){return this.rhs instanceof pe._CodeOrName?this.rhs.names:{}}},ql=class extends $s{constructor(e,r,s){super(),this.lhs=e,this.rhs=r,this.sideEffects=s}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,r){if(!(this.lhs instanceof pe.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=Li(this.rhs,e,r),this}get names(){let e=this.lhs instanceof pe.Name?{}:{...this.lhs.names};return Ul(e,this.rhs)}},Cg=class extends ql{constructor(e,r,s,n){super(e,s,n),this.op=r}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},Og=class extends $s{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},Mg=class extends $s{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}},jg=class extends $s{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},Ng=class extends $s{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,r){return this.code=Li(this.code,e,r),this}get names(){return this.code instanceof pe._CodeOrName?this.code.names:{}}},Nc=class extends $s{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((r,s)=>r+s.render(e),"")}optimizeNodes(){let{nodes:e}=this,r=e.length;for(;r--;){let s=e[r].optimizeNodes();Array.isArray(s)?e.splice(r,1,...s):s?e[r]=s:e.splice(r,1)}return e.length>0?this:void 0}optimizeNames(e,r){let{nodes:s}=this,n=s.length;for(;n--;){let o=s[n];o.optimizeNames(e,r)||(zH(e,o.names),s.splice(n,1))}return s.length>0?this:void 0}get names(){return this.nodes.reduce((e,r)=>vo(e,r.names),{})}},Ps=class extends Nc{render(e){return"{"+e._n+super.render(e)+"}"+e._n}},Lg=class extends Nc{},Ni=class extends Ps{};Ni.kind="else";var go=class t extends Ps{constructor(e,r){super(r),this.condition=e}render(e){let r=`if(${this.condition})`+super.render(e);return this.else&&(r+="else "+this.else.render(e)),r}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let r=this.else;if(r){let s=r.optimizeNodes();r=this.else=Array.isArray(s)?new Ni(s):s}if(r)return e===!1?r instanceof t?r:r.nodes:this.nodes.length?this:new t(qx(e),r instanceof t?[r]:r.nodes);if(!(e===!1||!this.nodes.length))return this}optimizeNames(e,r){var s;if(this.else=(s=this.else)===null||s===void 0?void 0:s.optimizeNames(e,r),!!(super.optimizeNames(e,r)||this.else))return this.condition=Li(this.condition,e,r),this}get names(){let e=super.names;return Ul(e,this.condition),this.else&&vo(e,this.else.names),e}};go.kind="if";var yo=class extends Ps{};yo.kind="for";var zg=class extends yo{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iteration=Li(this.iteration,e,r),this}get names(){return vo(super.names,this.iteration.names)}},Fg=class extends yo{constructor(e,r,s,n){super(),this.varKind=e,this.name=r,this.from=s,this.to=n}render(e){let r=e.es5?Cr.varKinds.var:this.varKind,{name:s,from:n,to:o}=this;return`for(${r} ${s}=${n}; ${s}<${o}; ${s}++)`+super.render(e)}get names(){let e=Ul(super.names,this.from);return Ul(e,this.to)}},Bl=class extends yo{constructor(e,r,s,n){super(),this.loop=e,this.varKind=r,this.name=s,this.iterable=n}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iterable=Li(this.iterable,e,r),this}get names(){return vo(super.names,this.iterable.names)}},Lc=class extends Ps{constructor(e,r,s){super(),this.name=e,this.args=r,this.async=s}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}};Lc.kind="func";var zc=class extends Nc{render(e){return"return "+super.render(e)}};zc.kind="return";var qg=class extends Ps{render(e){let r="try"+super.render(e);return this.catch&&(r+=this.catch.render(e)),this.finally&&(r+=this.finally.render(e)),r}optimizeNodes(){var e,r;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(e,r){var s,n;return super.optimizeNames(e,r),(s=this.catch)===null||s===void 0||s.optimizeNames(e,r),(n=this.finally)===null||n===void 0||n.optimizeNames(e,r),this}get names(){let e=super.names;return this.catch&&vo(e,this.catch.names),this.finally&&vo(e,this.finally.names),e}},Fc=class extends Ps{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};Fc.kind="catch";var qc=class extends Ps{render(e){return"finally"+super.render(e)}};qc.kind="finally";var Bg=class{constructor(e,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
6
6
  `:""},this._extScope=e,this._scope=new Cr.Scope({parent:e}),this._nodes=[new Lg]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,r){let s=this._extScope.value(e,r);return(this._values[s.prefix]||(this._values[s.prefix]=new Set)).add(s),s}getScopeValue(e,r){return this._extScope.getValue(e,r)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,r,s,n){let o=this._scope.toName(r);return s!==void 0&&n&&(this._constants[o.str]=s),this._leafNode(new Dg(e,o,s)),o}const(e,r,s){return this._def(Cr.varKinds.const,e,r,s)}let(e,r,s){return this._def(Cr.varKinds.let,e,r,s)}var(e,r,s){return this._def(Cr.varKinds.var,e,r,s)}assign(e,r,s){return this._leafNode(new ql(e,r,s))}add(e,r){return this._leafNode(new Cg(e,te.operators.ADD,r))}code(e){return typeof e=="function"?e():e!==pe.nil&&this._leafNode(new Ng(e)),this}object(...e){let r=["{"];for(let[s,n]of e)r.length>1&&r.push(","),r.push(s),(s!==n||this.opts.es5)&&(r.push(":"),(0,pe.addCodeArg)(r,n));return r.push("}"),new pe._Code(r)}if(e,r,s){if(this._blockNode(new go(e)),r&&s)this.code(r).else().code(s).endIf();else if(r)this.code(r).endIf();else if(s)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new go(e))}else(){return this._elseNode(new Ni)}endIf(){return this._endBlockNode(go,Ni)}_for(e,r){return this._blockNode(e),r&&this.code(r).endFor(),this}for(e,r){return this._for(new zg(e),r)}forRange(e,r,s,n,o=this.opts.es5?Cr.varKinds.var:Cr.varKinds.let){let i=this._scope.toName(e);return this._for(new Fg(o,i,r,s),()=>n(i))}forOf(e,r,s,n=Cr.varKinds.const){let o=this._scope.toName(e);if(this.opts.es5){let i=r instanceof pe.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,pe._)`${i}.length`,a=>{this.var(o,(0,pe._)`${i}[${a}]`),s(o)})}return this._for(new Bl("of",n,o,r),()=>s(o))}forIn(e,r,s,n=this.opts.es5?Cr.varKinds.var:Cr.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,(0,pe._)`Object.keys(${r})`,s);let o=this._scope.toName(e);return this._for(new Bl("in",n,o,r),()=>s(o))}endFor(){return this._endBlockNode(yo)}label(e){return this._leafNode(new Og(e))}break(e){return this._leafNode(new Mg(e))}return(e){let r=new zc;if(this._blockNode(r),this.code(e),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(zc)}try(e,r,s){if(!r&&!s)throw new Error('CodeGen: "try" without "catch" and "finally"');let n=new qg;if(this._blockNode(n),this.code(e),r){let o=this.name("e");this._currNode=n.catch=new Fc(o),r(o)}return s&&(this._currNode=n.finally=new qc,this.code(s)),this._endBlockNode(Fc,qc)}throw(e){return this._leafNode(new jg(e))}block(e,r){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(r),this}endBlock(e){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let s=this._nodes.length-r;if(s<0||e!==void 0&&s!==e)throw new Error(`CodeGen: wrong number of nodes: ${s} vs ${e} expected`);return this._nodes.length=r,this}func(e,r=pe.nil,s,n){return this._blockNode(new Lc(e,r,s)),n&&this.code(n).endFunc(),this}endFunc(){return this._endBlockNode(Lc)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,r){let s=this._currNode;if(s instanceof e||r&&s instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${e.kind}/${r.kind}`:e.kind}"`)}_elseNode(e){let r=this._currNode;if(!(r instanceof go))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let r=this._nodes;r[r.length-1]=e}};te.CodeGen=Bg;function vo(t,e){for(let r in e)t[r]=(t[r]||0)+(e[r]||0);return t}function Ul(t,e){return e instanceof pe._CodeOrName?vo(t,e.names):t}function Li(t,e,r){if(t instanceof pe.Name)return s(t);if(!n(t))return t;return new pe._Code(t._items.reduce((o,i)=>(i instanceof pe.Name&&(i=s(i)),i instanceof pe._Code?o.push(...i._items):o.push(i),o),[]));function s(o){let i=r[o.str];return i===void 0||e[o.str]!==1?o:(delete e[o.str],i)}function n(o){return o instanceof pe._Code&&o._items.some(i=>i instanceof pe.Name&&e[i.str]===1&&r[i.str]!==void 0)}}function zH(t,e){for(let r in e)t[r]=(t[r]||0)-(e[r]||0)}function qx(t){return typeof t=="boolean"||typeof t=="number"||t===null?!t:(0,pe._)`!${Ug(t)}`}te.not=qx;var FH=Bx(te.operators.AND);function qH(...t){return t.reduce(FH)}te.and=qH;var BH=Bx(te.operators.OR);function UH(...t){return t.reduce(BH)}te.or=UH;function Bx(t){return(e,r)=>e===pe.nil?r:r===pe.nil?e:(0,pe._)`${Ug(e)} ${t} ${Ug(r)}`}function Ug(t){return t instanceof pe.Name?t:(0,pe._)`(${t})`}});var me=R(ne=>{"use strict";Object.defineProperty(ne,"__esModule",{value:!0});ne.checkStrictMode=ne.getErrorPath=ne.Type=ne.useFunc=ne.setEvaluated=ne.evaluatedPropsToName=ne.mergeEvaluated=ne.eachItem=ne.unescapeJsonPointer=ne.escapeJsonPointer=ne.escapeFragment=ne.unescapeFragment=ne.schemaRefOrVal=ne.schemaHasRulesButRef=ne.schemaHasRules=ne.checkUnknownRules=ne.alwaysValidSchema=ne.toHash=void 0;var Ee=se(),VH=jc();function HH(t){let e={};for(let r of t)e[r]=!0;return e}ne.toHash=HH;function WH(t,e){return typeof e=="boolean"?e:Object.keys(e).length===0?!0:(Hx(t,e),!Wx(e,t.self.RULES.all))}ne.alwaysValidSchema=WH;function Hx(t,e=t.schema){let{opts:r,self:s}=t;if(!r.strictSchema||typeof e=="boolean")return;let n=s.RULES.keywords;for(let o in e)n[o]||Jx(t,`unknown keyword: "${o}"`)}ne.checkUnknownRules=Hx;function Wx(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(e[r])return!0;return!1}ne.schemaHasRules=Wx;function ZH(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(r!=="$ref"&&e.all[r])return!0;return!1}ne.schemaHasRulesButRef=ZH;function GH({topSchemaRef:t,schemaPath:e},r,s,n){if(!n){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,Ee._)`${r}`}return(0,Ee._)`${t}${e}${(0,Ee.getProperty)(s)}`}ne.schemaRefOrVal=GH;function JH(t){return Zx(decodeURIComponent(t))}ne.unescapeFragment=JH;function KH(t){return encodeURIComponent(Hg(t))}ne.escapeFragment=KH;function Hg(t){return typeof t=="number"?`${t}`:t.replace(/~/g,"~0").replace(/\//g,"~1")}ne.escapeJsonPointer=Hg;function Zx(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}ne.unescapeJsonPointer=Zx;function YH(t,e){if(Array.isArray(t))for(let r of t)e(r);else e(t)}ne.eachItem=YH;function Ux({mergeNames:t,mergeToName:e,mergeValues:r,resultToName:s}){return(n,o,i,a)=>{let c=i===void 0?o:i instanceof Ee.Name?(o instanceof Ee.Name?t(n,o,i):e(n,o,i),i):o instanceof Ee.Name?(e(n,i,o),o):r(o,i);return a===Ee.Name&&!(c instanceof Ee.Name)?s(n,c):c}}ne.mergeEvaluated={props:Ux({mergeNames:(t,e,r)=>t.if((0,Ee._)`${r} !== true && ${e} !== undefined`,()=>{t.if((0,Ee._)`${e} === true`,()=>t.assign(r,!0),()=>t.assign(r,(0,Ee._)`${r} || {}`).code((0,Ee._)`Object.assign(${r}, ${e})`))}),mergeToName:(t,e,r)=>t.if((0,Ee._)`${r} !== true`,()=>{e===!0?t.assign(r,!0):(t.assign(r,(0,Ee._)`${r} || {}`),Wg(t,r,e))}),mergeValues:(t,e)=>t===!0?!0:{...t,...e},resultToName:Gx}),items:Ux({mergeNames:(t,e,r)=>t.if((0,Ee._)`${r} !== true && ${e} !== undefined`,()=>t.assign(r,(0,Ee._)`${e} === true ? true : ${r} > ${e} ? ${r} : ${e}`)),mergeToName:(t,e,r)=>t.if((0,Ee._)`${r} !== true`,()=>t.assign(r,e===!0?!0:(0,Ee._)`${r} > ${e} ? ${r} : ${e}`)),mergeValues:(t,e)=>t===!0?!0:Math.max(t,e),resultToName:(t,e)=>t.var("items",e)})};function Gx(t,e){if(e===!0)return t.var("props",!0);let r=t.var("props",(0,Ee._)`{}`);return e!==void 0&&Wg(t,r,e),r}ne.evaluatedPropsToName=Gx;function Wg(t,e,r){Object.keys(r).forEach(s=>t.assign((0,Ee._)`${e}${(0,Ee.getProperty)(s)}`,!0))}ne.setEvaluated=Wg;var Vx={};function QH(t,e){return t.scopeValue("func",{ref:e,code:Vx[e.code]||(Vx[e.code]=new VH._Code(e.code))})}ne.useFunc=QH;var Vg;(function(t){t[t.Num=0]="Num",t[t.Str=1]="Str"})(Vg||(ne.Type=Vg={}));function XH(t,e,r){if(t instanceof Ee.Name){let s=e===Vg.Num;return r?s?(0,Ee._)`"[" + ${t} + "]"`:(0,Ee._)`"['" + ${t} + "']"`:s?(0,Ee._)`"/" + ${t}`:(0,Ee._)`"/" + ${t}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,Ee.getProperty)(t).toString():"/"+Hg(t)}ne.getErrorPath=XH;function Jx(t,e,r=t.opts.strictSchema){if(r){if(e=`strict mode: ${e}`,r===!0)throw new Error(e);t.self.logger.warn(e)}}ne.checkStrictMode=Jx});var Is=R(Zg=>{"use strict";Object.defineProperty(Zg,"__esModule",{value:!0});var mt=se(),eW={data:new mt.Name("data"),valCxt:new mt.Name("valCxt"),instancePath:new mt.Name("instancePath"),parentData:new mt.Name("parentData"),parentDataProperty:new mt.Name("parentDataProperty"),rootData:new mt.Name("rootData"),dynamicAnchors:new mt.Name("dynamicAnchors"),vErrors:new mt.Name("vErrors"),errors:new mt.Name("errors"),this:new mt.Name("this"),self:new mt.Name("self"),scope:new mt.Name("scope"),json:new mt.Name("json"),jsonPos:new mt.Name("jsonPos"),jsonLen:new mt.Name("jsonLen"),jsonPart:new mt.Name("jsonPart")};Zg.default=eW});var Bc=R(ht=>{"use strict";Object.defineProperty(ht,"__esModule",{value:!0});ht.extendErrors=ht.resetErrorsCount=ht.reportExtraError=ht.reportError=ht.keyword$DataError=ht.keywordError=void 0;var he=se(),Hl=me(),kt=Is();ht.keywordError={message:({keyword:t})=>(0,he.str)`must pass "${t}" keyword validation`};ht.keyword$DataError={message:({keyword:t,schemaType:e})=>e?(0,he.str)`"${t}" keyword must be ${e} ($data)`:(0,he.str)`"${t}" keyword is invalid ($data)`};function tW(t,e=ht.keywordError,r,s){let{it:n}=t,{gen:o,compositeRule:i,allErrors:a}=n,c=Qx(t,e,r);s??(i||a)?Kx(o,c):Yx(n,(0,he._)`[${c}]`)}ht.reportError=tW;function rW(t,e=ht.keywordError,r){let{it:s}=t,{gen:n,compositeRule:o,allErrors:i}=s,a=Qx(t,e,r);Kx(n,a),o||i||Yx(s,kt.default.vErrors)}ht.reportExtraError=rW;function sW(t,e){t.assign(kt.default.errors,e),t.if((0,he._)`${kt.default.vErrors} !== null`,()=>t.if(e,()=>t.assign((0,he._)`${kt.default.vErrors}.length`,e),()=>t.assign(kt.default.vErrors,null)))}ht.resetErrorsCount=sW;function nW({gen:t,keyword:e,schemaValue:r,data:s,errsCount:n,it:o}){if(n===void 0)throw new Error("ajv implementation error");let i=t.name("err");t.forRange("i",n,kt.default.errors,a=>{t.const(i,(0,he._)`${kt.default.vErrors}[${a}]`),t.if((0,he._)`${i}.instancePath === undefined`,()=>t.assign((0,he._)`${i}.instancePath`,(0,he.strConcat)(kt.default.instancePath,o.errorPath))),t.assign((0,he._)`${i}.schemaPath`,(0,he.str)`${o.errSchemaPath}/${e}`),o.opts.verbose&&(t.assign((0,he._)`${i}.schema`,r),t.assign((0,he._)`${i}.data`,s))})}ht.extendErrors=nW;function Kx(t,e){let r=t.const("err",e);t.if((0,he._)`${kt.default.vErrors} === null`,()=>t.assign(kt.default.vErrors,(0,he._)`[${r}]`),(0,he._)`${kt.default.vErrors}.push(${r})`),t.code((0,he._)`${kt.default.errors}++`)}function Yx(t,e){let{gen:r,validateName:s,schemaEnv:n}=t;n.$async?r.throw((0,he._)`new ${t.ValidationError}(${e})`):(r.assign((0,he._)`${s}.errors`,e),r.return(!1))}var bo={keyword:new he.Name("keyword"),schemaPath:new he.Name("schemaPath"),params:new he.Name("params"),propertyName:new he.Name("propertyName"),message:new he.Name("message"),schema:new he.Name("schema"),parentSchema:new he.Name("parentSchema")};function Qx(t,e,r){let{createErrors:s}=t.it;return s===!1?(0,he._)`{}`:oW(t,e,r)}function oW(t,e,r={}){let{gen:s,it:n}=t,o=[iW(n,r),aW(t,r)];return cW(t,e,o),s.object(...o)}function iW({errorPath:t},{instancePath:e}){let r=e?(0,he.str)`${t}${(0,Hl.getErrorPath)(e,Hl.Type.Str)}`:t;return[kt.default.instancePath,(0,he.strConcat)(kt.default.instancePath,r)]}function aW({keyword:t,it:{errSchemaPath:e}},{schemaPath:r,parentSchema:s}){let n=s?e:(0,he.str)`${e}/${t}`;return r&&(n=(0,he.str)`${n}${(0,Hl.getErrorPath)(r,Hl.Type.Str)}`),[bo.schemaPath,n]}function cW(t,{params:e,message:r},s){let{keyword:n,data:o,schemaValue:i,it:a}=t,{opts:c,propertyName:d,topSchemaRef:u,schemaPath:l}=a;s.push([bo.keyword,n],[bo.params,typeof e=="function"?e(t):e||(0,he._)`{}`]),c.messages&&s.push([bo.message,typeof r=="function"?r(t):r]),c.verbose&&s.push([bo.schema,i],[bo.parentSchema,(0,he._)`${u}${l}`],[kt.default.data,o]),d&&s.push([bo.propertyName,d])}});var eE=R(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.boolOrEmptySchema=zi.topBoolOrEmptySchema=void 0;var dW=Bc(),uW=se(),lW=Is(),pW={message:"boolean schema is false"};function fW(t){let{gen:e,schema:r,validateName:s}=t;r===!1?Xx(t,!1):typeof r=="object"&&r.$async===!0?e.return(lW.default.data):(e.assign((0,uW._)`${s}.errors`,null),e.return(!0))}zi.topBoolOrEmptySchema=fW;function mW(t,e){let{gen:r,schema:s}=t;s===!1?(r.var(e,!1),Xx(t)):r.var(e,!0)}zi.boolOrEmptySchema=mW;function Xx(t,e){let{gen:r,data:s}=t,n={gen:r,keyword:"false schema",data:s,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:t};(0,dW.reportError)(n,pW,void 0,e)}});var Gg=R(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.getRules=Fi.isJSONType=void 0;var hW=["string","number","integer","boolean","null","object","array"],gW=new Set(hW);function yW(t){return typeof t=="string"&&gW.has(t)}Fi.isJSONType=yW;function vW(){let t={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...t,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},t.number,t.string,t.array,t.object],post:{rules:[]},all:{},keywords:{}}}Fi.getRules=vW});var Jg=R(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.shouldUseRule=un.shouldUseGroup=un.schemaHasRulesForType=void 0;function bW({schema:t,self:e},r){let s=e.RULES.types[r];return s&&s!==!0&&tE(t,s)}un.schemaHasRulesForType=bW;function tE(t,e){return e.rules.some(r=>rE(t,r))}un.shouldUseGroup=tE;function rE(t,e){var r;return t[e.keyword]!==void 0||((r=e.definition.implements)===null||r===void 0?void 0:r.some(s=>t[s]!==void 0))}un.shouldUseRule=rE});var Uc=R(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.reportTypeError=gt.checkDataTypes=gt.checkDataType=gt.coerceAndCheckDataType=gt.getJSONTypes=gt.getSchemaTypes=gt.DataType=void 0;var _W=Gg(),wW=Jg(),SW=Bc(),Y=se(),sE=me(),qi;(function(t){t[t.Correct=0]="Correct",t[t.Wrong=1]="Wrong"})(qi||(gt.DataType=qi={}));function kW(t){let e=nE(t.type);if(e.includes("null")){if(t.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!e.length&&t.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');t.nullable===!0&&e.push("null")}return e}gt.getSchemaTypes=kW;function nE(t){let e=Array.isArray(t)?t:t?[t]:[];if(e.every(_W.isJSONType))return e;throw new Error("type must be JSONType or JSONType[]: "+e.join(","))}gt.getJSONTypes=nE;function RW(t,e){let{gen:r,data:s,opts:n}=t,o=$W(e,n.coerceTypes),i=e.length>0&&!(o.length===0&&e.length===1&&(0,wW.schemaHasRulesForType)(t,e[0]));if(i){let a=Yg(e,s,n.strictNumbers,qi.Wrong);r.if(a,()=>{o.length?PW(t,e,o):Qg(t)})}return i}gt.coerceAndCheckDataType=RW;var oE=new Set(["string","number","integer","boolean","null"]);function $W(t,e){return e?t.filter(r=>oE.has(r)||e==="array"&&r==="array"):[]}function PW(t,e,r){let{gen:s,data:n,opts:o}=t,i=s.let("dataType",(0,Y._)`typeof ${n}`),a=s.let("coerced",(0,Y._)`undefined`);o.coerceTypes==="array"&&s.if((0,Y._)`${i} == 'object' && Array.isArray(${n}) && ${n}.length == 1`,()=>s.assign(n,(0,Y._)`${n}[0]`).assign(i,(0,Y._)`typeof ${n}`).if(Yg(e,n,o.strictNumbers),()=>s.assign(a,n))),s.if((0,Y._)`${a} !== undefined`);for(let d of r)(oE.has(d)||d==="array"&&o.coerceTypes==="array")&&c(d);s.else(),Qg(t),s.endIf(),s.if((0,Y._)`${a} !== undefined`,()=>{s.assign(n,a),IW(t,a)});function c(d){switch(d){case"string":s.elseIf((0,Y._)`${i} == "number" || ${i} == "boolean"`).assign(a,(0,Y._)`"" + ${n}`).elseIf((0,Y._)`${n} === null`).assign(a,(0,Y._)`""`);return;case"number":s.elseIf((0,Y._)`${i} == "boolean" || ${n} === null
@@ -72,7 +72,7 @@ ${e}`),t.files?.length)for(let r of t.files)r.content&&(e+=`
72
72
  ### File: ${r.path}
73
73
  \`\`\`
74
74
  ${r.content}
75
- \`\`\``);return e}function Q1(t,e){let r=e?.model;return typeof r=="string"&&r.length>0?r:t}var Xs=class{id;type;bridge;modelName;displayName;capabilities;constructor(e){this.id=e.id??e.bridge.providerId,this.type=e.type,this.bridge=e.bridge,this.modelName=e.modelName??e.type,this.displayName=e.displayName,this.capabilities=e.capabilities}async initialize(){}async healthCheck(){return this.bridge.healthCheck?this.bridge.healthCheck():this.bridge.isAvailable()?{status:"ok",message:`${this.displayName} host bridge available`}:{status:"error",message:`${this.displayName} host bridge unavailable`}}getCapabilities(){return{...this.capabilities,models:this.capabilities.models.map((e,r)=>r===0?{...e,name:this.modelName}:{...e})}}getDescriptor(){return Zr(this,this.getCapabilities())}isAvailable(){return this.bridge.isAvailable()}async chat(e){if(!this.isAvailable())throw new ve(this.id,`${this.displayName} host bridge is not available`);try{let r=Y1(e),s={...e.extra??{}};e.model&&(s.model=e.model),typeof e.temperature=="number"&&(s.temperature=e.temperature),typeof e.maxTokens=="number"&&(s.maxTokens=e.maxTokens);let n=await this.bridge.runTurn({prompt:r,system:e.system,metadata:s});return{text:n.text,model:Q1(this.modelName,n.metadata),provider:this.id,metadata:n.metadata}}catch(r){let s=r instanceof Error?r.message:String(r);throw/sampling|host bridge unavailable|does not support/i.test(s)?new ve(this.id,s):new He(this.id,s)}}};var X1={maxContext:2e5,supportsSystemPrompt:!0,supportsFiles:!0,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!1,strengths:["reasoning","review","synthesis","moderation"],models:[{name:"claude-host",description:"Claude host model via MCP sampling bridge",strengths:["reasoning","review","synthesis"]}]},zu=class extends Xs{constructor(e){super({...e,type:"claude-host",displayName:"Claude",capabilities:X1,modelName:e.modelName??"claude-host"})}};var eq={maxContext:2e5,supportsSystemPrompt:!0,supportsFiles:!0,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!1,strengths:["coding","reasoning","review","implementation"],models:[{name:"codex-host",description:"Codex host model via MCP sampling bridge",strengths:["coding","implementation","review"]}]},Fu=class extends Xs{constructor(e){super({...e,type:"codex-host",displayName:"Codex",capabilities:eq,modelName:e.modelName??"codex-host"})}};var tq={maxContext:1e6,supportsSystemPrompt:!0,supportsFiles:!0,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!1,strengths:["analysis","reasoning","research","review"],models:[{name:"gemini-host",description:"Gemini host model via MCP sampling bridge",strengths:["analysis","research","review"]}]},qu=class extends Xs{constructor(e){super({...e,type:"gemini-host",displayName:"Gemini",capabilities:tq,modelName:e.modelName??"gemini-host"})}};It();var Yk={"report.header.topic":"Topic","report.header.participants":"Participants","report.header.individualDocs":"Individual documents","report.table.proposer":"Proposer","report.table.opinion":"Opinion","report.table.severity":"Severity","report.table.agreement":"Agreement","report.section.mainTable":"Proposal ledger","report.section.dissentDetail":"Dissenting items","report.section.contributionSummary":"AI contribution summary","report.contribution.ai":"AI","report.contribution.proposed":"Proposed","report.contribution.accepted":"Accepted","report.contribution.revises":"Revises issued","report.contribution.abstains":"Abstains","report.footer.synthesisPath":"Final synthesis document","report.footer.debatePath":"Debate transcript","report.footer.pendingSynthesis":"(pending leader approval)","report.status.running":"running","report.status.readyForApproval":"ready for approval","report.status.consensus":"consensus","report.status.escalated":"escalated","report.status.approved":"approved","report.status.rejected":"rejected","report.status.leaderTimeout":"leader timeout","report.status.partialCompleted":"partial completed","report.status.needsHumanReview":"needs human review","report.status.error":"error","synthesis.status.consensus":"Consensus reached","synthesis.status.escalated":"Partial / escalated","synthesis.section.acceptedItems":"Accepted Items","synthesis.section.rejectedItems":"Rejected / Withdrawn Items","synthesis.section.openItems":"Open Items","synthesis.section.sources":"Sources","synthesis.narration.consensusIn":"Consensus reached in round {round} of {max}.","synthesis.narration.escalated":"Session escalated by user after {round} rounds without consensus.","synthesis.narration.leaderNote":"Leader note","approval.pending":"Awaiting leader approval. Call `agent_debate_approve`, `agent_debate_continue`, or `agent_debate_reject`.","approval.timeout":"Session timed out waiting for leader decision ({hours}h).","moderator.narration.roundHeader":"Round {round} of {max}","moderator.narration.consensusInRound":"Consensus reached after {round} round(s).","moderator.narration.dissentDetailHeader":"Unresolved items","moderator.narration.noInterest":"No interest from participants","moderator.narration.participantDropout":"Participant `{participantId}` marked unavailable after repeated failures.","moderator.narration.participantTimeout":"Participant `{participantId}` did not respond in this round.","moderator.narration.leaderTimeoutFooter":"Leader Timeout","moderator.narration.rejected":"Session rejected by leader.","moderator.narration.approved":"Session approved by leader.","moderator.narration.aliasClarification":"Alias clarification phase","prompt.system.moderator":"You are the moderator of a structured multi-AI debate. You do not author proposals; you aggregate structured votes and produce a neutral synthesis. Respond only in the channels the protocol defines.","error.participantTimeout":"Participant `{participantId}` timed out after {seconds}s.","error.parseFailure":"Could not parse `<{tag}>` block from `{participantId}`.","error.sessionNotFound":"Debate session `{sessionId}` was not found.","error.invalidState":"Operation `{operation}` is not allowed in state `{state}`.","error.unknownLocaleFallback":"Unknown locale `{locale}`; falling back to `{fallback}`.","askUser.escalation.header":"Maximum rounds reached without consensus","askUser.escalation.question":"How would you like to proceed?","askUser.escalation.continue":"Continue +{rounds} rounds","askUser.escalation.escalate":"Escalate without consensus","askUser.escalation.stop":"Stop the debate","provider.readiness.section":"Provider Readiness","provider.readiness.actionRequired":"Action Required","provider.readiness.status.queued":"Queued","provider.readiness.status.checking":"Checking","provider.readiness.status.ready":"Ready","provider.readiness.status.warming":"Warming","provider.readiness.status.warm":"Warm","provider.readiness.status.unavailable":"Unavailable","provider.readiness.status.auth-needed":"Auth needed","provider.readiness.status.workspace-blocked":"Workspace trust blocked","provider.readiness.status.disabled":"Disabled","provider.readiness.status.skipped":"Skipped","provider.readiness.status.unknown":"Unknown","provider.routing.section":"Provider Routing","provider.routing.selected":"selected","provider.routing.skipped":"skipped","provider.routing.traceData":"trace data","provider.trust.workspaceBlocked":"{providerId} cannot run in this workspace because the folder is not trusted: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers} cannot run in this workspace because the folder is not trusted: {workspaceBaseDir}","provider.trust.question":"Trust only this project folder for {providerId}?","provider.trust.batch.question":"Trust only this project folder for supported providers?","provider.trust.option.apply":"Trust this project and continue","provider.trust.option.skip":"Continue without {providerId}","provider.trust.batch.option.skip":"Continue without these providers","provider.trust.option.abort":"Stop","provider.trust.apply.approvedRequired":"Workspace trust can only be changed after explicit user approval.","provider.trust.apply.workspaceRequired":"A target workspace folder is required before workspace trust can be changed.","provider.trust.apply.unsupported":"{providerId} does not support automatic workspace trust updates.","provider.trust.apply.result":"{providerId} workspace trust result: {status} ({workspaceBaseDir})","provider.trust.batch.resultHeader":"Provider Workspace Trust Results","common.yes":"Yes","common.no":"No","common.none":"(none)","common.default":"(default)","common.unknown":"(unknown)","common.notRecorded":"(not recorded)","common.notGeneratedYet":"(not generated yet)","common.available":"Available","common.unavailable":"Unavailable","common.enabled":"enabled","common.disabled":"disabled","common.ok":"OK","common.degraded":"DEGRADED","common.error":"ERROR","common.failed":"failed","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra Setup","setup.currentConfig.notFound":"Current config: not found","setup.currentConfig.present":"Current config: present","setup.currentConfig.presentNoProviders":"Current config: present (no providers enabled)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"Setup required: yes","setup.recommendedNextAction":"Recommended next action: ask the user for provider selection and locale, then call setup_apply.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"Detected providers","setup.detected.none":"(none detected)","setup.hostAssets":"Host assets","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra Setup Preview","setup.apply.appliedTitle":"Agestra Setup Applied","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"Registered Providers","provider.list.none":"No providers registered.","provider.health.title":"Health Check Results","provider.health.none":"No providers to check.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"Status","provider.label.message":"Message","provider.label.error":"Error","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"Workspace Trust Preflight","workspaceTrust.policy":"Policy","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"Discovery","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"contents not read","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"Blocked","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus Session","consensus.label.ledger":"Consensus Ledger","consensus.label.sessionId":"Session ID","consensus.label.status":"Status","consensus.label.phase":"Phase","consensus.label.updated":"Updated","consensus.label.created":"Created","consensus.label.round":"Round","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider Readiness","consensus.section.participantProgress":"Participant Progress","consensus.section.pendingHostTurns":"Pending Host Turns","consensus.section.documents":"Documents","consensus.section.roundState":"Round State","consensus.section.runEvidence":"Run Evidence","consensus.section.runInspector":"Run Inspector","consensus.section.recentActivity":"Recent Activity","consensus.section.allowedActions":"Allowed Actions","consensus.section.researchPreprocessorStatus":"Research Preprocessor Status","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.starting":"starting","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate","consensus.action.nextStep":"Next step - choose one:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"Approve synthesis","consensus.action.extend":"Extend debate","consensus.action.reject":"Abandon session","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'Host turn accepted for participant "{participantId}".',"consensus.submit.remaining":"Remaining pending host turns","consensus.submit.allIn":"All pending host turns are in. The consensus round will resume shortly.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"waiting for convergence","consensus.research.state.noOpenItems":"no open convergence items","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"Debate aggregation document","consensusDoc.debate.sourceLedger":"Source ledger JSON","consensusDoc.debate.participants":"Participating AIs","consensusDoc.debate.currentRound":"Current round","consensusDoc.dashboard":"Item dashboard","consensusDoc.item.id":"ID","consensusDoc.item.item":"Item","consensusDoc.item.status":"Status","consensusDoc.item.proposer":"Proposer","consensusDoc.item.agreement":"Agreement","consensusDoc.item.currentConclusion":"Current conclusion / blocker","consensusDoc.item.purpose":"Purpose","consensusDoc.item.originalClaim":"Original claim","consensusDoc.item.currentSummary":"Current summary","consensusDoc.item.conclusion":"Conclusion","consensusDoc.item.stance":"Stance","consensusDoc.item.content":"Content","consensusDoc.item.newItemProposal":"New item proposal","consensusDoc.item.previousStanceMissing":"previous stance not recorded","consensusDoc.item.stanceChanged":"Stance changed: from {previous} to {current}","consensusDoc.item.respondsTo":"Responds to","consensusDoc.item.persuasionEvidence":"Persuasion evidence","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"Overview","consensusDoc.synthesis.topic":"Topic","consensusDoc.synthesis.participants":"Participating AIs","consensusDoc.synthesis.roundReached":"Rounds to consensus","consensusDoc.synthesis.acceptedCount":"Accepted items","consensusDoc.synthesis.excludedCount":"Excluded items","consensusDoc.synthesis.openCount":"Open / needs-opinion items","consensusDoc.synthesis.ledger":"JSON ledger","consensusDoc.synthesis.debateDocument":"Aggregation document","consensusDoc.synthesis.finalTable":"Final decision table","consensusDoc.synthesis.finalStatus":"Final status","consensusDoc.synthesis.finalDecision":"Conclusion","consensusDoc.synthesis.agreedProviders":"Agreed AIs","consensusDoc.synthesis.disagreedProviders":"Disagreed AIs","consensusDoc.synthesis.opinionProviders":"Opinion / revision suggestions","consensusDoc.synthesis.accepted":"Accepted items","consensusDoc.synthesis.excluded":"Excluded items","consensusDoc.synthesis.open":"Open / needs-opinion items","consensusDoc.synthesis.followUp":"Next actions","consensusDoc.synthesis.noDecisions":"No decided items.","consensusDoc.synthesis.followAccepted":"{id}: Apply the accepted decision ({title}); {reason}","consensusDoc.synthesis.followExcluded":"{id}: Do not reintroduce the excluded decision ({title}). {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} Additional evidence or a user decision is required.","consensusDoc.synthesis.providerContribution":"Provider contributions","consensusDoc.synthesis.proposedCount":"Proposed","consensusDoc.synthesis.acceptedProposals":"Accepted proposals","consensusDoc.synthesis.exclusionHelp":"Helped exclusions","consensusDoc.synthesis.dissentContribution":"Dissent/opinion contributions","consensusDoc.synthesis.characteristic":"Characteristic","consensusDoc.references":"Reference documents","consensusDoc.references.validationJson":"Validation JSON","consensusDoc.references.synthesis":"Synthesis document","consensusDoc.references.inputDocument":"{provider} input document","consensusDoc.unresolvedExplanation":"Unresolved item explanation","consensusDoc.documentPaths":"Document paths","consensusDoc.noItems":"(none)","consensusDoc.decision.purpose":"Purpose","consensusDoc.decision.finalDecision":"Final decision","consensusDoc.decision.agreedProviders":"Agreed AIs","consensusDoc.decision.disagreedProviders":"Disagreed AIs","consensusDoc.decision.currentStances":"Current stances","consensusDoc.decision.changeHistory":"Change history","consensusDoc.decision.sourceLocations":"Debate/evidence locations","consensusDoc.decision.blockedDecision":"Blocked decision","consensusDoc.decision.howToResolve":"To resolve: strengthen the evidence requested by AIs with dissent/opinions, or have the user choose the final direction.","consensusDoc.decision.reason":"Decision reason","consensusDoc.decision.keyComments":"Key comments","consensusDoc.decision.acceptedOriginal":"accepted as originally proposed.","consensusDoc.decision.excludedOriginal":"the original proposal ended as an excluded decision.","consensusDoc.decision.noFinalChange":"no finalized change yet.","consensusDoc.decision.revisionFrom":"this item is a revision derived from {parentId}.","consensusDoc.decision.revisionLedTo":"revision suggestions led to {itemIds}.","consensusDoc.reason.acceptedBase":"Accepted content: {base}","consensusDoc.reason.excludedBase":"Excluded content: {base}","consensusDoc.reason.keyEvidence":"Key evidence: {evidence}","consensusDoc.reason.exclusionEvidence":"Exclusion evidence: {evidence}","consensusDoc.reason.needImplementationCheck":"Any weak evidence should be strengthened by checking code or documents before implementation.","consensusDoc.reason.needDissentCheck":"Confirm exclusion reasons from participant dissent or risk notes.","consensusDoc.reason.sourceConstraint":"Evidence locations remain at {refs}.","consensusDoc.reason.sourceConstraintMissing":"If more evidence is needed during implementation, inspect participant comments in the aggregation document first.","consensusDoc.reason.blockedNoEvidence":"Remaining issues require more evidence or a user decision.","consensusDoc.blocker.none":"Not every participant has explicitly agreed yet.","consensusDoc.blocker.prefix":"Blocked by","consensusDoc.conclusion.prefix":"Conclusion","consensusDoc.providerContribution.proposed":"proposal contribution","consensusDoc.providerContribution.reviewed":"review contribution","consensusDoc.runInspection.problemSummary":"Issue summary","consensusDoc.runInspection.noDiagnostics":"No failure diagnostics recorded.","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"agree","consensus.stance.disagree":"disagree","consensus.stance.opinion":"opinion","consensus.stance.revise":"revise","consensus.stance.no_response":"no response","consensus.stance.not_assigned":"not assigned this turn","consensus.previousStance.abstain":"abstain","consensus.previousStance.needs_human":"needs human review","consensus.automatic":"automatic","consensus.heartbeat.runningProvider":"[Consensus engine] {provider} in progress...","consensus.heartbeat.runningSummary":"[Consensus engine] round {round} in progress | accepted {accepted} | unresolved {unresolved}","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research preprocessing artifacts","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader final document target","researchConsensus.status":"Status","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"Preprocessing status","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"Raw submissions","researchDoc.originalFindings":"Original findings","researchDoc.supplementLedger":"Supplement request log","researchDoc.mergedGroupsSection":"Merged groups","researchDoc.openDebateItemsSection":"Open debate items","researchDoc.roundPackets":"Round packets and raw responses","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}"};var Qk={"report.header.topic":"\uC8FC\uC81C","report.header.participants":"\uCC38\uAC00\uC790","report.header.individualDocs":"\uAC1C\uBCC4 \uAC80\uD1A0 \uBB38\uC11C","report.table.proposer":"\uC81C\uC548\uC790","report.table.opinion":"\uC758\uACAC","report.table.severity":"\uC911\uC694\uB3C4","report.table.agreement":"\uB3D9\uC758\uC728","report.section.mainTable":"\uC81C\uC548 \uC6D0\uC7A5","report.section.dissentDetail":"\uBBF8\uD569\uC758 \uD56D\uBAA9 \uC0C1\uC138","report.section.contributionSummary":"AI \uAE30\uC5EC\uB3C4 \uC694\uC57D","report.contribution.ai":"AI","report.contribution.proposed":"\uC81C\uC548","report.contribution.accepted":"\uCC44\uD0DD","report.contribution.revises":"\uC218\uC815 \uC694\uCCAD","report.contribution.abstains":"\uAE30\uAD8C","report.footer.synthesisPath":"\uCD5C\uC885 \uD569\uC758 \uBB38\uC11C","report.footer.debatePath":"\uD1A0\uB860 \uAE30\uB85D","report.footer.pendingSynthesis":"(\uB9AC\uB354 \uC2B9\uC778 \uB300\uAE30 \uC911)","report.status.running":"\uC9C4\uD589 \uC911","report.status.readyForApproval":"\uC2B9\uC778 \uB300\uAE30","report.status.consensus":"\uD569\uC758 \uB3C4\uB2EC","report.status.escalated":"\uC5D0\uC2A4\uCEEC\uB808\uC774\uC158","report.status.approved":"\uC2B9\uC778\uB428","report.status.rejected":"\uAE30\uAC01\uB428","report.status.leaderTimeout":"\uB9AC\uB354 \uC751\uB2F5 \uC2DC\uAC04 \uCD08\uACFC","report.status.partialCompleted":"\uBD80\uBD84 \uC644\uB8CC","report.status.needsHumanReview":"\uC0AC\uB78C \uAC80\uD1A0 \uD544\uC694","report.status.error":"\uC624\uB958","synthesis.status.consensus":"\uD569\uC758 \uB3C4\uB2EC","synthesis.status.escalated":"\uBD80\uBD84 \uD569\uC758 / \uC5D0\uC2A4\uCEEC\uB808\uC774\uC158","synthesis.section.acceptedItems":"\uCC44\uD0DD \uD56D\uBAA9","synthesis.section.rejectedItems":"\uAE30\uAC01 / \uCCA0\uD68C \uD56D\uBAA9","synthesis.section.openItems":"\uBBF8\uACB0 \uD56D\uBAA9","synthesis.section.sources":"\uADFC\uAC70","synthesis.narration.consensusIn":"\uC804\uCCB4 {max}\uB77C\uC6B4\uB4DC \uC911 {round}\uB77C\uC6B4\uB4DC\uC5D0\uC11C \uD569\uC758\uC5D0 \uB3C4\uB2EC\uD558\uC600\uC2B5\uB2C8\uB2E4.","synthesis.narration.escalated":"{round}\uB77C\uC6B4\uB4DC \uB3D9\uC548 \uD569\uC758\uC5D0 \uC774\uB974\uC9C0 \uBABB\uD558\uC5EC \uC0AC\uC6A9\uC790 \uD310\uB2E8\uC73C\uB85C \uC5D0\uC2A4\uCEEC\uB808\uC774\uC158\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","synthesis.narration.leaderNote":"\uB9AC\uB354 \uBA54\uBAA8","approval.pending":"\uB9AC\uB354 \uC2B9\uC778\uC744 \uAE30\uB2E4\uB9AC\uACE0 \uC788\uC2B5\uB2C8\uB2E4. `agent_debate_approve`, `agent_debate_continue`, `agent_debate_reject` \uC911 \uD558\uB098\uB97C \uD638\uCD9C\uD574 \uC8FC\uC2ED\uC2DC\uC624.","approval.timeout":"\uB9AC\uB354 \uACB0\uC815\uC744 \uAE30\uB2E4\uB9AC\uB2E4 \uC138\uC158\uC774 \uC2DC\uAC04 \uCD08\uACFC\uB418\uC5C8\uC2B5\uB2C8\uB2E4({hours}\uC2DC\uAC04).","moderator.narration.roundHeader":"{round}/{max} \uB77C\uC6B4\uB4DC","moderator.narration.consensusInRound":"{round}\uB77C\uC6B4\uB4DC \uB9CC\uC5D0 \uD569\uC758\uC5D0 \uB3C4\uB2EC\uD558\uC600\uC2B5\uB2C8\uB2E4.","moderator.narration.dissentDetailHeader":"\uBBF8\uD574\uACB0 \uD56D\uBAA9","moderator.narration.noInterest":"\uCC38\uAC00\uC790 \uAD00\uC2EC \uC5C6\uC74C","moderator.narration.participantDropout":"\uCC38\uAC00\uC790 `{participantId}`\uAC00 \uBC18\uBCF5\uC801 \uC2E4\uD328\uB85C \uC778\uD574 \uC0AC\uC6A9 \uBD88\uAC00 \uC0C1\uD0DC\uB85C \uD45C\uC2DC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","moderator.narration.participantTimeout":"\uCC38\uAC00\uC790 `{participantId}`\uAC00 \uC774\uBC88 \uB77C\uC6B4\uB4DC\uC5D0 \uC751\uB2F5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.","moderator.narration.leaderTimeoutFooter":"\uB9AC\uB354 \uC751\uB2F5 \uC2DC\uAC04 \uCD08\uACFC","moderator.narration.rejected":"\uB9AC\uB354\uC5D0 \uC758\uD574 \uC138\uC158\uC774 \uAE30\uAC01\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","moderator.narration.approved":"\uB9AC\uB354\uC5D0 \uC758\uD574 \uC138\uC158\uC774 \uC2B9\uC778\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","moderator.narration.aliasClarification":"\uBCC4\uCE6D \uD655\uC778 \uB2E8\uACC4","prompt.system.moderator":"\uB2F9\uC2E0\uC740 \uAD6C\uC870\uD654\uB41C \uB2E4\uC911 AI \uD1A0\uB860\uC758 \uC911\uC7AC\uC790\uC785\uB2C8\uB2E4. \uC81C\uC548\uC744 \uC9C1\uC811 \uC791\uC131\uD558\uC9C0 \uC54A\uC73C\uBA70, \uAD6C\uC870\uD654\uB41C \uD22C\uD45C\uB97C \uC9D1\uACC4\uD558\uACE0 \uC911\uB9BD\uC801\uC778 \uD569\uC758\uC548\uC744 \uC0B0\uCD9C\uD569\uB2C8\uB2E4. \uD504\uB85C\uD1A0\uCF5C\uC774 \uC815\uC758\uD55C \uCC44\uB110 \uC548\uC5D0\uC11C\uB9CC \uC751\uB2F5\uD558\uC2ED\uC2DC\uC624.","error.participantTimeout":"\uCC38\uAC00\uC790 `{participantId}`\uAC00 {seconds}\uCD08 \uB0B4\uC5D0 \uC751\uB2F5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.","error.parseFailure":"\uCC38\uAC00\uC790 `{participantId}`\uC758 `<{tag}>` \uBE14\uB85D\uC744 \uD574\uC11D\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.","error.sessionNotFound":"\uD1A0\uB860 \uC138\uC158 `{sessionId}`\uC744(\uB97C) \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","error.invalidState":"\uC0C1\uD0DC `{state}`\uC5D0\uC11C\uB294 `{operation}` \uC791\uC5C5\uC744 \uC218\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","error.unknownLocaleFallback":"\uC54C \uC218 \uC5C6\uB294 \uB85C\uCF00\uC77C `{locale}`; \uAE30\uBCF8\uAC12 `{fallback}`(\uC73C)\uB85C \uB300\uCCB4\uD569\uB2C8\uB2E4.","askUser.escalation.header":"\uCD5C\uB300 \uB77C\uC6B4\uB4DC\uC5D0 \uB3C4\uB2EC\uD558\uC600\uC73C\uB098 \uD569\uC758\uC5D0 \uC774\uB974\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4","askUser.escalation.question":"\uC5B4\uB5BB\uAC8C \uC9C4\uD589\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?","askUser.escalation.continue":"{rounds}\uB77C\uC6B4\uB4DC \uCD94\uAC00 \uC9C4\uD589","askUser.escalation.escalate":"\uD569\uC758 \uC5C6\uC774 \uC5D0\uC2A4\uCEEC\uB808\uC774\uC158","askUser.escalation.stop":"\uD1A0\uB860 \uC885\uB8CC","provider.readiness.section":"Provider \uC900\uBE44 \uC0C1\uD0DC","provider.readiness.actionRequired":"\uC0AC\uC6A9\uC790 \uD655\uC778 \uD544\uC694","provider.readiness.status.queued":"\uB300\uAE30 \uC911","provider.readiness.status.checking":"\uD655\uC778 \uC911","provider.readiness.status.ready":"\uC900\uBE44\uB428","provider.readiness.status.warming":"\uC608\uC5F4 \uC911","provider.readiness.status.warm":"\uC608\uC5F4\uB428","provider.readiness.status.unavailable":"\uC0AC\uC6A9 \uBD88\uAC00","provider.readiness.status.auth-needed":"\uC778\uC99D \uD544\uC694","provider.readiness.status.workspace-blocked":"\uC791\uC5C5 \uD3F4\uB354 \uC2E0\uB8B0 \uCC28\uB2E8","provider.readiness.status.disabled":"\uBE44\uD65C\uC131\uD654\uB428","provider.readiness.status.skipped":"\uAC74\uB108\uB700","provider.readiness.status.unknown":"\uC54C \uC218 \uC5C6\uC74C","provider.routing.section":"Provider \uB77C\uC6B0\uD305","provider.routing.selected":"\uC120\uD0DD\uB428","provider.routing.skipped":"\uC81C\uC678\uB428","provider.routing.traceData":"trace \uB370\uC774\uD130","provider.trust.workspaceBlocked":"{providerId}\uAC00 \uC774 \uC791\uC5C5 \uD3F4\uB354\uB97C \uC2E0\uB8B0\uD558\uC9C0 \uC54A\uC544 \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers}\uAC00 \uC774 \uC791\uC5C5 \uD3F4\uB354\uB97C \uC2E0\uB8B0\uD558\uC9C0 \uC54A\uC544 \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: {workspaceBaseDir}","provider.trust.question":"{providerId}\uC5D0 \uC774 \uD504\uB85C\uC81D\uD2B8 \uD3F4\uB354\uB9CC trusted\uB85C \uCD94\uAC00\uD560\uAE4C\uC694?","provider.trust.batch.question":"\uC9C0\uC6D0\uB418\uB294 provider\uC5D0 \uC774 \uD504\uB85C\uC81D\uD2B8 \uD3F4\uB354\uB9CC trusted\uB85C \uCD94\uAC00\uD560\uAE4C\uC694?","provider.trust.option.apply":"\uC774 \uD504\uB85C\uC81D\uD2B8\uB9CC \uCD94\uAC00\uD558\uACE0 \uACC4\uC18D","provider.trust.option.skip":"{providerId} \uC81C\uC678\uD558\uACE0 \uACC4\uC18D","provider.trust.batch.option.skip":"\uD574\uB2F9 provider \uC81C\uC678\uD558\uACE0 \uACC4\uC18D","provider.trust.option.abort":"\uC911\uB2E8","provider.trust.apply.approvedRequired":"\uC791\uC5C5 \uD3F4\uB354 trust \uC124\uC815\uC740 \uC0AC\uC6A9\uC790\uC758 \uBA85\uC2DC\uC801 \uC2B9\uC778 \uD6C4\uC5D0\uB9CC \uBCC0\uACBD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","provider.trust.apply.workspaceRequired":"\uC791\uC5C5 \uD3F4\uB354 trust \uC124\uC815\uC744 \uBCC0\uACBD\uD558\uB824\uBA74 \uB300\uC0C1 workspace \uD3F4\uB354\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.","provider.trust.apply.unsupported":"{providerId}\uB294 \uC790\uB3D9 \uC791\uC5C5 \uD3F4\uB354 trust \uC5C5\uB370\uC774\uD2B8\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","provider.trust.apply.result":"{providerId} \uC791\uC5C5 \uD3F4\uB354 trust \uACB0\uACFC: {status} ({workspaceBaseDir})","provider.trust.batch.resultHeader":"Provider \uC791\uC5C5 \uD3F4\uB354 trust \uACB0\uACFC","common.yes":"\uC608","common.no":"\uC544\uB2C8\uC694","common.none":"(\uC5C6\uC74C)","common.default":"(\uAE30\uBCF8\uAC12)","common.unknown":"(\uC54C \uC218 \uC5C6\uC74C)","common.notRecorded":"(\uAE30\uB85D \uC5C6\uC74C)","common.notGeneratedYet":"(\uC544\uC9C1 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC74C)","common.available":"\uC0AC\uC6A9 \uAC00\uB2A5","common.unavailable":"\uC0AC\uC6A9 \uBD88\uAC00","common.enabled":"\uD65C\uC131\uD654\uB428","common.disabled":"\uBE44\uD65C\uC131\uD654\uB428","common.ok":"\uC815\uC0C1","common.degraded":"\uC131\uB2A5 \uC800\uD558","common.error":"\uC624\uB958","common.failed":"\uC2E4\uD328","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra \uC124\uC815","setup.currentConfig.notFound":"\uD604\uC7AC \uC124\uC815: \uC5C6\uC74C","setup.currentConfig.present":"\uD604\uC7AC \uC124\uC815: \uC788\uC74C","setup.currentConfig.presentNoProviders":"\uD604\uC7AC \uC124\uC815: \uC788\uC74C(provider \uD65C\uC131\uD654 \uC5C6\uC74C)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"\uC124\uC815 \uD544\uC694: \uC608","setup.recommendedNextAction":"\uAD8C\uC7A5 \uB2E4\uC74C \uC870\uCE58: \uC0AC\uC6A9\uC790\uC5D0\uAC8C provider \uC120\uD0DD\uACFC locale\uC744 \uD655\uC778\uD55C \uB4A4 setup_apply\uB97C \uD638\uCD9C\uD558\uC138\uC694.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"\uAC10\uC9C0\uB41C provider","setup.detected.none":"(\uAC10\uC9C0\uB41C \uD56D\uBAA9 \uC5C6\uC74C)","setup.hostAssets":"Host \uC790\uC0B0","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra \uC124\uC815 \uBBF8\uB9AC\uBCF4\uAE30","setup.apply.appliedTitle":"Agestra \uC124\uC815 \uC801\uC6A9\uB428","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"\uB4F1\uB85D\uB41C Provider","provider.list.none":"\uB4F1\uB85D\uB41C provider\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","provider.health.title":"Health \uD655\uC778 \uACB0\uACFC","provider.health.none":"\uD655\uC778\uD560 provider\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"\uC0C1\uD0DC","provider.label.message":"\uBA54\uC2DC\uC9C0","provider.label.error":"\uC624\uB958","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"Workspace Trust \uC0AC\uC804 \uD655\uC778","workspaceTrust.policy":"\uC815\uCC45","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"\uD0D0\uC9C0","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"\uB0B4\uC6A9\uC740 \uC77D\uC9C0 \uC54A\uC74C","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"\uCC28\uB2E8\uB428","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus \uC138\uC158","consensus.label.ledger":"Consensus \uC7A5\uBD80","consensus.label.sessionId":"Session ID","consensus.label.status":"\uC0C1\uD0DC","consensus.label.phase":"\uB2E8\uACC4","consensus.label.updated":"\uC5C5\uB370\uC774\uD2B8","consensus.label.created":"Created","consensus.label.round":"\uB77C\uC6B4\uB4DC","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider \uC900\uBE44 \uC0C1\uD0DC","consensus.section.participantProgress":"\uCC38\uAC00\uC790 \uC9C4\uD589 \uC0C1\uD0DC","consensus.section.pendingHostTurns":"\uB300\uAE30 \uC911\uC778 host turn","consensus.section.documents":"\uBB38\uC11C","consensus.section.roundState":"\uB77C\uC6B4\uB4DC \uC0C1\uD0DC","consensus.section.runEvidence":"\uC2E4\uD589 \uC99D\uAC70","consensus.section.runInspector":"\uC2E4\uD589 \uAC80\uC0AC","consensus.section.recentActivity":"\uCD5C\uADFC \uD65C\uB3D9","consensus.section.allowedActions":"\uD5C8\uC6A9\uB41C \uC791\uC5C5","consensus.section.researchPreprocessorStatus":"Research \uC804\uCC98\uB9AC \uC0C1\uD0DC","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.starting":"starting","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate","consensus.action.nextStep":"\uB2E4\uC74C \uB2E8\uACC4 - \uD558\uB098\uB97C \uC120\uD0DD\uD558\uC138\uC694:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"\uACB0\uB860 \uC2B9\uC778","consensus.action.extend":"\uD1A0\uB860 \uC5F0\uC7A5","consensus.action.reject":"\uC138\uC158 \uC911\uB2E8","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'\uCC38\uAC00\uC790 "{participantId}"\uC758 host turn\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.',"consensus.submit.remaining":"\uB0A8\uC740 host turn","consensus.submit.allIn":"\uB300\uAE30 \uC911\uC778 host turn\uC774 \uBAA8\uB450 \uB4E4\uC5B4\uC654\uC2B5\uB2C8\uB2E4. Consensus \uB77C\uC6B4\uB4DC\uAC00 \uACE7 \uC7AC\uAC1C\uB429\uB2C8\uB2E4.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"\uC218\uB834 \uB300\uAE30","consensus.research.state.noOpenItems":"\uC218\uB834 \uB300\uAE30 \uD56D\uBAA9 \uC5C6\uC74C","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"\uD1A0\uB860 \uCDE8\uD569 \uBB38\uC11C","consensusDoc.debate.sourceLedger":"\uC0C1\uD0DC \uC6D0\uBCF8 JSON","consensusDoc.debate.participants":"\uCC38\uC5EC AI","consensusDoc.debate.currentRound":"\uD604\uC7AC \uB77C\uC6B4\uB4DC","consensusDoc.dashboard":"\uD56D\uBAA9 \uD604\uD669\uD310","consensusDoc.item.id":"ID","consensusDoc.item.item":"\uD56D\uBAA9","consensusDoc.item.status":"\uC0C1\uD0DC","consensusDoc.item.proposer":"\uC81C\uC2DC\uC790","consensusDoc.item.agreement":"\uB3D9\uC758 \uD604\uD669","consensusDoc.item.currentConclusion":"\uD604\uC7AC \uACB0\uB860/\uB9C9\uD78C \uC774\uC720","consensusDoc.item.purpose":"\uBB34\uC5C7\uC744 \uC704\uD55C \uD56D\uBAA9\uC778\uAC00","consensusDoc.item.originalClaim":"\uC6D0 \uC8FC\uC7A5","consensusDoc.item.currentSummary":"\uD604\uC7AC \uC815\uB9AC","consensusDoc.item.conclusion":"\uACB0\uB860","consensusDoc.item.stance":"\uC785\uC7A5","consensusDoc.item.content":"\uB0B4\uC6A9","consensusDoc.item.newItemProposal":"\uC0C8 \uD56D\uBAA9 \uC81C\uC548","consensusDoc.item.previousStanceMissing":"\uC774\uC804 \uC785\uC7A5 \uBBF8\uAE30\uB85D","consensusDoc.item.stanceChanged":"\uC785\uC7A5 \uBCC0\uACBD: \uC774\uC804 {previous}\uC5D0\uC11C \uD604\uC7AC {current}","consensusDoc.item.respondsTo":"\uC751\uB2F5 \uB300\uC0C1","consensusDoc.item.persuasionEvidence":"\uC124\uB4DD \uADFC\uAC70","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"\uD55C\uB208\uC5D0 \uBCF4\uAE30","consensusDoc.synthesis.topic":"\uC8FC\uC81C","consensusDoc.synthesis.participants":"\uCC38\uC5EC AI","consensusDoc.synthesis.roundReached":"\uD569\uC758\uAE4C\uC9C0 \uB3C4\uB2EC\uD55C \uB77C\uC6B4\uB4DC","consensusDoc.synthesis.acceptedCount":"\uD569\uC758\uB41C \uD56D\uBAA9","consensusDoc.synthesis.excludedCount":"\uC81C\uC678 \uD569\uC758 \uD56D\uBAA9","consensusDoc.synthesis.openCount":"\uBBF8\uD569\uC758 / \uC758\uACAC \uD544\uC694 \uD56D\uBAA9","consensusDoc.synthesis.ledger":"JSON \uC7A5\uBD80","consensusDoc.synthesis.debateDocument":"\uCDE8\uD569\uBB38\uC11C","consensusDoc.synthesis.finalTable":"\uCD5C\uC885 \uACB0\uB860\uD45C","consensusDoc.synthesis.finalStatus":"\uCD5C\uC885 \uC0C1\uD0DC","consensusDoc.synthesis.finalDecision":"\uACB0\uB860","consensusDoc.synthesis.agreedProviders":"\uB3D9\uC758\uD55C AI","consensusDoc.synthesis.disagreedProviders":"\uBC18\uB300\uD55C AI","consensusDoc.synthesis.opinionProviders":"\uC758\uACAC/\uC218\uC815 \uC81C\uC548","consensusDoc.synthesis.accepted":"\uD569\uC758\uB41C \uD56D\uBAA9","consensusDoc.synthesis.excluded":"\uC81C\uC678 \uD569\uC758 \uD56D\uBAA9","consensusDoc.synthesis.open":"\uBBF8\uD569\uC758 / \uC758\uACAC \uD544\uC694 \uD56D\uBAA9","consensusDoc.synthesis.followUp":"\uB2E4\uC74C\uC5D0 \uD574\uC57C \uD560 \uC77C","consensusDoc.synthesis.noDecisions":"\uACB0\uC815\uB41C \uD56D\uBAA9\uC774 \uC5C6\uB2E4.","consensusDoc.synthesis.followAccepted":"{id}: \uCC44\uD0DD \uACB0\uC815({title})\uC744 \uBC18\uC601\uD558\uB418, {reason}","consensusDoc.synthesis.followExcluded":"{id}: \uC81C\uC678 \uACB0\uC815({title})\uC740 \uC7AC\uB3C4\uC785\uD558\uC9C0 \uC54A\uB294\uB2E4. {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} \uCD94\uAC00 \uADFC\uAC70 \uD655\uC778 \uB610\uB294 \uC0AC\uC6A9\uC790 \uD310\uB2E8\uC774 \uD544\uC694\uD558\uB2E4.","consensusDoc.synthesis.providerContribution":"\uD504\uB85C\uBC14\uC774\uB354\uBCC4 \uC131\uACFC","consensusDoc.synthesis.proposedCount":"\uC81C\uC548 \uC218","consensusDoc.synthesis.acceptedProposals":"\uD569\uC758\uB41C \uC81C\uC548","consensusDoc.synthesis.exclusionHelp":"\uC81C\uC678 \uD569\uC758\uC5D0 \uAE30\uC5EC","consensusDoc.synthesis.dissentContribution":"\uBC18\uB300/\uC758\uACAC\uC73C\uB85C \uAE30\uC5EC\uD55C \uD56D\uBAA9","consensusDoc.synthesis.characteristic":"\uD2B9\uC9D5","consensusDoc.references":"\uCC38\uC870 \uBB38\uC11C","consensusDoc.references.validationJson":"\uAC80\uC99D JSON","consensusDoc.references.synthesis":"\uACB0\uB860\uBB38\uC11C","consensusDoc.references.inputDocument":"{provider} \uC785\uB825 \uBB38\uC11C","consensusDoc.unresolvedExplanation":"\uBBF8\uD569\uC758 \uD56D\uBAA9 \uC124\uBA85","consensusDoc.documentPaths":"\uBB38\uC11C \uACBD\uB85C","consensusDoc.noItems":"(\uC5C6\uC74C)","consensusDoc.decision.purpose":"\uBB34\uC5C7\uC744 \uC704\uD55C \uD56D\uBAA9","consensusDoc.decision.finalDecision":"\uCD5C\uC885 \uACB0\uC815","consensusDoc.decision.agreedProviders":"\uB3D9\uC758\uD55C AI","consensusDoc.decision.disagreedProviders":"\uBC18\uB300\uD55C AI","consensusDoc.decision.currentStances":"\uD604\uC7AC \uC785\uC7A5","consensusDoc.decision.changeHistory":"\uBCC0\uACBD \uC5EC\uBD80","consensusDoc.decision.sourceLocations":"\uD1A0\uB860/\uADFC\uAC70 \uC704\uCE58","consensusDoc.decision.blockedDecision":"\uB9C9\uD78C \uACB0\uC815","consensusDoc.decision.howToResolve":"\uD574\uACB0\uD558\uB824\uBA74: \uBC18\uB300/\uC758\uACAC\uC744 \uB0B8 AI\uAC00 \uC694\uAD6C\uD55C \uADFC\uAC70\uB97C \uBCF4\uAC15\uD558\uAC70\uB098 \uC0AC\uC6A9\uC790\uAC00 \uCD5C\uC885 \uBC29\uD5A5\uC744 \uC120\uD0DD\uD574\uC57C \uD55C\uB2E4.","consensusDoc.decision.reason":"\uACB0\uC815 \uC774\uC720","consensusDoc.decision.keyComments":"\uC8FC\uC694 \uC758\uACAC","consensusDoc.decision.acceptedOriginal":"\uC6D0\uC548 \uADF8\uB300\uB85C \uD569\uC758\uB428.","consensusDoc.decision.excludedOriginal":"\uC6D0\uC548\uC774 \uC81C\uC678 \uD569\uC758\uB85C \uB05D\uB0AC\uB2E4.","consensusDoc.decision.noFinalChange":"\uC544\uC9C1 \uD655\uC815\uB41C \uBCC0\uACBD\uC548 \uC5C6\uC74C.","consensusDoc.decision.revisionFrom":"{parentId}\uC5D0\uC11C \uB098\uC628 \uC218\uC815\uC548\uC774 \uD604\uC7AC \uD56D\uBAA9\uC774\uB2E4.","consensusDoc.decision.revisionLedTo":"\uC218\uC815 \uC81C\uC548\uC774 {itemIds} \uD56D\uBAA9\uC73C\uB85C \uC774\uC5B4\uC84C\uB2E4.","consensusDoc.reason.acceptedBase":"\uCC44\uD0DD\uB41C \uB0B4\uC6A9\uC740 {base}","consensusDoc.reason.excludedBase":"\uC81C\uC678\uB41C \uB0B4\uC6A9\uC740 {base}","consensusDoc.reason.keyEvidence":"\uC8FC\uC694 \uADFC\uAC70\uB294 {evidence}","consensusDoc.reason.exclusionEvidence":"\uC81C\uC678 \uD310\uB2E8\uC758 \uADFC\uAC70\uB294 {evidence}","consensusDoc.reason.needImplementationCheck":"\uBA85\uC2DC \uADFC\uAC70\uAC00 \uBD80\uC871\uD55C \uBD80\uBD84\uC740 \uAD6C\uD604 \uC804 \uCF54\uB4DC \uB610\uB294 \uBB38\uC11C \uD655\uC778\uC73C\uB85C \uBCF4\uAC15\uD574\uC57C \uD55C\uB2E4.","consensusDoc.reason.needDissentCheck":"\uC81C\uC678 \uC774\uC720\uB294 \uCC38\uAC00\uC790 \uC758\uACAC\uC758 \uBC18\uB300 \uB610\uB294 \uC704\uD5D8 \uC9C0\uC801\uC744 \uAE30\uC900\uC73C\uB85C \uD655\uC778\uD574\uC57C \uD55C\uB2E4.","consensusDoc.reason.sourceConstraint":"\uADFC\uAC70 \uC704\uCE58\uB294 {refs}\uC5D0 \uB0A8\uC544 \uC788\uB2E4.","consensusDoc.reason.sourceConstraintMissing":"\uAD6C\uD604 \uC2DC \uCD94\uAC00 \uADFC\uAC70\uAC00 \uD544\uC694\uD558\uBA74 \uCDE8\uD569\uBB38\uC11C\uC758 \uCC38\uAC00\uC790 \uC758\uACAC\uC744 \uBA3C\uC800 \uD655\uC778\uD574\uC57C \uD55C\uB2E4.","consensusDoc.reason.blockedNoEvidence":"\uB0A8\uC740 \uC7C1\uC810\uC740 \uCD94\uAC00 \uADFC\uAC70 \uB610\uB294 \uC0AC\uC6A9\uC790 \uC120\uD0DD\uC774 \uD544\uC694\uD558\uB2E4.","consensusDoc.blocker.none":"\uC544\uC9C1 \uBAA8\uB4E0 \uCC38\uAC00\uC790\uC758 \uBA85\uC2DC \uB3D9\uC758\uAC00 \uBAA8\uC774\uC9C0 \uC54A\uC558\uB2E4.","consensusDoc.blocker.prefix":"\uB9C9\uD78C \uC774\uC720","consensusDoc.conclusion.prefix":"\uACB0\uB860","consensusDoc.providerContribution.proposed":"\uC81C\uC548 \uAE30\uC5EC","consensusDoc.providerContribution.reviewed":"\uAC80\uD1A0 \uAE30\uC5EC","consensusDoc.runInspection.problemSummary":"\uBB38\uC81C \uC694\uC57D","consensusDoc.runInspection.noDiagnostics":"\uAE30\uB85D\uB41C \uC2E4\uD328 \uC9C4\uB2E8 \uC5C6\uC74C","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"\uB3D9\uC758","consensus.stance.disagree":"\uBC18\uB300","consensus.stance.opinion":"\uC758\uACAC","consensus.stance.revise":"\uC218\uC815 \uC81C\uC548","consensus.stance.no_response":"\uC751\uB2F5 \uC5C6\uC74C","consensus.stance.not_assigned":"\uC774\uBC88 \uD134 \uC81C\uC678","consensus.previousStance.abstain":"\uAE30\uAD8C","consensus.previousStance.needs_human":"\uC0AC\uB78C \uD310\uB2E8 \uD544\uC694","consensus.automatic":"\uC790\uB3D9","consensus.heartbeat.runningProvider":"[\uD569\uC758 \uC5D4\uC9C4] {provider} \uC9C4\uD589 \uC911...","consensus.heartbeat.runningSummary":"[\uD569\uC758 \uC5D4\uC9C4] {round}\uB77C\uC6B4\uB4DC \uC9C4\uD589 \uC911 | \uD569\uC758 {accepted}\uAC74 | \uBBF8\uD569\uC758 {unresolved}\uAC74","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research \uC804\uCC98\uB9AC artifact","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader \uCD5C\uC885 \uBB38\uC11C \uB300\uC0C1","researchConsensus.status":"\uC0C1\uD0DC","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"\uC804\uCC98\uB9AC \uC0C1\uD0DC","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"\uC870\uC0AC \uC81C\uCD9C \uC6D0\uBB38","researchDoc.originalFindings":"\uC6D0 \uC81C\uCD9C findings","researchDoc.supplementLedger":"\uBCF4\uC644 \uC694\uCCAD \uAE30\uB85D","researchDoc.mergedGroupsSection":"\uBCD1\uD569 \uADF8\uB8F9","researchDoc.openDebateItemsSection":"\uD1A0\uB860 \uB300\uAE30 \uD56D\uBAA9","researchDoc.roundPackets":"\uB77C\uC6B4\uB4DC \uC804\uB2EC/\uC751\uB2F5 \uC6D0\uBB38","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}"};var Xk={"report.header.topic":"\u30C6\u30FC\u30DE","report.header.participants":"\u53C2\u52A0\u8005","report.header.individualDocs":"\u500B\u5225\u30EC\u30D3\u30E5\u30FC\u6587\u66F8","report.table.proposer":"\u63D0\u6848\u8005","report.table.opinion":"\u610F\u898B","report.table.severity":"\u91CD\u5927\u5EA6","report.table.agreement":"\u5408\u610F\u7387","report.section.mainTable":"\u63D0\u6848\u53F0\u5E33","report.section.dissentDetail":"\u672A\u5408\u610F\u9805\u76EE\u306E\u8A73\u7D30","report.section.contributionSummary":"AI \u8CA2\u732E\u5EA6\u30B5\u30DE\u30EA\u30FC","report.contribution.ai":"AI","report.contribution.proposed":"\u63D0\u6848","report.contribution.accepted":"\u63A1\u629E","report.contribution.revises":"\u4FEE\u6B63\u8981\u8ACB","report.contribution.abstains":"\u68C4\u6A29","report.footer.synthesisPath":"\u6700\u7D42\u5408\u610F\u6587\u66F8","report.footer.debatePath":"\u8A0E\u8B70\u8A18\u9332","report.footer.pendingSynthesis":"(\u30EA\u30FC\u30C0\u30FC\u627F\u8A8D\u5F85\u3061)","report.status.running":"\u9032\u884C\u4E2D","report.status.readyForApproval":"\u627F\u8A8D\u5F85\u3061","report.status.consensus":"\u5408\u610F\u5F62\u6210","report.status.escalated":"\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3","report.status.approved":"\u627F\u8A8D\u6E08\u307F","report.status.rejected":"\u5374\u4E0B","report.status.leaderTimeout":"\u30EA\u30FC\u30C0\u30FC\u5FDC\u7B54\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8","report.status.partialCompleted":"\u90E8\u5206\u5B8C\u4E86","report.status.needsHumanReview":"\u4EBA\u306B\u3088\u308B\u78BA\u8A8D\u304C\u5FC5\u8981","report.status.error":"\u30A8\u30E9\u30FC","synthesis.status.consensus":"\u5408\u610F\u306B\u9054\u3057\u307E\u3057\u305F","synthesis.status.escalated":"\u90E8\u5206\u5408\u610F / \u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3","synthesis.section.acceptedItems":"\u63A1\u629E\u9805\u76EE","synthesis.section.rejectedItems":"\u5374\u4E0B / \u53D6\u308A\u4E0B\u3052\u9805\u76EE","synthesis.section.openItems":"\u672A\u6C7A\u9805\u76EE","synthesis.section.sources":"\u6839\u62E0","synthesis.narration.consensusIn":"\u5168 {max} \u30E9\u30A6\u30F3\u30C9\u4E2D {round} \u30E9\u30A6\u30F3\u30C9\u76EE\u3067\u5408\u610F\u306B\u9054\u3057\u307E\u3057\u305F\u3002","synthesis.narration.escalated":"{round} \u30E9\u30A6\u30F3\u30C9\u7D4C\u904E\u3057\u3066\u3082\u5408\u610F\u306B\u81F3\u3089\u305A\u3001\u30E6\u30FC\u30B6\u30FC\u5224\u65AD\u3067\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3\u3055\u308C\u307E\u3057\u305F\u3002","synthesis.narration.leaderNote":"\u30EA\u30FC\u30C0\u30FC\u30E1\u30E2","approval.pending":"\u30EA\u30FC\u30C0\u30FC\u627F\u8A8D\u3092\u5F85\u6A5F\u3057\u3066\u3044\u307E\u3059\u3002`agent_debate_approve`\u3001`agent_debate_continue`\u3001`agent_debate_reject` \u306E\u3044\u305A\u308C\u304B\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002","approval.timeout":"\u30EA\u30FC\u30C0\u30FC\u5224\u65AD\u3092\u5F85\u6A5F\u4E2D\u306B\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F({hours} \u6642\u9593)\u3002","moderator.narration.roundHeader":"\u30E9\u30A6\u30F3\u30C9 {round}/{max}","moderator.narration.consensusInRound":"{round} \u30E9\u30A6\u30F3\u30C9\u76EE\u3067\u5408\u610F\u306B\u9054\u3057\u307E\u3057\u305F\u3002","moderator.narration.dissentDetailHeader":"\u672A\u89E3\u6C7A\u9805\u76EE","moderator.narration.noInterest":"\u53C2\u52A0\u8005\u306E\u95A2\u5FC3\u306A\u3057","moderator.narration.participantDropout":"\u53C2\u52A0\u8005 `{participantId}` \u306F\u7E70\u308A\u8FD4\u3057\u306E\u5931\u6557\u306B\u3088\u308A\u5229\u7528\u4E0D\u53EF\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u307E\u3057\u305F\u3002","moderator.narration.participantTimeout":"\u53C2\u52A0\u8005 `{participantId}` \u306F\u4ECA\u56DE\u306E\u30E9\u30A6\u30F3\u30C9\u3067\u5FDC\u7B54\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002","moderator.narration.leaderTimeoutFooter":"\u30EA\u30FC\u30C0\u30FC\u5FDC\u7B54\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8","moderator.narration.rejected":"\u30EA\u30FC\u30C0\u30FC\u306B\u3088\u308A\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u5374\u4E0B\u3055\u308C\u307E\u3057\u305F\u3002","moderator.narration.approved":"\u30EA\u30FC\u30C0\u30FC\u306B\u3088\u308A\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u627F\u8A8D\u3055\u308C\u307E\u3057\u305F\u3002","moderator.narration.aliasClarification":"\u5225\u540D\u78BA\u8A8D\u30D5\u30A7\u30FC\u30BA","prompt.system.moderator":"\u3042\u306A\u305F\u306F\u69CB\u9020\u5316\u30DE\u30EB\u30C1 AI \u8A0E\u8B70\u306E\u30E2\u30C7\u30EC\u30FC\u30BF\u30FC\u3067\u3059\u3002\u63D0\u6848\u3092\u81EA\u3089\u8D77\u6848\u305B\u305A\u3001\u69CB\u9020\u5316\u6295\u7968\u3092\u96C6\u8A08\u3057\u3066\u4E2D\u7ACB\u7684\u306A\u5408\u610F\u6848\u3092\u63D0\u793A\u3057\u307E\u3059\u3002\u30D7\u30ED\u30C8\u30B3\u30EB\u304C\u5B9A\u7FA9\u3059\u308B\u30C1\u30E3\u30CD\u30EB\u306E\u7BC4\u56F2\u5185\u3067\u306E\u307F\u5FDC\u7B54\u3057\u3066\u304F\u3060\u3055\u3044\u3002","error.participantTimeout":"\u53C2\u52A0\u8005 `{participantId}` \u306F {seconds} \u79D2\u4EE5\u5185\u306B\u5FDC\u7B54\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002","error.parseFailure":"\u53C2\u52A0\u8005 `{participantId}` \u306E `<{tag}>` \u30D6\u30ED\u30C3\u30AF\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002","error.sessionNotFound":"\u8A0E\u8B70\u30BB\u30C3\u30B7\u30E7\u30F3 `{sessionId}` \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002","error.invalidState":"\u72B6\u614B `{state}` \u3067\u306F\u64CD\u4F5C `{operation}` \u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\u3002","error.unknownLocaleFallback":"\u672A\u77E5\u306E\u30ED\u30B1\u30FC\u30EB `{locale}`\u3002\u65E2\u5B9A\u5024 `{fallback}` \u306B\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u3059\u3002","askUser.escalation.header":"\u6700\u5927\u30E9\u30A6\u30F3\u30C9\u306B\u9054\u3057\u307E\u3057\u305F\u304C\u5408\u610F\u306B\u81F3\u308A\u307E\u305B\u3093\u3067\u3057\u305F","askUser.escalation.question":"\u3069\u306E\u3088\u3046\u306B\u9032\u3081\u307E\u3059\u304B?","askUser.escalation.continue":"{rounds} \u30E9\u30A6\u30F3\u30C9\u8FFD\u52A0\u3057\u3066\u7D9A\u884C","askUser.escalation.escalate":"\u5408\u610F\u306A\u3057\u3067\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3","askUser.escalation.stop":"\u8A0E\u8B70\u3092\u7D42\u4E86","provider.readiness.section":"\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u6E96\u5099\u72B6\u614B","provider.readiness.actionRequired":"\u30E6\u30FC\u30B6\u30FC\u78BA\u8A8D\u304C\u5FC5\u8981","provider.readiness.status.queued":"\u5F85\u6A5F\u4E2D","provider.readiness.status.checking":"\u78BA\u8A8D\u4E2D","provider.readiness.status.ready":"\u6E96\u5099\u5B8C\u4E86","provider.readiness.status.warming":"\u30A6\u30A9\u30FC\u30E0\u30A2\u30C3\u30D7\u4E2D","provider.readiness.status.warm":"\u30A6\u30A9\u30FC\u30E0\u30A2\u30C3\u30D7\u6E08\u307F","provider.readiness.status.unavailable":"\u5229\u7528\u4E0D\u53EF","provider.readiness.status.auth-needed":"\u8A8D\u8A3C\u304C\u5FC5\u8981","provider.readiness.status.workspace-blocked":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u3067\u30D6\u30ED\u30C3\u30AF","provider.readiness.status.disabled":"\u7121\u52B9","provider.readiness.status.skipped":"\u30B9\u30AD\u30C3\u30D7","provider.readiness.status.unknown":"\u4E0D\u660E","provider.routing.section":"\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u30EB\u30FC\u30C6\u30A3\u30F3\u30B0","provider.routing.selected":"\u9078\u629E\u6E08\u307F","provider.routing.skipped":"\u9664\u5916\u6E08\u307F","provider.routing.traceData":"\u30C8\u30EC\u30FC\u30B9\u30C7\u30FC\u30BF","provider.trust.workspaceBlocked":"{providerId} \u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u4FE1\u983C\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3067\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers} \u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u4FE1\u983C\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3067\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093: {workspaceBaseDir}","provider.trust.question":"{providerId} \u306B\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3060\u3051\u3092 trusted \u3068\u3057\u3066\u8FFD\u52A0\u3057\u307E\u3059\u304B?","provider.trust.batch.question":"\u5BFE\u5FDC\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u306B\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3060\u3051\u3092 trusted \u3068\u3057\u3066\u8FFD\u52A0\u3057\u307E\u3059\u304B?","provider.trust.option.apply":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4FE1\u983C\u3057\u3066\u7D9A\u884C","provider.trust.option.skip":"{providerId} \u306A\u3057\u3067\u7D9A\u884C","provider.trust.batch.option.skip":"\u3053\u308C\u3089\u306E\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u306A\u3057\u3067\u7D9A\u884C","provider.trust.option.abort":"\u4E2D\u6B62","provider.trust.apply.approvedRequired":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u8A2D\u5B9A\u306F\u3001\u30E6\u30FC\u30B6\u30FC\u306E\u660E\u793A\u7684\u306A\u627F\u8A8D\u5F8C\u306B\u306E\u307F\u5909\u66F4\u3067\u304D\u307E\u3059\u3002","provider.trust.apply.workspaceRequired":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u8A2D\u5B9A\u3092\u5909\u66F4\u3059\u308B\u306B\u306F\u3001\u5BFE\u8C61\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u5FC5\u8981\u3067\u3059\u3002","provider.trust.apply.unsupported":"{providerId} \u306F\u81EA\u52D5\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u66F4\u65B0\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002","provider.trust.apply.result":"{providerId} \u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u7D50\u679C: {status} ({workspaceBaseDir})","provider.trust.batch.resultHeader":"\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC \u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u7D50\u679C","common.yes":"Yes","common.no":"No","common.none":"(none)","common.default":"(default)","common.unknown":"(unknown)","common.notRecorded":"(not recorded)","common.notGeneratedYet":"(not generated yet)","common.available":"Available","common.unavailable":"Unavailable","common.enabled":"enabled","common.disabled":"disabled","common.ok":"OK","common.degraded":"DEGRADED","common.error":"ERROR","common.failed":"failed","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7","setup.currentConfig.notFound":"Current config: not found","setup.currentConfig.present":"Current config: present","setup.currentConfig.presentNoProviders":"Current config: present (no providers enabled)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"Setup required: yes","setup.recommendedNextAction":"Recommended next action: ask the user for provider selection and locale, then call setup_apply.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"Detected providers","setup.detected.none":"(none detected)","setup.hostAssets":"Host assets","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra Setup Preview","setup.apply.appliedTitle":"Agestra Setup Applied","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"\u767B\u9332\u6E08\u307F\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC","provider.list.none":"No providers registered.","provider.health.title":"Health Check Results","provider.health.none":"No providers to check.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"Status","provider.label.message":"Message","provider.label.error":"Error","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u306E\u4E8B\u524D\u78BA\u8A8D","workspaceTrust.policy":"Policy","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"Discovery","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"contents not read","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"Blocked","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus Session","consensus.label.ledger":"Consensus Ledger","consensus.label.sessionId":"Session ID","consensus.label.status":"Status","consensus.label.phase":"Phase","consensus.label.updated":"Updated","consensus.label.created":"Created","consensus.label.round":"Round","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider Readiness","consensus.section.participantProgress":"Participant Progress","consensus.section.pendingHostTurns":"Pending Host Turns","consensus.section.documents":"Documents","consensus.section.roundState":"Round State","consensus.section.runEvidence":"\u5B9F\u884C\u8A3C\u8DE1","consensus.section.runInspector":"Run Inspector","consensus.section.recentActivity":"Recent Activity","consensus.section.allowedActions":"Allowed Actions","consensus.section.researchPreprocessorStatus":"Research Preprocessor Status","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.starting":"starting","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate","consensus.action.nextStep":"Next step - choose one:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"Approve synthesis","consensus.action.extend":"Extend debate","consensus.action.reject":"Abandon session","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'Host turn accepted for participant "{participantId}".',"consensus.submit.remaining":"Remaining pending host turns","consensus.submit.allIn":"All pending host turns are in. The consensus round will resume shortly.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"waiting for convergence","consensus.research.state.noOpenItems":"no open convergence items","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"Debate aggregation document","consensusDoc.debate.sourceLedger":"Source ledger JSON","consensusDoc.debate.participants":"Participating AIs","consensusDoc.debate.currentRound":"Current round","consensusDoc.dashboard":"Item dashboard","consensusDoc.item.id":"ID","consensusDoc.item.item":"Item","consensusDoc.item.status":"Status","consensusDoc.item.proposer":"Proposer","consensusDoc.item.agreement":"Agreement","consensusDoc.item.currentConclusion":"Current conclusion / blocker","consensusDoc.item.purpose":"Purpose","consensusDoc.item.originalClaim":"Original claim","consensusDoc.item.currentSummary":"Current summary","consensusDoc.item.conclusion":"Conclusion","consensusDoc.item.stance":"Stance","consensusDoc.item.content":"Content","consensusDoc.item.newItemProposal":"New item proposal","consensusDoc.item.previousStanceMissing":"previous stance not recorded","consensusDoc.item.stanceChanged":"Stance changed: from {previous} to {current}","consensusDoc.item.respondsTo":"Responds to","consensusDoc.item.persuasionEvidence":"Persuasion evidence","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"\u6982\u8981","consensusDoc.synthesis.topic":"Topic","consensusDoc.synthesis.participants":"Participating AIs","consensusDoc.synthesis.roundReached":"Rounds to consensus","consensusDoc.synthesis.acceptedCount":"Accepted items","consensusDoc.synthesis.excludedCount":"Excluded items","consensusDoc.synthesis.openCount":"Open / needs-opinion items","consensusDoc.synthesis.ledger":"JSON ledger","consensusDoc.synthesis.debateDocument":"Aggregation document","consensusDoc.synthesis.finalTable":"\u6700\u7D42\u5224\u65AD\u8868","consensusDoc.synthesis.finalStatus":"Final status","consensusDoc.synthesis.finalDecision":"Conclusion","consensusDoc.synthesis.agreedProviders":"Agreed AIs","consensusDoc.synthesis.disagreedProviders":"Disagreed AIs","consensusDoc.synthesis.opinionProviders":"Opinion / revision suggestions","consensusDoc.synthesis.accepted":"Accepted items","consensusDoc.synthesis.excluded":"Excluded items","consensusDoc.synthesis.open":"Open / needs-opinion items","consensusDoc.synthesis.followUp":"Next actions","consensusDoc.synthesis.noDecisions":"No decided items.","consensusDoc.synthesis.followAccepted":"{id}: Apply the accepted decision ({title}); {reason}","consensusDoc.synthesis.followExcluded":"{id}: Do not reintroduce the excluded decision ({title}). {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} Additional evidence or a user decision is required.","consensusDoc.synthesis.providerContribution":"Provider contributions","consensusDoc.synthesis.proposedCount":"Proposed","consensusDoc.synthesis.acceptedProposals":"Accepted proposals","consensusDoc.synthesis.exclusionHelp":"Helped exclusions","consensusDoc.synthesis.dissentContribution":"Dissent/opinion contributions","consensusDoc.synthesis.characteristic":"Characteristic","consensusDoc.references":"Reference documents","consensusDoc.references.validationJson":"Validation JSON","consensusDoc.references.synthesis":"Synthesis document","consensusDoc.references.inputDocument":"{provider} input document","consensusDoc.unresolvedExplanation":"Unresolved item explanation","consensusDoc.documentPaths":"Document paths","consensusDoc.noItems":"(none)","consensusDoc.decision.purpose":"Purpose","consensusDoc.decision.finalDecision":"Final decision","consensusDoc.decision.agreedProviders":"Agreed AIs","consensusDoc.decision.disagreedProviders":"Disagreed AIs","consensusDoc.decision.currentStances":"Current stances","consensusDoc.decision.changeHistory":"Change history","consensusDoc.decision.sourceLocations":"Debate/evidence locations","consensusDoc.decision.blockedDecision":"Blocked decision","consensusDoc.decision.howToResolve":"To resolve: strengthen the evidence requested by AIs with dissent/opinions, or have the user choose the final direction.","consensusDoc.decision.reason":"Decision reason","consensusDoc.decision.keyComments":"Key comments","consensusDoc.decision.acceptedOriginal":"accepted as originally proposed.","consensusDoc.decision.excludedOriginal":"the original proposal ended as an excluded decision.","consensusDoc.decision.noFinalChange":"no finalized change yet.","consensusDoc.decision.revisionFrom":"this item is a revision derived from {parentId}.","consensusDoc.decision.revisionLedTo":"revision suggestions led to {itemIds}.","consensusDoc.reason.acceptedBase":"Accepted content: {base}","consensusDoc.reason.excludedBase":"Excluded content: {base}","consensusDoc.reason.keyEvidence":"Key evidence: {evidence}","consensusDoc.reason.exclusionEvidence":"Exclusion evidence: {evidence}","consensusDoc.reason.needImplementationCheck":"Any weak evidence should be strengthened by checking code or documents before implementation.","consensusDoc.reason.needDissentCheck":"Confirm exclusion reasons from participant dissent or risk notes.","consensusDoc.reason.sourceConstraint":"Evidence locations remain at {refs}.","consensusDoc.reason.sourceConstraintMissing":"If more evidence is needed during implementation, inspect participant comments in the aggregation document first.","consensusDoc.reason.blockedNoEvidence":"Remaining issues require more evidence or a user decision.","consensusDoc.blocker.none":"Not every participant has explicitly agreed yet.","consensusDoc.blocker.prefix":"Blocked by","consensusDoc.conclusion.prefix":"Conclusion","consensusDoc.providerContribution.proposed":"proposal contribution","consensusDoc.providerContribution.reviewed":"review contribution","consensusDoc.runInspection.problemSummary":"Issue summary","consensusDoc.runInspection.noDiagnostics":"No failure diagnostics recorded.","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"\u540C\u610F","consensus.stance.disagree":"\u53CD\u5BFE","consensus.stance.opinion":"\u610F\u898B","consensus.stance.revise":"\u4FEE\u6B63\u63D0\u6848","consensus.stance.no_response":"no response","consensus.stance.not_assigned":"not assigned this turn","consensus.previousStance.abstain":"abstain","consensus.previousStance.needs_human":"needs human review","consensus.automatic":"automatic","consensus.heartbeat.runningProvider":"[Consensus engine] {provider} in progress...","consensus.heartbeat.runningSummary":"[Consensus engine] round {round} in progress | accepted {accepted} | unresolved {unresolved}","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research preprocessing artifacts","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader final document target","researchConsensus.status":"Status","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"\u524D\u51E6\u7406\u72B6\u614B","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"Raw submissions","researchDoc.originalFindings":"Original findings","researchDoc.supplementLedger":"Supplement request log","researchDoc.mergedGroupsSection":"Merged groups","researchDoc.openDebateItemsSection":"Open debate items","researchDoc.roundPackets":"Round packets and raw responses","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}"};var eR={"report.header.topic":"\u4E3B\u9898","report.header.participants":"\u53C2\u4E0E\u8005","report.header.individualDocs":"\u4E2A\u4EBA\u8BC4\u5BA1\u6587\u6863","report.table.proposer":"\u63D0\u8BAE\u8005","report.table.opinion":"\u610F\u89C1","report.table.severity":"\u4E25\u91CD\u7A0B\u5EA6","report.table.agreement":"\u540C\u610F\u7387","report.section.mainTable":"\u63D0\u6848\u53F0\u8D26","report.section.dissentDetail":"\u672A\u8FBE\u6210\u4E00\u81F4\u9879\u8BE6\u60C5","report.section.contributionSummary":"AI \u8D21\u732E\u6C47\u603B","report.contribution.ai":"AI","report.contribution.proposed":"\u63D0\u51FA","report.contribution.accepted":"\u91C7\u7EB3","report.contribution.revises":"\u4FEE\u8BA2\u8BF7\u6C42","report.contribution.abstains":"\u5F03\u6743","report.footer.synthesisPath":"\u6700\u7EC8\u5171\u8BC6\u6587\u6863","report.footer.debatePath":"\u8FA9\u8BBA\u8BB0\u5F55","report.footer.pendingSynthesis":"(\u7B49\u5F85\u8D1F\u8D23\u4EBA\u6279\u51C6)","report.status.running":"\u8FDB\u884C\u4E2D","report.status.readyForApproval":"\u5F85\u6279\u51C6","report.status.consensus":"\u5DF2\u8FBE\u6210\u5171\u8BC6","report.status.escalated":"\u5DF2\u5347\u7EA7","report.status.approved":"\u5DF2\u6279\u51C6","report.status.rejected":"\u5DF2\u62D2\u7EDD","report.status.leaderTimeout":"\u8D1F\u8D23\u4EBA\u54CD\u5E94\u8D85\u65F6","report.status.partialCompleted":"\u90E8\u5206\u5B8C\u6210","report.status.needsHumanReview":"\u9700\u8981\u4EBA\u5DE5\u5BA1\u6838","report.status.error":"\u9519\u8BEF","synthesis.status.consensus":"\u5DF2\u8FBE\u6210\u5171\u8BC6","synthesis.status.escalated":"\u90E8\u5206\u5171\u8BC6 / \u5DF2\u5347\u7EA7","synthesis.section.acceptedItems":"\u91C7\u7EB3\u9879","synthesis.section.rejectedItems":"\u62D2\u7EDD / \u64A4\u56DE\u9879","synthesis.section.openItems":"\u672A\u51B3\u9879","synthesis.section.sources":"\u4F9D\u636E","synthesis.narration.consensusIn":"\u5728\u5168\u90E8 {max} \u8F6E\u4E2D\u7684\u7B2C {round} \u8F6E\u8FBE\u6210\u5171\u8BC6\u3002","synthesis.narration.escalated":"\u7ECF\u8FC7 {round} \u8F6E\u4ECD\u672A\u8FBE\u6210\u5171\u8BC6,\u7531\u7528\u6237\u51B3\u5B9A\u5347\u7EA7\u5904\u7406\u3002","synthesis.narration.leaderNote":"\u8D1F\u8D23\u4EBA\u5907\u6CE8","approval.pending":"\u7B49\u5F85\u8D1F\u8D23\u4EBA\u6279\u51C6\u3002\u8BF7\u8C03\u7528 `agent_debate_approve`\u3001`agent_debate_continue` \u6216 `agent_debate_reject`\u3002","approval.timeout":"\u7B49\u5F85\u8D1F\u8D23\u4EBA\u51B3\u7B56\u671F\u95F4\u4F1A\u8BDD\u5DF2\u8D85\u65F6({hours} \u5C0F\u65F6)\u3002","moderator.narration.roundHeader":"\u7B2C {round}/{max} \u8F6E","moderator.narration.consensusInRound":"\u5728\u7B2C {round} \u8F6E\u8FBE\u6210\u5171\u8BC6\u3002","moderator.narration.dissentDetailHeader":"\u672A\u89E3\u51B3\u9879","moderator.narration.noInterest":"\u53C2\u4E0E\u8005\u65E0\u5174\u8DA3","moderator.narration.participantDropout":"\u53C2\u4E0E\u8005 `{participantId}` \u56E0\u591A\u6B21\u5931\u8D25\u88AB\u6807\u8BB0\u4E3A\u4E0D\u53EF\u7528\u3002","moderator.narration.participantTimeout":"\u53C2\u4E0E\u8005 `{participantId}` \u5728\u672C\u8F6E\u672A\u4F5C\u51FA\u54CD\u5E94\u3002","moderator.narration.leaderTimeoutFooter":"\u8D1F\u8D23\u4EBA\u54CD\u5E94\u8D85\u65F6","moderator.narration.rejected":"\u8D1F\u8D23\u4EBA\u5DF2\u62D2\u7EDD\u8BE5\u4F1A\u8BDD\u3002","moderator.narration.approved":"\u8D1F\u8D23\u4EBA\u5DF2\u6279\u51C6\u8BE5\u4F1A\u8BDD\u3002","moderator.narration.aliasClarification":"\u522B\u540D\u6F84\u6E05\u9636\u6BB5","prompt.system.moderator":"\u4F60\u662F\u7ED3\u6784\u5316\u591A AI \u8FA9\u8BBA\u7684\u4E3B\u6301\u4EBA\u3002\u4F60\u4E0D\u64B0\u5199\u63D0\u6848,\u800C\u662F\u6C47\u603B\u7ED3\u6784\u5316\u6295\u7968\u5E76\u4EA7\u51FA\u4E2D\u7ACB\u7684\u5171\u8BC6\u65B9\u6848\u3002\u4EC5\u5728\u534F\u8BAE\u5B9A\u4E49\u7684\u901A\u9053\u8303\u56F4\u5185\u4F5C\u51FA\u54CD\u5E94\u3002","error.participantTimeout":"\u53C2\u4E0E\u8005 `{participantId}` \u5728 {seconds} \u79D2\u5185\u672A\u54CD\u5E94\u3002","error.parseFailure":"\u65E0\u6CD5\u89E3\u6790\u53C2\u4E0E\u8005 `{participantId}` \u7684 `<{tag}>` \u5757\u3002","error.sessionNotFound":"\u672A\u627E\u5230\u8FA9\u8BBA\u4F1A\u8BDD `{sessionId}`\u3002","error.invalidState":"\u5728\u72B6\u6001 `{state}` \u4E0B\u4E0D\u5141\u8BB8\u6267\u884C\u64CD\u4F5C `{operation}`\u3002","error.unknownLocaleFallback":"\u672A\u77E5\u533A\u57DF `{locale}`,\u56DE\u9000\u5230 `{fallback}`\u3002","askUser.escalation.header":"\u5DF2\u8FBE\u6700\u5927\u8F6E\u6B21\u4F46\u4ECD\u672A\u8FBE\u6210\u5171\u8BC6","askUser.escalation.question":"\u60A8\u5E0C\u671B\u5982\u4F55\u7EE7\u7EED?","askUser.escalation.continue":"\u518D\u8FDB\u884C {rounds} \u8F6E","askUser.escalation.escalate":"\u4E0D\u8FBE\u6210\u5171\u8BC6\u5373\u5347\u7EA7","askUser.escalation.stop":"\u7ED3\u675F\u8FA9\u8BBA","provider.readiness.section":"\u63D0\u4F9B\u5546\u51C6\u5907\u72B6\u6001","provider.readiness.actionRequired":"\u9700\u8981\u7528\u6237\u786E\u8BA4","provider.readiness.status.queued":"\u6392\u961F\u4E2D","provider.readiness.status.checking":"\u68C0\u67E5\u4E2D","provider.readiness.status.ready":"\u5DF2\u5C31\u7EEA","provider.readiness.status.warming":"\u9884\u70ED\u4E2D","provider.readiness.status.warm":"\u5DF2\u9884\u70ED","provider.readiness.status.unavailable":"\u4E0D\u53EF\u7528","provider.readiness.status.auth-needed":"\u9700\u8981\u8BA4\u8BC1","provider.readiness.status.workspace-blocked":"\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u53D7\u963B","provider.readiness.status.disabled":"\u5DF2\u7981\u7528","provider.readiness.status.skipped":"\u5DF2\u8DF3\u8FC7","provider.readiness.status.unknown":"\u672A\u77E5","provider.routing.section":"\u63D0\u4F9B\u5546\u8DEF\u7531","provider.routing.selected":"\u5DF2\u9009\u62E9","provider.routing.skipped":"\u5DF2\u8DF3\u8FC7","provider.routing.traceData":"trace \u6570\u636E","provider.trust.workspaceBlocked":"{providerId} \u65E0\u6CD5\u5728\u6B64\u5DE5\u4F5C\u533A\u8FD0\u884C\uFF0C\u56E0\u4E3A\u8BE5\u6587\u4EF6\u5939\u672A\u88AB\u4FE1\u4EFB: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers} \u65E0\u6CD5\u5728\u6B64\u5DE5\u4F5C\u533A\u8FD0\u884C\uFF0C\u56E0\u4E3A\u8BE5\u6587\u4EF6\u5939\u672A\u88AB\u4FE1\u4EFB: {workspaceBaseDir}","provider.trust.question":"\u662F\u5426\u4EC5\u5C06\u6B64\u9879\u76EE\u6587\u4EF6\u5939\u52A0\u5165 {providerId} \u7684 trusted \u5217\u8868?","provider.trust.batch.question":"\u662F\u5426\u4EC5\u5C06\u6B64\u9879\u76EE\u6587\u4EF6\u5939\u52A0\u5165\u53D7\u652F\u6301\u63D0\u4F9B\u5546\u7684 trusted \u5217\u8868?","provider.trust.option.apply":"\u4FE1\u4EFB\u6B64\u9879\u76EE\u5E76\u7EE7\u7EED","provider.trust.option.skip":"\u4E0D\u4F7F\u7528 {providerId} \u7EE7\u7EED","provider.trust.batch.option.skip":"\u4E0D\u4F7F\u7528\u8FD9\u4E9B\u63D0\u4F9B\u5546\u7EE7\u7EED","provider.trust.option.abort":"\u505C\u6B62","provider.trust.apply.approvedRequired":"\u53EA\u6709\u5728\u7528\u6237\u660E\u786E\u6279\u51C6\u540E\uFF0C\u624D\u80FD\u66F4\u6539\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u8BBE\u7F6E\u3002","provider.trust.apply.workspaceRequired":"\u66F4\u6539\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u8BBE\u7F6E\u524D\u9700\u8981\u76EE\u6807\u5DE5\u4F5C\u533A\u6587\u4EF6\u5939\u3002","provider.trust.apply.unsupported":"{providerId} \u4E0D\u652F\u6301\u81EA\u52A8\u66F4\u65B0\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u8BBE\u7F6E\u3002","provider.trust.apply.result":"{providerId} \u5DE5\u4F5C\u533A\u4FE1\u4EFB\u7ED3\u679C: {status} ({workspaceBaseDir})","provider.trust.batch.resultHeader":"\u63D0\u4F9B\u5546\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u7ED3\u679C","common.yes":"Yes","common.no":"No","common.none":"(none)","common.default":"(default)","common.unknown":"(unknown)","common.notRecorded":"(not recorded)","common.notGeneratedYet":"(not generated yet)","common.available":"Available","common.unavailable":"Unavailable","common.enabled":"enabled","common.disabled":"disabled","common.ok":"OK","common.degraded":"DEGRADED","common.error":"ERROR","common.failed":"failed","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra \u8BBE\u7F6E","setup.currentConfig.notFound":"Current config: not found","setup.currentConfig.present":"Current config: present","setup.currentConfig.presentNoProviders":"Current config: present (no providers enabled)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"Setup required: yes","setup.recommendedNextAction":"Recommended next action: ask the user for provider selection and locale, then call setup_apply.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"Detected providers","setup.detected.none":"(none detected)","setup.hostAssets":"Host assets","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra Setup Preview","setup.apply.appliedTitle":"Agestra Setup Applied","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"\u5DF2\u6CE8\u518C\u63D0\u4F9B\u5546","provider.list.none":"No providers registered.","provider.health.title":"Health Check Results","provider.health.none":"No providers to check.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"Status","provider.label.message":"Message","provider.label.error":"Error","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u9884\u68C0","workspaceTrust.policy":"Policy","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"Discovery","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"contents not read","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"Blocked","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus Session","consensus.label.ledger":"Consensus Ledger","consensus.label.sessionId":"Session ID","consensus.label.status":"Status","consensus.label.phase":"Phase","consensus.label.updated":"Updated","consensus.label.created":"Created","consensus.label.round":"Round","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider Readiness","consensus.section.participantProgress":"Participant Progress","consensus.section.pendingHostTurns":"Pending Host Turns","consensus.section.documents":"Documents","consensus.section.roundState":"Round State","consensus.section.runEvidence":"\u8FD0\u884C\u8BC1\u636E","consensus.section.runInspector":"Run Inspector","consensus.section.recentActivity":"Recent Activity","consensus.section.allowedActions":"Allowed Actions","consensus.section.researchPreprocessorStatus":"Research Preprocessor Status","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.action.nextStep":"Next step - choose one:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"Approve synthesis","consensus.action.extend":"Extend debate","consensus.action.reject":"Abandon session","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'Host turn accepted for participant "{participantId}".',"consensus.submit.remaining":"Remaining pending host turns","consensus.submit.allIn":"All pending host turns are in. The consensus round will resume shortly.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"waiting for convergence","consensus.research.state.noOpenItems":"no open convergence items","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"Debate aggregation document","consensusDoc.debate.sourceLedger":"Source ledger JSON","consensusDoc.debate.participants":"Participating AIs","consensusDoc.debate.currentRound":"Current round","consensusDoc.dashboard":"Item dashboard","consensusDoc.item.id":"ID","consensusDoc.item.item":"Item","consensusDoc.item.status":"Status","consensusDoc.item.proposer":"Proposer","consensusDoc.item.agreement":"Agreement","consensusDoc.item.currentConclusion":"Current conclusion / blocker","consensusDoc.item.purpose":"Purpose","consensusDoc.item.originalClaim":"Original claim","consensusDoc.item.currentSummary":"Current summary","consensusDoc.item.conclusion":"Conclusion","consensusDoc.item.stance":"Stance","consensusDoc.item.content":"Content","consensusDoc.item.newItemProposal":"New item proposal","consensusDoc.item.previousStanceMissing":"previous stance not recorded","consensusDoc.item.stanceChanged":"Stance changed: from {previous} to {current}","consensusDoc.item.respondsTo":"Responds to","consensusDoc.item.persuasionEvidence":"Persuasion evidence","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"\u6982\u89C8","consensusDoc.synthesis.topic":"Topic","consensusDoc.synthesis.participants":"Participating AIs","consensusDoc.synthesis.roundReached":"Rounds to consensus","consensusDoc.synthesis.acceptedCount":"Accepted items","consensusDoc.synthesis.excludedCount":"Excluded items","consensusDoc.synthesis.openCount":"Open / needs-opinion items","consensusDoc.synthesis.ledger":"JSON ledger","consensusDoc.synthesis.debateDocument":"Aggregation document","consensusDoc.synthesis.finalTable":"\u6700\u7EC8\u51B3\u7B56\u8868","consensusDoc.synthesis.finalStatus":"Final status","consensusDoc.synthesis.finalDecision":"Conclusion","consensusDoc.synthesis.agreedProviders":"Agreed AIs","consensusDoc.synthesis.disagreedProviders":"Disagreed AIs","consensusDoc.synthesis.opinionProviders":"Opinion / revision suggestions","consensusDoc.synthesis.accepted":"Accepted items","consensusDoc.synthesis.excluded":"Excluded items","consensusDoc.synthesis.open":"Open / needs-opinion items","consensusDoc.synthesis.followUp":"Next actions","consensusDoc.synthesis.noDecisions":"No decided items.","consensusDoc.synthesis.followAccepted":"{id}: Apply the accepted decision ({title}); {reason}","consensusDoc.synthesis.followExcluded":"{id}: Do not reintroduce the excluded decision ({title}). {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} Additional evidence or a user decision is required.","consensusDoc.synthesis.providerContribution":"Provider contributions","consensusDoc.synthesis.proposedCount":"Proposed","consensusDoc.synthesis.acceptedProposals":"Accepted proposals","consensusDoc.synthesis.exclusionHelp":"Helped exclusions","consensusDoc.synthesis.dissentContribution":"Dissent/opinion contributions","consensusDoc.synthesis.characteristic":"Characteristic","consensusDoc.references":"Reference documents","consensusDoc.references.validationJson":"Validation JSON","consensusDoc.references.synthesis":"Synthesis document","consensusDoc.references.inputDocument":"{provider} input document","consensusDoc.unresolvedExplanation":"Unresolved item explanation","consensusDoc.documentPaths":"Document paths","consensusDoc.noItems":"(none)","consensusDoc.decision.purpose":"Purpose","consensusDoc.decision.finalDecision":"Final decision","consensusDoc.decision.agreedProviders":"Agreed AIs","consensusDoc.decision.disagreedProviders":"Disagreed AIs","consensusDoc.decision.currentStances":"Current stances","consensusDoc.decision.changeHistory":"Change history","consensusDoc.decision.sourceLocations":"Debate/evidence locations","consensusDoc.decision.blockedDecision":"Blocked decision","consensusDoc.decision.howToResolve":"To resolve: strengthen the evidence requested by AIs with dissent/opinions, or have the user choose the final direction.","consensusDoc.decision.reason":"Decision reason","consensusDoc.decision.keyComments":"Key comments","consensusDoc.decision.acceptedOriginal":"accepted as originally proposed.","consensusDoc.decision.excludedOriginal":"the original proposal ended as an excluded decision.","consensusDoc.decision.noFinalChange":"no finalized change yet.","consensusDoc.decision.revisionFrom":"this item is a revision derived from {parentId}.","consensusDoc.decision.revisionLedTo":"revision suggestions led to {itemIds}.","consensusDoc.reason.acceptedBase":"Accepted content: {base}","consensusDoc.reason.excludedBase":"Excluded content: {base}","consensusDoc.reason.keyEvidence":"Key evidence: {evidence}","consensusDoc.reason.exclusionEvidence":"Exclusion evidence: {evidence}","consensusDoc.reason.needImplementationCheck":"Any weak evidence should be strengthened by checking code or documents before implementation.","consensusDoc.reason.needDissentCheck":"Confirm exclusion reasons from participant dissent or risk notes.","consensusDoc.reason.sourceConstraint":"Evidence locations remain at {refs}.","consensusDoc.reason.sourceConstraintMissing":"If more evidence is needed during implementation, inspect participant comments in the aggregation document first.","consensusDoc.reason.blockedNoEvidence":"Remaining issues require more evidence or a user decision.","consensusDoc.blocker.none":"Not every participant has explicitly agreed yet.","consensusDoc.blocker.prefix":"Blocked by","consensusDoc.conclusion.prefix":"Conclusion","consensusDoc.providerContribution.proposed":"proposal contribution","consensusDoc.providerContribution.reviewed":"review contribution","consensusDoc.runInspection.problemSummary":"Issue summary","consensusDoc.runInspection.noDiagnostics":"No failure diagnostics recorded.","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"\u540C\u610F","consensus.stance.disagree":"\u53CD\u5BF9","consensus.stance.opinion":"\u610F\u89C1","consensus.stance.revise":"\u4FEE\u8BA2\u5EFA\u8BAE","consensus.stance.no_response":"no response","consensus.stance.not_assigned":"not assigned this turn","consensus.previousStance.abstain":"abstain","consensus.previousStance.needs_human":"needs human review","consensus.automatic":"automatic","consensus.heartbeat.runningProvider":"[Consensus engine] {provider} in progress...","consensus.heartbeat.runningSummary":"[Consensus engine] round {round} in progress | accepted {accepted} | unresolved {unresolved}","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research preprocessing artifacts","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader final document target","researchConsensus.status":"Status","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"\u9884\u5904\u7406\u72B6\u6001","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"Raw submissions","researchDoc.originalFindings":"Original findings","researchDoc.supplementLedger":"Supplement request log","researchDoc.mergedGroupsSection":"Merged groups","researchDoc.openDebateItemsSection":"Open debate items","researchDoc.roundPackets":"Round packets and raw responses","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}","consensus.phase.starting":"starting","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate"};var tR=Object.freeze({en:Yk,ko:Qk,ja:Xk,zh:eR});function iq(t){return typeof t=="string"&&su.includes(t)}function Ym(t,e){return e===void 0?t:t.replace(/\{(\w+)\}/g,(r,s)=>{if(Object.prototype.hasOwnProperty.call(e,s)){let n=e[s];return typeof n=="number"?String(n):n}return r})}function no(t){return t===void 0?Qm(An):iq(t)?Qm(t):(console.warn(`[i18n] unknown locale '${t}', falling back to ${An}`),Qm(An))}function aq(t,e,r){let s=new Set;return{locale:t,t(n,o){let i=e[n];if(i!==void 0)return Ym(i,o);let a=r[n];return a!==void 0?(s.has(n)||(s.add(n),console.warn(`[i18n] missing key '${n}' in locale '${t}', falling back to ${um}`)),Ym(a,o)):(s.has(n)||(s.add(n),console.warn(`[i18n] missing key '${n}' in all bundles; returning raw key`)),Ym(n,o))}}}function Qm(t){return aq(t,tR[t],tR[um])}var Ya=class extends Error{timeoutMs;constructor(e){super(`Ollama HTTP request timed out after ${e}ms`),this.timeoutMs=e,this.name="OllamaHttpTimeoutError"}};async function Qa(t,e={},r,s){let n=new AbortController,o=!1,i=()=>{n.abort(s?.reason)};s?.aborted?n.abort(s.reason):s&&s.addEventListener("abort",i);let a=setTimeout(()=>{o=!0,n.abort()},r);try{return await fetch(t,{...e,signal:n.signal})}catch(c){throw o?new Ya(r):c}finally{clearTimeout(a),s&&s.removeEventListener("abort",i)}}async function rR(t,e=3e4){let r=await Qa(`${t}/api/tags`,{},e);if(!r.ok)throw new Error(`Ollama API error: ${r.status}`);return((await r.json()).models||[]).map(n=>({name:n.name||"unknown",size:n.size||0,strengths:cq(n.name||"")}))}function cq(t){let e=["chat"],r=t.toLowerCase();return(r.includes("coder")||r.includes("code"))&&e.push("code_review","code_generation"),r.includes("instruct")&&e.push("instruction_following"),r.includes("embed")&&e.push("embedding"),e}var uq=new Set(["http:","https:"]),lq=new Set(["model","prompt","system","stream"]);function pq(t){let e;try{e=new URL(t)}catch{throw new Error(`Invalid Ollama host: not a valid URL (${t})`)}if(!uq.has(e.protocol))throw new Error(`Invalid Ollama host: scheme "${e.protocol}" not allowed (use http:// or https://)`);if(e.username||e.password)throw new Error("Invalid Ollama host: embedded credentials are not allowed");return t.replace(/\/+$/,"")}var oo=class t{id;type="ollama";host;defaultModel;maxContext;available=!1;unavailableUntil=0;models=[];timeouts;lastInitializationError=null;lastRateLimitMessage=null;static RATE_LIMIT_BACKOFF_MS=6e4;constructor(e){this.id=e.id,this.host=pq(e.host),this.defaultModel=e.defaultModel||"auto",this.maxContext=e.maxContext??32768,this.timeouts={default:e.timeouts?.default??3e4,generate:e.timeouts?.generate??3e5,chat:e.timeouts?.chat??3e5}}async initialize(){try{this.models=await rR(this.host,this.timeouts.default),this.available=this.models.length>0,this.lastInitializationError=this.available?null:`No models detected. Install a model first (ollama pull ${im})`,this.available&&(this.unavailableUntil=0,this.lastRateLimitMessage=null)}catch(e){this.lastInitializationError=Xm(e),this.available=!1}}async healthCheck(){try{let e=await Qa(`${this.host}/api/tags`,{},this.timeouts.default);if(!e.ok)return{status:"error",message:`HTTP ${e.status}`};let r=await e.json(),s=r.models?.length??0;return{status:s>0?"ok":"degraded",message:`${s} models available`,details:{models:r.models?.map(n=>n.name)}}}catch(e){return{status:"error",message:Xm(e)}}}getCapabilities(){return{maxContext:this.maxContext,supportsSystemPrompt:!0,supportsFiles:!1,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!0,strengths:[...new Set(this.models.flatMap(e=>e.strengths))],models:this.models.map(e=>({name:e.name,description:`Ollama model (${Math.round(e.size/1e9)}GB)`,strengths:e.strengths,sizeGb:e.size/1e9}))}}isAvailable(){return this.activeBackoffMs()>0?!1:this.available}async chat(e){let r=this.activeBackoffMs();if(r>0){let a=this.lastRateLimitMessage?`${this.lastRateLimitMessage}. Retry after ${r}ms.`:`Rate-limit backoff active. Retry after ${r}ms.`;throw new ve(this.id,a)}if(!this.available)throw new ve(this.id,this.lastInitializationError?`Ollama not running or no models installed: ${this.lastInitializationError}`:"Ollama not running or no models installed");if(e.files?.length)throw new He(this.id,"Ollama direct chat does not support file attachments; inline file context in the prompt first.");let s=e.extra||{},n=Object.keys(s).filter(a=>lq.has(a));if(n.length>0)throw new He(this.id,`Ollama request.extra cannot override reserved field(s): ${n.join(", ")}`);let o=e.model||this.selectModel(),i={model:o,prompt:e.prompt,system:e.system||"You are a helpful assistant.",stream:!1,...s};try{let a=await Qa(`${this.host}/api/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)},this.timeouts.generate,e.signal);if(a.status===429)throw this.unavailableUntil=Date.now()+t.RATE_LIMIT_BACKOFF_MS,this.lastRateLimitMessage=`Rate limited (HTTP 429${a.statusText?` ${a.statusText}`:""})`,new ve(this.id,`${this.lastRateLimitMessage}; temporarily deactivated for ${t.RATE_LIMIT_BACKOFF_MS/1e3}s`);if(!a.ok)throw new He(this.id,`HTTP ${a.status}: ${a.statusText}`);let c=await a.json();return{text:c.response||"",model:c.model||o,provider:this.id}}catch(a){throw a instanceof Ya||a.name==="AbortError"?new js(this.id,this.timeouts.generate):a instanceof He||a instanceof ve?a:new He(this.id,Xm(a))}}selectModel(){if(this.defaultModel!=="auto")return this.defaultModel;if(this.models.length===0)throw new ve(this.id,`No models detected. Install a model first (ollama pull ${im})`);return this.models[0].name}getModels(){return[...this.models]}getConnectionInfo(){return{host:this.host,model:this.selectModel()}}activeBackoffMs(e=Date.now()){if(this.unavailableUntil<=0)return 0;let r=this.unavailableUntil-e;return r>0?r:(this.unavailableUntil=0,this.lastRateLimitMessage=null,0)}};function Xm(t){return t instanceof Error?t.message:String(t)}var fq=[/^Loaded cached credentials/i,/^\[debug\]/i,/^\[info\]/i,/^\[warn\]/i,/^Using /i,/^Model:/i];function sR(t){return t.split(`
75
+ \`\`\``);return e}function Q1(t,e){let r=e?.model;return typeof r=="string"&&r.length>0?r:t}var Xs=class{id;type;bridge;modelName;displayName;capabilities;constructor(e){this.id=e.id??e.bridge.providerId,this.type=e.type,this.bridge=e.bridge,this.modelName=e.modelName??e.type,this.displayName=e.displayName,this.capabilities=e.capabilities}async initialize(){}async healthCheck(){return this.bridge.healthCheck?this.bridge.healthCheck():this.bridge.isAvailable()?{status:"ok",message:`${this.displayName} host bridge available`}:{status:"error",message:`${this.displayName} host bridge unavailable`}}getCapabilities(){return{...this.capabilities,models:this.capabilities.models.map((e,r)=>r===0?{...e,name:this.modelName}:{...e})}}getDescriptor(){return Zr(this,this.getCapabilities())}isAvailable(){return this.bridge.isAvailable()}async chat(e){if(!this.isAvailable())throw new ve(this.id,`${this.displayName} host bridge is not available`);try{let r=Y1(e),s={...e.extra??{}};e.model&&(s.model=e.model),typeof e.temperature=="number"&&(s.temperature=e.temperature),typeof e.maxTokens=="number"&&(s.maxTokens=e.maxTokens);let n=await this.bridge.runTurn({prompt:r,system:e.system,metadata:s});return{text:n.text,model:Q1(this.modelName,n.metadata),provider:this.id,metadata:n.metadata}}catch(r){let s=r instanceof Error?r.message:String(r);throw/sampling|host bridge unavailable|does not support/i.test(s)?new ve(this.id,s):new He(this.id,s)}}};var X1={maxContext:2e5,supportsSystemPrompt:!0,supportsFiles:!0,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!1,strengths:["reasoning","review","synthesis","moderation"],models:[{name:"claude-host",description:"Claude host model via MCP sampling bridge",strengths:["reasoning","review","synthesis"]}]},zu=class extends Xs{constructor(e){super({...e,type:"claude-host",displayName:"Claude",capabilities:X1,modelName:e.modelName??"claude-host"})}};var eq={maxContext:2e5,supportsSystemPrompt:!0,supportsFiles:!0,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!1,strengths:["coding","reasoning","review","implementation"],models:[{name:"codex-host",description:"Codex host model via MCP sampling bridge",strengths:["coding","implementation","review"]}]},Fu=class extends Xs{constructor(e){super({...e,type:"codex-host",displayName:"Codex",capabilities:eq,modelName:e.modelName??"codex-host"})}};var tq={maxContext:1e6,supportsSystemPrompt:!0,supportsFiles:!0,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!1,strengths:["analysis","reasoning","research","review"],models:[{name:"gemini-host",description:"Gemini host model via MCP sampling bridge",strengths:["analysis","research","review"]}]},qu=class extends Xs{constructor(e){super({...e,type:"gemini-host",displayName:"Gemini",capabilities:tq,modelName:e.modelName??"gemini-host"})}};It();var Yk={"report.header.topic":"Topic","report.header.participants":"Participants","report.header.individualDocs":"Individual documents","report.table.proposer":"Proposer","report.table.opinion":"Opinion","report.table.severity":"Severity","report.table.agreement":"Agreement","report.section.mainTable":"Proposal ledger","report.section.dissentDetail":"Dissenting items","report.section.contributionSummary":"AI contribution summary","report.contribution.ai":"AI","report.contribution.proposed":"Proposed","report.contribution.accepted":"Accepted","report.contribution.revises":"Revises issued","report.contribution.abstains":"Abstains","report.footer.synthesisPath":"Final synthesis document","report.footer.debatePath":"Debate transcript","report.footer.pendingSynthesis":"(pending leader approval)","report.status.running":"running","report.status.readyForApproval":"ready for approval","report.status.consensus":"consensus","report.status.escalated":"escalated","report.status.approved":"approved","report.status.rejected":"rejected","report.status.leaderTimeout":"leader timeout","report.status.partialCompleted":"partial completed","report.status.needsHumanReview":"needs human review","report.status.error":"error","synthesis.status.consensus":"Consensus reached","synthesis.status.escalated":"Partial / escalated","synthesis.section.acceptedItems":"Accepted Items","synthesis.section.rejectedItems":"Rejected / Withdrawn Items","synthesis.section.openItems":"Open Items","synthesis.section.sources":"Sources","synthesis.narration.consensusIn":"Consensus reached in round {round} of {max}.","synthesis.narration.escalated":"Session escalated by user after {round} rounds without consensus.","synthesis.narration.leaderNote":"Leader note","approval.pending":"Awaiting leader approval. Call `agent_debate_approve`, `agent_debate_continue`, or `agent_debate_reject`.","approval.timeout":"Session timed out waiting for leader decision ({hours}h).","moderator.narration.roundHeader":"Round {round} of {max}","moderator.narration.consensusInRound":"Consensus reached after {round} round(s).","moderator.narration.dissentDetailHeader":"Unresolved items","moderator.narration.noInterest":"No interest from participants","moderator.narration.participantDropout":"Participant `{participantId}` marked unavailable after repeated failures.","moderator.narration.participantTimeout":"Participant `{participantId}` did not respond in this round.","moderator.narration.leaderTimeoutFooter":"Leader Timeout","moderator.narration.rejected":"Session rejected by leader.","moderator.narration.approved":"Session approved by leader.","moderator.narration.aliasClarification":"Alias clarification phase","prompt.system.moderator":"You are the moderator of a structured multi-AI debate. You do not author proposals; you aggregate structured votes and produce a neutral synthesis. Respond only in the channels the protocol defines.","error.participantTimeout":"Participant `{participantId}` timed out after {seconds}s.","error.parseFailure":"Could not parse `<{tag}>` block from `{participantId}`.","error.sessionNotFound":"Debate session `{sessionId}` was not found.","error.invalidState":"Operation `{operation}` is not allowed in state `{state}`.","error.unknownLocaleFallback":"Unknown locale `{locale}`; falling back to `{fallback}`.","askUser.escalation.header":"Maximum rounds reached without consensus","askUser.escalation.question":"How would you like to proceed?","askUser.escalation.continue":"Continue +{rounds} rounds","askUser.escalation.escalate":"Escalate without consensus","askUser.escalation.stop":"Stop the debate","provider.readiness.section":"Provider Readiness","provider.readiness.actionRequired":"Action Required","provider.readiness.status.queued":"Queued","provider.readiness.status.checking":"Checking","provider.readiness.status.ready":"Ready","provider.readiness.status.warming":"Warming","provider.readiness.status.warm":"Warm","provider.readiness.status.unavailable":"Unavailable","provider.readiness.status.auth-needed":"Auth needed","provider.readiness.status.workspace-blocked":"Workspace trust blocked","provider.readiness.status.disabled":"Disabled","provider.readiness.status.skipped":"Skipped","provider.readiness.status.unknown":"Unknown","provider.routing.section":"Provider Routing","provider.routing.selected":"selected","provider.routing.skipped":"skipped","provider.routing.traceData":"trace data","provider.trust.workspaceBlocked":"{providerId} cannot run in this workspace because the folder is not trusted: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers} cannot run in this workspace because the folder is not trusted: {workspaceBaseDir}","provider.trust.question":"Trust only this project folder for {providerId}?","provider.trust.batch.question":"Trust only this project folder for supported providers?","provider.trust.option.apply":"Trust this project and continue","provider.trust.option.skip":"Continue without {providerId}","provider.trust.batch.option.skip":"Continue without these providers","provider.trust.option.abort":"Stop","provider.trust.apply.approvedRequired":"Workspace trust can only be changed after explicit user approval.","provider.trust.apply.workspaceRequired":"A target workspace folder is required before workspace trust can be changed.","provider.trust.apply.unsupported":"{providerId} does not support automatic workspace trust updates.","provider.trust.apply.result":"{providerId} workspace trust result: {status} ({workspaceBaseDir})","provider.trust.apply.singleToolInstruction":"After explicit user approval, call provider_trust_apply once per provider. Use batch trust only when the host permission model explicitly allows it.","provider.trust.batch.resultHeader":"Provider Workspace Trust Results","common.yes":"Yes","common.no":"No","common.none":"(none)","common.default":"(default)","common.unknown":"(unknown)","common.notRecorded":"(not recorded)","common.notGeneratedYet":"(not generated yet)","common.available":"Available","common.unavailable":"Unavailable","common.enabled":"enabled","common.disabled":"disabled","common.ok":"OK","common.degraded":"DEGRADED","common.error":"ERROR","common.failed":"failed","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra Setup","setup.currentConfig.notFound":"Current config: not found","setup.currentConfig.present":"Current config: present","setup.currentConfig.presentNoProviders":"Current config: present (no providers enabled)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"Setup required: yes","setup.recommendedNextAction":"Recommended next action: ask the user for provider selection and locale, then call setup_apply.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"Detected providers","setup.detected.none":"(none detected)","setup.hostAssets":"Host assets","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra Setup Preview","setup.apply.appliedTitle":"Agestra Setup Applied","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"Registered Providers","provider.list.none":"No providers registered.","provider.health.title":"Health Check Results","provider.health.none":"No providers to check.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"Status","provider.label.message":"Message","provider.label.error":"Error","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"Workspace Trust Preflight","workspaceTrust.policy":"Policy","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"Discovery","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"contents not read","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"Blocked","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus Session","consensus.label.ledger":"Consensus Ledger","consensus.label.sessionId":"Session ID","consensus.label.status":"Status","consensus.label.phase":"Phase","consensus.label.updated":"Updated","consensus.label.created":"Created","consensus.label.round":"Round","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider Readiness","consensus.section.participantProgress":"Participant Progress","consensus.section.pendingHostTurns":"Pending Host Turns","consensus.section.documents":"Documents","consensus.section.roundState":"Round State","consensus.section.runEvidence":"Run Evidence","consensus.section.runInspector":"Run Inspector","consensus.section.recentActivity":"Recent Activity","consensus.section.allowedActions":"Allowed Actions","consensus.section.researchPreprocessorStatus":"Research Preprocessor Status","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.starting":"starting","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate","consensus.action.nextStep":"Next step - choose one:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"Approve synthesis","consensus.action.extend":"Extend debate","consensus.action.reject":"Abandon session","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'Host turn accepted for participant "{participantId}".',"consensus.submit.remaining":"Remaining pending host turns","consensus.submit.allIn":"All pending host turns are in. The consensus round will resume shortly.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"waiting for convergence","consensus.research.state.noOpenItems":"no open convergence items","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"Debate aggregation document","consensusDoc.debate.sourceLedger":"Source ledger JSON","consensusDoc.debate.participants":"Participating AIs","consensusDoc.debate.currentRound":"Current round","consensusDoc.dashboard":"Item dashboard","consensusDoc.item.id":"ID","consensusDoc.item.item":"Item","consensusDoc.item.status":"Status","consensusDoc.item.proposer":"Proposer","consensusDoc.item.agreement":"Agreement","consensusDoc.item.currentConclusion":"Current conclusion / blocker","consensusDoc.item.purpose":"Purpose","consensusDoc.item.originalClaim":"Original claim","consensusDoc.item.currentSummary":"Current summary","consensusDoc.item.conclusion":"Conclusion","consensusDoc.item.stance":"Stance","consensusDoc.item.content":"Content","consensusDoc.item.newItemProposal":"New item proposal","consensusDoc.item.previousStanceMissing":"previous stance not recorded","consensusDoc.item.stanceChanged":"Stance changed: from {previous} to {current}","consensusDoc.item.respondsTo":"Responds to","consensusDoc.item.persuasionEvidence":"Persuasion evidence","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"Overview","consensusDoc.synthesis.topic":"Topic","consensusDoc.synthesis.participants":"Participating AIs","consensusDoc.synthesis.roundReached":"Rounds to consensus","consensusDoc.synthesis.acceptedCount":"Accepted items","consensusDoc.synthesis.excludedCount":"Excluded items","consensusDoc.synthesis.openCount":"Open / needs-opinion items","consensusDoc.synthesis.ledger":"JSON ledger","consensusDoc.synthesis.debateDocument":"Aggregation document","consensusDoc.synthesis.finalTable":"Final decision table","consensusDoc.synthesis.finalStatus":"Final status","consensusDoc.synthesis.finalDecision":"Conclusion","consensusDoc.synthesis.agreedProviders":"Agreed AIs","consensusDoc.synthesis.disagreedProviders":"Disagreed AIs","consensusDoc.synthesis.opinionProviders":"Opinion / revision suggestions","consensusDoc.synthesis.accepted":"Accepted items","consensusDoc.synthesis.excluded":"Excluded items","consensusDoc.synthesis.open":"Open / needs-opinion items","consensusDoc.synthesis.followUp":"Next actions","consensusDoc.synthesis.noDecisions":"No decided items.","consensusDoc.synthesis.followAccepted":"{id}: Apply the accepted decision ({title}); {reason}","consensusDoc.synthesis.followExcluded":"{id}: Do not reintroduce the excluded decision ({title}). {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} Additional evidence or a user decision is required.","consensusDoc.synthesis.providerContribution":"Provider contributions","consensusDoc.synthesis.proposedCount":"Proposed","consensusDoc.synthesis.acceptedProposals":"Accepted proposals","consensusDoc.synthesis.exclusionHelp":"Helped exclusions","consensusDoc.synthesis.dissentContribution":"Dissent/opinion contributions","consensusDoc.synthesis.characteristic":"Characteristic","consensusDoc.references":"Reference documents","consensusDoc.references.validationJson":"Validation JSON","consensusDoc.references.synthesis":"Synthesis document","consensusDoc.references.inputDocument":"{provider} input document","consensusDoc.unresolvedExplanation":"Unresolved item explanation","consensusDoc.documentPaths":"Document paths","consensusDoc.noItems":"(none)","consensusDoc.decision.purpose":"Purpose","consensusDoc.decision.finalDecision":"Final decision","consensusDoc.decision.agreedProviders":"Agreed AIs","consensusDoc.decision.disagreedProviders":"Disagreed AIs","consensusDoc.decision.currentStances":"Current stances","consensusDoc.decision.changeHistory":"Change history","consensusDoc.decision.sourceLocations":"Debate/evidence locations","consensusDoc.decision.blockedDecision":"Blocked decision","consensusDoc.decision.howToResolve":"To resolve: strengthen the evidence requested by AIs with dissent/opinions, or have the user choose the final direction.","consensusDoc.decision.reason":"Decision reason","consensusDoc.decision.keyComments":"Key comments","consensusDoc.decision.acceptedOriginal":"accepted as originally proposed.","consensusDoc.decision.excludedOriginal":"the original proposal ended as an excluded decision.","consensusDoc.decision.noFinalChange":"no finalized change yet.","consensusDoc.decision.revisionFrom":"this item is a revision derived from {parentId}.","consensusDoc.decision.revisionLedTo":"revision suggestions led to {itemIds}.","consensusDoc.reason.acceptedBase":"Accepted content: {base}","consensusDoc.reason.excludedBase":"Excluded content: {base}","consensusDoc.reason.keyEvidence":"Key evidence: {evidence}","consensusDoc.reason.exclusionEvidence":"Exclusion evidence: {evidence}","consensusDoc.reason.needImplementationCheck":"Any weak evidence should be strengthened by checking code or documents before implementation.","consensusDoc.reason.needDissentCheck":"Confirm exclusion reasons from participant dissent or risk notes.","consensusDoc.reason.sourceConstraint":"Evidence locations remain at {refs}.","consensusDoc.reason.sourceConstraintMissing":"If more evidence is needed during implementation, inspect participant comments in the aggregation document first.","consensusDoc.reason.blockedNoEvidence":"Remaining issues require more evidence or a user decision.","consensusDoc.blocker.none":"Not every participant has explicitly agreed yet.","consensusDoc.blocker.prefix":"Blocked by","consensusDoc.conclusion.prefix":"Conclusion","consensusDoc.providerContribution.proposed":"proposal contribution","consensusDoc.providerContribution.reviewed":"review contribution","consensusDoc.runInspection.problemSummary":"Issue summary","consensusDoc.runInspection.noDiagnostics":"No failure diagnostics recorded.","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"agree","consensus.stance.disagree":"disagree","consensus.stance.opinion":"opinion","consensus.stance.revise":"revise","consensus.stance.no_response":"no response","consensus.stance.not_assigned":"not assigned this turn","consensus.previousStance.abstain":"abstain","consensus.previousStance.needs_human":"needs human review","consensus.automatic":"automatic","consensus.heartbeat.runningProvider":"[Consensus engine] {provider} in progress...","consensus.heartbeat.runningSummary":"[Consensus engine] round {round} in progress | accepted {accepted} | unresolved {unresolved}","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research preprocessing artifacts","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader final document target","researchConsensus.status":"Status","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"Preprocessing status","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"Raw submissions","researchDoc.originalFindings":"Original findings","researchDoc.supplementLedger":"Supplement request log","researchDoc.mergedGroupsSection":"Merged groups","researchDoc.openDebateItemsSection":"Open debate items","researchDoc.roundPackets":"Round packets and raw responses","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}"};var Qk={"report.header.topic":"\uC8FC\uC81C","report.header.participants":"\uCC38\uAC00\uC790","report.header.individualDocs":"\uAC1C\uBCC4 \uAC80\uD1A0 \uBB38\uC11C","report.table.proposer":"\uC81C\uC548\uC790","report.table.opinion":"\uC758\uACAC","report.table.severity":"\uC911\uC694\uB3C4","report.table.agreement":"\uB3D9\uC758\uC728","report.section.mainTable":"\uC81C\uC548 \uC6D0\uC7A5","report.section.dissentDetail":"\uBBF8\uD569\uC758 \uD56D\uBAA9 \uC0C1\uC138","report.section.contributionSummary":"AI \uAE30\uC5EC\uB3C4 \uC694\uC57D","report.contribution.ai":"AI","report.contribution.proposed":"\uC81C\uC548","report.contribution.accepted":"\uCC44\uD0DD","report.contribution.revises":"\uC218\uC815 \uC694\uCCAD","report.contribution.abstains":"\uAE30\uAD8C","report.footer.synthesisPath":"\uCD5C\uC885 \uD569\uC758 \uBB38\uC11C","report.footer.debatePath":"\uD1A0\uB860 \uAE30\uB85D","report.footer.pendingSynthesis":"(\uB9AC\uB354 \uC2B9\uC778 \uB300\uAE30 \uC911)","report.status.running":"\uC9C4\uD589 \uC911","report.status.readyForApproval":"\uC2B9\uC778 \uB300\uAE30","report.status.consensus":"\uD569\uC758 \uB3C4\uB2EC","report.status.escalated":"\uC5D0\uC2A4\uCEEC\uB808\uC774\uC158","report.status.approved":"\uC2B9\uC778\uB428","report.status.rejected":"\uAE30\uAC01\uB428","report.status.leaderTimeout":"\uB9AC\uB354 \uC751\uB2F5 \uC2DC\uAC04 \uCD08\uACFC","report.status.partialCompleted":"\uBD80\uBD84 \uC644\uB8CC","report.status.needsHumanReview":"\uC0AC\uB78C \uAC80\uD1A0 \uD544\uC694","report.status.error":"\uC624\uB958","synthesis.status.consensus":"\uD569\uC758 \uB3C4\uB2EC","synthesis.status.escalated":"\uBD80\uBD84 \uD569\uC758 / \uC5D0\uC2A4\uCEEC\uB808\uC774\uC158","synthesis.section.acceptedItems":"\uCC44\uD0DD \uD56D\uBAA9","synthesis.section.rejectedItems":"\uAE30\uAC01 / \uCCA0\uD68C \uD56D\uBAA9","synthesis.section.openItems":"\uBBF8\uACB0 \uD56D\uBAA9","synthesis.section.sources":"\uADFC\uAC70","synthesis.narration.consensusIn":"\uC804\uCCB4 {max}\uB77C\uC6B4\uB4DC \uC911 {round}\uB77C\uC6B4\uB4DC\uC5D0\uC11C \uD569\uC758\uC5D0 \uB3C4\uB2EC\uD558\uC600\uC2B5\uB2C8\uB2E4.","synthesis.narration.escalated":"{round}\uB77C\uC6B4\uB4DC \uB3D9\uC548 \uD569\uC758\uC5D0 \uC774\uB974\uC9C0 \uBABB\uD558\uC5EC \uC0AC\uC6A9\uC790 \uD310\uB2E8\uC73C\uB85C \uC5D0\uC2A4\uCEEC\uB808\uC774\uC158\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","synthesis.narration.leaderNote":"\uB9AC\uB354 \uBA54\uBAA8","approval.pending":"\uB9AC\uB354 \uC2B9\uC778\uC744 \uAE30\uB2E4\uB9AC\uACE0 \uC788\uC2B5\uB2C8\uB2E4. `agent_debate_approve`, `agent_debate_continue`, `agent_debate_reject` \uC911 \uD558\uB098\uB97C \uD638\uCD9C\uD574 \uC8FC\uC2ED\uC2DC\uC624.","approval.timeout":"\uB9AC\uB354 \uACB0\uC815\uC744 \uAE30\uB2E4\uB9AC\uB2E4 \uC138\uC158\uC774 \uC2DC\uAC04 \uCD08\uACFC\uB418\uC5C8\uC2B5\uB2C8\uB2E4({hours}\uC2DC\uAC04).","moderator.narration.roundHeader":"{round}/{max} \uB77C\uC6B4\uB4DC","moderator.narration.consensusInRound":"{round}\uB77C\uC6B4\uB4DC \uB9CC\uC5D0 \uD569\uC758\uC5D0 \uB3C4\uB2EC\uD558\uC600\uC2B5\uB2C8\uB2E4.","moderator.narration.dissentDetailHeader":"\uBBF8\uD574\uACB0 \uD56D\uBAA9","moderator.narration.noInterest":"\uCC38\uAC00\uC790 \uAD00\uC2EC \uC5C6\uC74C","moderator.narration.participantDropout":"\uCC38\uAC00\uC790 `{participantId}`\uAC00 \uBC18\uBCF5\uC801 \uC2E4\uD328\uB85C \uC778\uD574 \uC0AC\uC6A9 \uBD88\uAC00 \uC0C1\uD0DC\uB85C \uD45C\uC2DC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","moderator.narration.participantTimeout":"\uCC38\uAC00\uC790 `{participantId}`\uAC00 \uC774\uBC88 \uB77C\uC6B4\uB4DC\uC5D0 \uC751\uB2F5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.","moderator.narration.leaderTimeoutFooter":"\uB9AC\uB354 \uC751\uB2F5 \uC2DC\uAC04 \uCD08\uACFC","moderator.narration.rejected":"\uB9AC\uB354\uC5D0 \uC758\uD574 \uC138\uC158\uC774 \uAE30\uAC01\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","moderator.narration.approved":"\uB9AC\uB354\uC5D0 \uC758\uD574 \uC138\uC158\uC774 \uC2B9\uC778\uB418\uC5C8\uC2B5\uB2C8\uB2E4.","moderator.narration.aliasClarification":"\uBCC4\uCE6D \uD655\uC778 \uB2E8\uACC4","prompt.system.moderator":"\uB2F9\uC2E0\uC740 \uAD6C\uC870\uD654\uB41C \uB2E4\uC911 AI \uD1A0\uB860\uC758 \uC911\uC7AC\uC790\uC785\uB2C8\uB2E4. \uC81C\uC548\uC744 \uC9C1\uC811 \uC791\uC131\uD558\uC9C0 \uC54A\uC73C\uBA70, \uAD6C\uC870\uD654\uB41C \uD22C\uD45C\uB97C \uC9D1\uACC4\uD558\uACE0 \uC911\uB9BD\uC801\uC778 \uD569\uC758\uC548\uC744 \uC0B0\uCD9C\uD569\uB2C8\uB2E4. \uD504\uB85C\uD1A0\uCF5C\uC774 \uC815\uC758\uD55C \uCC44\uB110 \uC548\uC5D0\uC11C\uB9CC \uC751\uB2F5\uD558\uC2ED\uC2DC\uC624.","error.participantTimeout":"\uCC38\uAC00\uC790 `{participantId}`\uAC00 {seconds}\uCD08 \uB0B4\uC5D0 \uC751\uB2F5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.","error.parseFailure":"\uCC38\uAC00\uC790 `{participantId}`\uC758 `<{tag}>` \uBE14\uB85D\uC744 \uD574\uC11D\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.","error.sessionNotFound":"\uD1A0\uB860 \uC138\uC158 `{sessionId}`\uC744(\uB97C) \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","error.invalidState":"\uC0C1\uD0DC `{state}`\uC5D0\uC11C\uB294 `{operation}` \uC791\uC5C5\uC744 \uC218\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.","error.unknownLocaleFallback":"\uC54C \uC218 \uC5C6\uB294 \uB85C\uCF00\uC77C `{locale}`; \uAE30\uBCF8\uAC12 `{fallback}`(\uC73C)\uB85C \uB300\uCCB4\uD569\uB2C8\uB2E4.","askUser.escalation.header":"\uCD5C\uB300 \uB77C\uC6B4\uB4DC\uC5D0 \uB3C4\uB2EC\uD558\uC600\uC73C\uB098 \uD569\uC758\uC5D0 \uC774\uB974\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4","askUser.escalation.question":"\uC5B4\uB5BB\uAC8C \uC9C4\uD589\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?","askUser.escalation.continue":"{rounds}\uB77C\uC6B4\uB4DC \uCD94\uAC00 \uC9C4\uD589","askUser.escalation.escalate":"\uD569\uC758 \uC5C6\uC774 \uC5D0\uC2A4\uCEEC\uB808\uC774\uC158","askUser.escalation.stop":"\uD1A0\uB860 \uC885\uB8CC","provider.readiness.section":"Provider \uC900\uBE44 \uC0C1\uD0DC","provider.readiness.actionRequired":"\uC0AC\uC6A9\uC790 \uD655\uC778 \uD544\uC694","provider.readiness.status.queued":"\uB300\uAE30 \uC911","provider.readiness.status.checking":"\uD655\uC778 \uC911","provider.readiness.status.ready":"\uC900\uBE44\uB428","provider.readiness.status.warming":"\uC608\uC5F4 \uC911","provider.readiness.status.warm":"\uC608\uC5F4\uB428","provider.readiness.status.unavailable":"\uC0AC\uC6A9 \uBD88\uAC00","provider.readiness.status.auth-needed":"\uC778\uC99D \uD544\uC694","provider.readiness.status.workspace-blocked":"\uC791\uC5C5 \uD3F4\uB354 \uC2E0\uB8B0 \uCC28\uB2E8","provider.readiness.status.disabled":"\uBE44\uD65C\uC131\uD654\uB428","provider.readiness.status.skipped":"\uAC74\uB108\uB700","provider.readiness.status.unknown":"\uC54C \uC218 \uC5C6\uC74C","provider.routing.section":"Provider \uB77C\uC6B0\uD305","provider.routing.selected":"\uC120\uD0DD\uB428","provider.routing.skipped":"\uC81C\uC678\uB428","provider.routing.traceData":"trace \uB370\uC774\uD130","provider.trust.workspaceBlocked":"{providerId}\uAC00 \uC774 \uC791\uC5C5 \uD3F4\uB354\uB97C \uC2E0\uB8B0\uD558\uC9C0 \uC54A\uC544 \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers}\uAC00 \uC774 \uC791\uC5C5 \uD3F4\uB354\uB97C \uC2E0\uB8B0\uD558\uC9C0 \uC54A\uC544 \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: {workspaceBaseDir}","provider.trust.question":"{providerId}\uC5D0 \uC774 \uD504\uB85C\uC81D\uD2B8 \uD3F4\uB354\uB9CC trusted\uB85C \uCD94\uAC00\uD560\uAE4C\uC694?","provider.trust.batch.question":"\uC9C0\uC6D0\uB418\uB294 provider\uC5D0 \uC774 \uD504\uB85C\uC81D\uD2B8 \uD3F4\uB354\uB9CC trusted\uB85C \uCD94\uAC00\uD560\uAE4C\uC694?","provider.trust.option.apply":"\uC774 \uD504\uB85C\uC81D\uD2B8\uB9CC \uCD94\uAC00\uD558\uACE0 \uACC4\uC18D","provider.trust.option.skip":"{providerId} \uC81C\uC678\uD558\uACE0 \uACC4\uC18D","provider.trust.batch.option.skip":"\uD574\uB2F9 provider \uC81C\uC678\uD558\uACE0 \uACC4\uC18D","provider.trust.option.abort":"\uC911\uB2E8","provider.trust.apply.approvedRequired":"\uC791\uC5C5 \uD3F4\uB354 trust \uC124\uC815\uC740 \uC0AC\uC6A9\uC790\uC758 \uBA85\uC2DC\uC801 \uC2B9\uC778 \uD6C4\uC5D0\uB9CC \uBCC0\uACBD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.","provider.trust.apply.workspaceRequired":"\uC791\uC5C5 \uD3F4\uB354 trust \uC124\uC815\uC744 \uBCC0\uACBD\uD558\uB824\uBA74 \uB300\uC0C1 workspace \uD3F4\uB354\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.","provider.trust.apply.unsupported":"{providerId}\uB294 \uC790\uB3D9 \uC791\uC5C5 \uD3F4\uB354 trust \uC5C5\uB370\uC774\uD2B8\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","provider.trust.apply.result":"{providerId} \uC791\uC5C5 \uD3F4\uB354 trust \uACB0\uACFC: {status} ({workspaceBaseDir})","provider.trust.apply.singleToolInstruction":"\uC0AC\uC6A9\uC790\uAC00 \uBA85\uC2DC\uC801\uC73C\uB85C \uC2B9\uC778\uD55C \uB4A4 provider\uB9C8\uB2E4 provider_trust_apply\uB97C \uD55C \uBC88\uC529 \uD638\uCD9C\uD558\uC138\uC694. \uD638\uC2A4\uD2B8 \uAD8C\uD55C \uBAA8\uB378\uC774 \uBC30\uCE58 trust \uBCC0\uACBD\uC744 \uBA85\uC2DC\uC801\uC73C\uB85C \uD5C8\uC6A9\uD560 \uB54C\uB9CC \uBC30\uCE58 trust\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.","provider.trust.batch.resultHeader":"Provider \uC791\uC5C5 \uD3F4\uB354 trust \uACB0\uACFC","common.yes":"\uC608","common.no":"\uC544\uB2C8\uC694","common.none":"(\uC5C6\uC74C)","common.default":"(\uAE30\uBCF8\uAC12)","common.unknown":"(\uC54C \uC218 \uC5C6\uC74C)","common.notRecorded":"(\uAE30\uB85D \uC5C6\uC74C)","common.notGeneratedYet":"(\uC544\uC9C1 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC74C)","common.available":"\uC0AC\uC6A9 \uAC00\uB2A5","common.unavailable":"\uC0AC\uC6A9 \uBD88\uAC00","common.enabled":"\uD65C\uC131\uD654\uB428","common.disabled":"\uBE44\uD65C\uC131\uD654\uB428","common.ok":"\uC815\uC0C1","common.degraded":"\uC131\uB2A5 \uC800\uD558","common.error":"\uC624\uB958","common.failed":"\uC2E4\uD328","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra \uC124\uC815","setup.currentConfig.notFound":"\uD604\uC7AC \uC124\uC815: \uC5C6\uC74C","setup.currentConfig.present":"\uD604\uC7AC \uC124\uC815: \uC788\uC74C","setup.currentConfig.presentNoProviders":"\uD604\uC7AC \uC124\uC815: \uC788\uC74C(provider \uD65C\uC131\uD654 \uC5C6\uC74C)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"\uC124\uC815 \uD544\uC694: \uC608","setup.recommendedNextAction":"\uAD8C\uC7A5 \uB2E4\uC74C \uC870\uCE58: \uC0AC\uC6A9\uC790\uC5D0\uAC8C provider \uC120\uD0DD\uACFC locale\uC744 \uD655\uC778\uD55C \uB4A4 setup_apply\uB97C \uD638\uCD9C\uD558\uC138\uC694.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"\uAC10\uC9C0\uB41C provider","setup.detected.none":"(\uAC10\uC9C0\uB41C \uD56D\uBAA9 \uC5C6\uC74C)","setup.hostAssets":"Host \uC790\uC0B0","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra \uC124\uC815 \uBBF8\uB9AC\uBCF4\uAE30","setup.apply.appliedTitle":"Agestra \uC124\uC815 \uC801\uC6A9\uB428","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"\uB4F1\uB85D\uB41C Provider","provider.list.none":"\uB4F1\uB85D\uB41C provider\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","provider.health.title":"Health \uD655\uC778 \uACB0\uACFC","provider.health.none":"\uD655\uC778\uD560 provider\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"\uC0C1\uD0DC","provider.label.message":"\uBA54\uC2DC\uC9C0","provider.label.error":"\uC624\uB958","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"Workspace Trust \uC0AC\uC804 \uD655\uC778","workspaceTrust.policy":"\uC815\uCC45","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"\uD0D0\uC9C0","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"\uB0B4\uC6A9\uC740 \uC77D\uC9C0 \uC54A\uC74C","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"\uCC28\uB2E8\uB428","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus \uC138\uC158","consensus.label.ledger":"Consensus \uC7A5\uBD80","consensus.label.sessionId":"Session ID","consensus.label.status":"\uC0C1\uD0DC","consensus.label.phase":"\uB2E8\uACC4","consensus.label.updated":"\uC5C5\uB370\uC774\uD2B8","consensus.label.created":"Created","consensus.label.round":"\uB77C\uC6B4\uB4DC","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider \uC900\uBE44 \uC0C1\uD0DC","consensus.section.participantProgress":"\uCC38\uAC00\uC790 \uC9C4\uD589 \uC0C1\uD0DC","consensus.section.pendingHostTurns":"\uB300\uAE30 \uC911\uC778 host turn","consensus.section.documents":"\uBB38\uC11C","consensus.section.roundState":"\uB77C\uC6B4\uB4DC \uC0C1\uD0DC","consensus.section.runEvidence":"\uC2E4\uD589 \uC99D\uAC70","consensus.section.runInspector":"\uC2E4\uD589 \uAC80\uC0AC","consensus.section.recentActivity":"\uCD5C\uADFC \uD65C\uB3D9","consensus.section.allowedActions":"\uD5C8\uC6A9\uB41C \uC791\uC5C5","consensus.section.researchPreprocessorStatus":"Research \uC804\uCC98\uB9AC \uC0C1\uD0DC","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.starting":"starting","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate","consensus.action.nextStep":"\uB2E4\uC74C \uB2E8\uACC4 - \uD558\uB098\uB97C \uC120\uD0DD\uD558\uC138\uC694:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"\uACB0\uB860 \uC2B9\uC778","consensus.action.extend":"\uD1A0\uB860 \uC5F0\uC7A5","consensus.action.reject":"\uC138\uC158 \uC911\uB2E8","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'\uCC38\uAC00\uC790 "{participantId}"\uC758 host turn\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.',"consensus.submit.remaining":"\uB0A8\uC740 host turn","consensus.submit.allIn":"\uB300\uAE30 \uC911\uC778 host turn\uC774 \uBAA8\uB450 \uB4E4\uC5B4\uC654\uC2B5\uB2C8\uB2E4. Consensus \uB77C\uC6B4\uB4DC\uAC00 \uACE7 \uC7AC\uAC1C\uB429\uB2C8\uB2E4.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"\uC218\uB834 \uB300\uAE30","consensus.research.state.noOpenItems":"\uC218\uB834 \uB300\uAE30 \uD56D\uBAA9 \uC5C6\uC74C","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"\uD1A0\uB860 \uCDE8\uD569 \uBB38\uC11C","consensusDoc.debate.sourceLedger":"\uC0C1\uD0DC \uC6D0\uBCF8 JSON","consensusDoc.debate.participants":"\uCC38\uC5EC AI","consensusDoc.debate.currentRound":"\uD604\uC7AC \uB77C\uC6B4\uB4DC","consensusDoc.dashboard":"\uD56D\uBAA9 \uD604\uD669\uD310","consensusDoc.item.id":"ID","consensusDoc.item.item":"\uD56D\uBAA9","consensusDoc.item.status":"\uC0C1\uD0DC","consensusDoc.item.proposer":"\uC81C\uC2DC\uC790","consensusDoc.item.agreement":"\uB3D9\uC758 \uD604\uD669","consensusDoc.item.currentConclusion":"\uD604\uC7AC \uACB0\uB860/\uB9C9\uD78C \uC774\uC720","consensusDoc.item.purpose":"\uBB34\uC5C7\uC744 \uC704\uD55C \uD56D\uBAA9\uC778\uAC00","consensusDoc.item.originalClaim":"\uC6D0 \uC8FC\uC7A5","consensusDoc.item.currentSummary":"\uD604\uC7AC \uC815\uB9AC","consensusDoc.item.conclusion":"\uACB0\uB860","consensusDoc.item.stance":"\uC785\uC7A5","consensusDoc.item.content":"\uB0B4\uC6A9","consensusDoc.item.newItemProposal":"\uC0C8 \uD56D\uBAA9 \uC81C\uC548","consensusDoc.item.previousStanceMissing":"\uC774\uC804 \uC785\uC7A5 \uBBF8\uAE30\uB85D","consensusDoc.item.stanceChanged":"\uC785\uC7A5 \uBCC0\uACBD: \uC774\uC804 {previous}\uC5D0\uC11C \uD604\uC7AC {current}","consensusDoc.item.respondsTo":"\uC751\uB2F5 \uB300\uC0C1","consensusDoc.item.persuasionEvidence":"\uC124\uB4DD \uADFC\uAC70","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"\uD55C\uB208\uC5D0 \uBCF4\uAE30","consensusDoc.synthesis.topic":"\uC8FC\uC81C","consensusDoc.synthesis.participants":"\uCC38\uC5EC AI","consensusDoc.synthesis.roundReached":"\uD569\uC758\uAE4C\uC9C0 \uB3C4\uB2EC\uD55C \uB77C\uC6B4\uB4DC","consensusDoc.synthesis.acceptedCount":"\uD569\uC758\uB41C \uD56D\uBAA9","consensusDoc.synthesis.excludedCount":"\uC81C\uC678 \uD569\uC758 \uD56D\uBAA9","consensusDoc.synthesis.openCount":"\uBBF8\uD569\uC758 / \uC758\uACAC \uD544\uC694 \uD56D\uBAA9","consensusDoc.synthesis.ledger":"JSON \uC7A5\uBD80","consensusDoc.synthesis.debateDocument":"\uCDE8\uD569\uBB38\uC11C","consensusDoc.synthesis.finalTable":"\uCD5C\uC885 \uACB0\uB860\uD45C","consensusDoc.synthesis.finalStatus":"\uCD5C\uC885 \uC0C1\uD0DC","consensusDoc.synthesis.finalDecision":"\uACB0\uB860","consensusDoc.synthesis.agreedProviders":"\uB3D9\uC758\uD55C AI","consensusDoc.synthesis.disagreedProviders":"\uBC18\uB300\uD55C AI","consensusDoc.synthesis.opinionProviders":"\uC758\uACAC/\uC218\uC815 \uC81C\uC548","consensusDoc.synthesis.accepted":"\uD569\uC758\uB41C \uD56D\uBAA9","consensusDoc.synthesis.excluded":"\uC81C\uC678 \uD569\uC758 \uD56D\uBAA9","consensusDoc.synthesis.open":"\uBBF8\uD569\uC758 / \uC758\uACAC \uD544\uC694 \uD56D\uBAA9","consensusDoc.synthesis.followUp":"\uB2E4\uC74C\uC5D0 \uD574\uC57C \uD560 \uC77C","consensusDoc.synthesis.noDecisions":"\uACB0\uC815\uB41C \uD56D\uBAA9\uC774 \uC5C6\uB2E4.","consensusDoc.synthesis.followAccepted":"{id}: \uCC44\uD0DD \uACB0\uC815({title})\uC744 \uBC18\uC601\uD558\uB418, {reason}","consensusDoc.synthesis.followExcluded":"{id}: \uC81C\uC678 \uACB0\uC815({title})\uC740 \uC7AC\uB3C4\uC785\uD558\uC9C0 \uC54A\uB294\uB2E4. {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} \uCD94\uAC00 \uADFC\uAC70 \uD655\uC778 \uB610\uB294 \uC0AC\uC6A9\uC790 \uD310\uB2E8\uC774 \uD544\uC694\uD558\uB2E4.","consensusDoc.synthesis.providerContribution":"\uD504\uB85C\uBC14\uC774\uB354\uBCC4 \uC131\uACFC","consensusDoc.synthesis.proposedCount":"\uC81C\uC548 \uC218","consensusDoc.synthesis.acceptedProposals":"\uD569\uC758\uB41C \uC81C\uC548","consensusDoc.synthesis.exclusionHelp":"\uC81C\uC678 \uD569\uC758\uC5D0 \uAE30\uC5EC","consensusDoc.synthesis.dissentContribution":"\uBC18\uB300/\uC758\uACAC\uC73C\uB85C \uAE30\uC5EC\uD55C \uD56D\uBAA9","consensusDoc.synthesis.characteristic":"\uD2B9\uC9D5","consensusDoc.references":"\uCC38\uC870 \uBB38\uC11C","consensusDoc.references.validationJson":"\uAC80\uC99D JSON","consensusDoc.references.synthesis":"\uACB0\uB860\uBB38\uC11C","consensusDoc.references.inputDocument":"{provider} \uC785\uB825 \uBB38\uC11C","consensusDoc.unresolvedExplanation":"\uBBF8\uD569\uC758 \uD56D\uBAA9 \uC124\uBA85","consensusDoc.documentPaths":"\uBB38\uC11C \uACBD\uB85C","consensusDoc.noItems":"(\uC5C6\uC74C)","consensusDoc.decision.purpose":"\uBB34\uC5C7\uC744 \uC704\uD55C \uD56D\uBAA9","consensusDoc.decision.finalDecision":"\uCD5C\uC885 \uACB0\uC815","consensusDoc.decision.agreedProviders":"\uB3D9\uC758\uD55C AI","consensusDoc.decision.disagreedProviders":"\uBC18\uB300\uD55C AI","consensusDoc.decision.currentStances":"\uD604\uC7AC \uC785\uC7A5","consensusDoc.decision.changeHistory":"\uBCC0\uACBD \uC5EC\uBD80","consensusDoc.decision.sourceLocations":"\uD1A0\uB860/\uADFC\uAC70 \uC704\uCE58","consensusDoc.decision.blockedDecision":"\uB9C9\uD78C \uACB0\uC815","consensusDoc.decision.howToResolve":"\uD574\uACB0\uD558\uB824\uBA74: \uBC18\uB300/\uC758\uACAC\uC744 \uB0B8 AI\uAC00 \uC694\uAD6C\uD55C \uADFC\uAC70\uB97C \uBCF4\uAC15\uD558\uAC70\uB098 \uC0AC\uC6A9\uC790\uAC00 \uCD5C\uC885 \uBC29\uD5A5\uC744 \uC120\uD0DD\uD574\uC57C \uD55C\uB2E4.","consensusDoc.decision.reason":"\uACB0\uC815 \uC774\uC720","consensusDoc.decision.keyComments":"\uC8FC\uC694 \uC758\uACAC","consensusDoc.decision.acceptedOriginal":"\uC6D0\uC548 \uADF8\uB300\uB85C \uD569\uC758\uB428.","consensusDoc.decision.excludedOriginal":"\uC6D0\uC548\uC774 \uC81C\uC678 \uD569\uC758\uB85C \uB05D\uB0AC\uB2E4.","consensusDoc.decision.noFinalChange":"\uC544\uC9C1 \uD655\uC815\uB41C \uBCC0\uACBD\uC548 \uC5C6\uC74C.","consensusDoc.decision.revisionFrom":"{parentId}\uC5D0\uC11C \uB098\uC628 \uC218\uC815\uC548\uC774 \uD604\uC7AC \uD56D\uBAA9\uC774\uB2E4.","consensusDoc.decision.revisionLedTo":"\uC218\uC815 \uC81C\uC548\uC774 {itemIds} \uD56D\uBAA9\uC73C\uB85C \uC774\uC5B4\uC84C\uB2E4.","consensusDoc.reason.acceptedBase":"\uCC44\uD0DD\uB41C \uB0B4\uC6A9\uC740 {base}","consensusDoc.reason.excludedBase":"\uC81C\uC678\uB41C \uB0B4\uC6A9\uC740 {base}","consensusDoc.reason.keyEvidence":"\uC8FC\uC694 \uADFC\uAC70\uB294 {evidence}","consensusDoc.reason.exclusionEvidence":"\uC81C\uC678 \uD310\uB2E8\uC758 \uADFC\uAC70\uB294 {evidence}","consensusDoc.reason.needImplementationCheck":"\uBA85\uC2DC \uADFC\uAC70\uAC00 \uBD80\uC871\uD55C \uBD80\uBD84\uC740 \uAD6C\uD604 \uC804 \uCF54\uB4DC \uB610\uB294 \uBB38\uC11C \uD655\uC778\uC73C\uB85C \uBCF4\uAC15\uD574\uC57C \uD55C\uB2E4.","consensusDoc.reason.needDissentCheck":"\uC81C\uC678 \uC774\uC720\uB294 \uCC38\uAC00\uC790 \uC758\uACAC\uC758 \uBC18\uB300 \uB610\uB294 \uC704\uD5D8 \uC9C0\uC801\uC744 \uAE30\uC900\uC73C\uB85C \uD655\uC778\uD574\uC57C \uD55C\uB2E4.","consensusDoc.reason.sourceConstraint":"\uADFC\uAC70 \uC704\uCE58\uB294 {refs}\uC5D0 \uB0A8\uC544 \uC788\uB2E4.","consensusDoc.reason.sourceConstraintMissing":"\uAD6C\uD604 \uC2DC \uCD94\uAC00 \uADFC\uAC70\uAC00 \uD544\uC694\uD558\uBA74 \uCDE8\uD569\uBB38\uC11C\uC758 \uCC38\uAC00\uC790 \uC758\uACAC\uC744 \uBA3C\uC800 \uD655\uC778\uD574\uC57C \uD55C\uB2E4.","consensusDoc.reason.blockedNoEvidence":"\uB0A8\uC740 \uC7C1\uC810\uC740 \uCD94\uAC00 \uADFC\uAC70 \uB610\uB294 \uC0AC\uC6A9\uC790 \uC120\uD0DD\uC774 \uD544\uC694\uD558\uB2E4.","consensusDoc.blocker.none":"\uC544\uC9C1 \uBAA8\uB4E0 \uCC38\uAC00\uC790\uC758 \uBA85\uC2DC \uB3D9\uC758\uAC00 \uBAA8\uC774\uC9C0 \uC54A\uC558\uB2E4.","consensusDoc.blocker.prefix":"\uB9C9\uD78C \uC774\uC720","consensusDoc.conclusion.prefix":"\uACB0\uB860","consensusDoc.providerContribution.proposed":"\uC81C\uC548 \uAE30\uC5EC","consensusDoc.providerContribution.reviewed":"\uAC80\uD1A0 \uAE30\uC5EC","consensusDoc.runInspection.problemSummary":"\uBB38\uC81C \uC694\uC57D","consensusDoc.runInspection.noDiagnostics":"\uAE30\uB85D\uB41C \uC2E4\uD328 \uC9C4\uB2E8 \uC5C6\uC74C","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"\uB3D9\uC758","consensus.stance.disagree":"\uBC18\uB300","consensus.stance.opinion":"\uC758\uACAC","consensus.stance.revise":"\uC218\uC815 \uC81C\uC548","consensus.stance.no_response":"\uC751\uB2F5 \uC5C6\uC74C","consensus.stance.not_assigned":"\uC774\uBC88 \uD134 \uC81C\uC678","consensus.previousStance.abstain":"\uAE30\uAD8C","consensus.previousStance.needs_human":"\uC0AC\uB78C \uD310\uB2E8 \uD544\uC694","consensus.automatic":"\uC790\uB3D9","consensus.heartbeat.runningProvider":"[\uD569\uC758 \uC5D4\uC9C4] {provider} \uC9C4\uD589 \uC911...","consensus.heartbeat.runningSummary":"[\uD569\uC758 \uC5D4\uC9C4] {round}\uB77C\uC6B4\uB4DC \uC9C4\uD589 \uC911 | \uD569\uC758 {accepted}\uAC74 | \uBBF8\uD569\uC758 {unresolved}\uAC74","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research \uC804\uCC98\uB9AC artifact","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader \uCD5C\uC885 \uBB38\uC11C \uB300\uC0C1","researchConsensus.status":"\uC0C1\uD0DC","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"\uC804\uCC98\uB9AC \uC0C1\uD0DC","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"\uC870\uC0AC \uC81C\uCD9C \uC6D0\uBB38","researchDoc.originalFindings":"\uC6D0 \uC81C\uCD9C findings","researchDoc.supplementLedger":"\uBCF4\uC644 \uC694\uCCAD \uAE30\uB85D","researchDoc.mergedGroupsSection":"\uBCD1\uD569 \uADF8\uB8F9","researchDoc.openDebateItemsSection":"\uD1A0\uB860 \uB300\uAE30 \uD56D\uBAA9","researchDoc.roundPackets":"\uB77C\uC6B4\uB4DC \uC804\uB2EC/\uC751\uB2F5 \uC6D0\uBB38","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}"};var Xk={"report.header.topic":"\u30C6\u30FC\u30DE","report.header.participants":"\u53C2\u52A0\u8005","report.header.individualDocs":"\u500B\u5225\u30EC\u30D3\u30E5\u30FC\u6587\u66F8","report.table.proposer":"\u63D0\u6848\u8005","report.table.opinion":"\u610F\u898B","report.table.severity":"\u91CD\u5927\u5EA6","report.table.agreement":"\u5408\u610F\u7387","report.section.mainTable":"\u63D0\u6848\u53F0\u5E33","report.section.dissentDetail":"\u672A\u5408\u610F\u9805\u76EE\u306E\u8A73\u7D30","report.section.contributionSummary":"AI \u8CA2\u732E\u5EA6\u30B5\u30DE\u30EA\u30FC","report.contribution.ai":"AI","report.contribution.proposed":"\u63D0\u6848","report.contribution.accepted":"\u63A1\u629E","report.contribution.revises":"\u4FEE\u6B63\u8981\u8ACB","report.contribution.abstains":"\u68C4\u6A29","report.footer.synthesisPath":"\u6700\u7D42\u5408\u610F\u6587\u66F8","report.footer.debatePath":"\u8A0E\u8B70\u8A18\u9332","report.footer.pendingSynthesis":"(\u30EA\u30FC\u30C0\u30FC\u627F\u8A8D\u5F85\u3061)","report.status.running":"\u9032\u884C\u4E2D","report.status.readyForApproval":"\u627F\u8A8D\u5F85\u3061","report.status.consensus":"\u5408\u610F\u5F62\u6210","report.status.escalated":"\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3","report.status.approved":"\u627F\u8A8D\u6E08\u307F","report.status.rejected":"\u5374\u4E0B","report.status.leaderTimeout":"\u30EA\u30FC\u30C0\u30FC\u5FDC\u7B54\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8","report.status.partialCompleted":"\u90E8\u5206\u5B8C\u4E86","report.status.needsHumanReview":"\u4EBA\u306B\u3088\u308B\u78BA\u8A8D\u304C\u5FC5\u8981","report.status.error":"\u30A8\u30E9\u30FC","synthesis.status.consensus":"\u5408\u610F\u306B\u9054\u3057\u307E\u3057\u305F","synthesis.status.escalated":"\u90E8\u5206\u5408\u610F / \u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3","synthesis.section.acceptedItems":"\u63A1\u629E\u9805\u76EE","synthesis.section.rejectedItems":"\u5374\u4E0B / \u53D6\u308A\u4E0B\u3052\u9805\u76EE","synthesis.section.openItems":"\u672A\u6C7A\u9805\u76EE","synthesis.section.sources":"\u6839\u62E0","synthesis.narration.consensusIn":"\u5168 {max} \u30E9\u30A6\u30F3\u30C9\u4E2D {round} \u30E9\u30A6\u30F3\u30C9\u76EE\u3067\u5408\u610F\u306B\u9054\u3057\u307E\u3057\u305F\u3002","synthesis.narration.escalated":"{round} \u30E9\u30A6\u30F3\u30C9\u7D4C\u904E\u3057\u3066\u3082\u5408\u610F\u306B\u81F3\u3089\u305A\u3001\u30E6\u30FC\u30B6\u30FC\u5224\u65AD\u3067\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3\u3055\u308C\u307E\u3057\u305F\u3002","synthesis.narration.leaderNote":"\u30EA\u30FC\u30C0\u30FC\u30E1\u30E2","approval.pending":"\u30EA\u30FC\u30C0\u30FC\u627F\u8A8D\u3092\u5F85\u6A5F\u3057\u3066\u3044\u307E\u3059\u3002`agent_debate_approve`\u3001`agent_debate_continue`\u3001`agent_debate_reject` \u306E\u3044\u305A\u308C\u304B\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002","approval.timeout":"\u30EA\u30FC\u30C0\u30FC\u5224\u65AD\u3092\u5F85\u6A5F\u4E2D\u306B\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F({hours} \u6642\u9593)\u3002","moderator.narration.roundHeader":"\u30E9\u30A6\u30F3\u30C9 {round}/{max}","moderator.narration.consensusInRound":"{round} \u30E9\u30A6\u30F3\u30C9\u76EE\u3067\u5408\u610F\u306B\u9054\u3057\u307E\u3057\u305F\u3002","moderator.narration.dissentDetailHeader":"\u672A\u89E3\u6C7A\u9805\u76EE","moderator.narration.noInterest":"\u53C2\u52A0\u8005\u306E\u95A2\u5FC3\u306A\u3057","moderator.narration.participantDropout":"\u53C2\u52A0\u8005 `{participantId}` \u306F\u7E70\u308A\u8FD4\u3057\u306E\u5931\u6557\u306B\u3088\u308A\u5229\u7528\u4E0D\u53EF\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u307E\u3057\u305F\u3002","moderator.narration.participantTimeout":"\u53C2\u52A0\u8005 `{participantId}` \u306F\u4ECA\u56DE\u306E\u30E9\u30A6\u30F3\u30C9\u3067\u5FDC\u7B54\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002","moderator.narration.leaderTimeoutFooter":"\u30EA\u30FC\u30C0\u30FC\u5FDC\u7B54\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8","moderator.narration.rejected":"\u30EA\u30FC\u30C0\u30FC\u306B\u3088\u308A\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u5374\u4E0B\u3055\u308C\u307E\u3057\u305F\u3002","moderator.narration.approved":"\u30EA\u30FC\u30C0\u30FC\u306B\u3088\u308A\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u627F\u8A8D\u3055\u308C\u307E\u3057\u305F\u3002","moderator.narration.aliasClarification":"\u5225\u540D\u78BA\u8A8D\u30D5\u30A7\u30FC\u30BA","prompt.system.moderator":"\u3042\u306A\u305F\u306F\u69CB\u9020\u5316\u30DE\u30EB\u30C1 AI \u8A0E\u8B70\u306E\u30E2\u30C7\u30EC\u30FC\u30BF\u30FC\u3067\u3059\u3002\u63D0\u6848\u3092\u81EA\u3089\u8D77\u6848\u305B\u305A\u3001\u69CB\u9020\u5316\u6295\u7968\u3092\u96C6\u8A08\u3057\u3066\u4E2D\u7ACB\u7684\u306A\u5408\u610F\u6848\u3092\u63D0\u793A\u3057\u307E\u3059\u3002\u30D7\u30ED\u30C8\u30B3\u30EB\u304C\u5B9A\u7FA9\u3059\u308B\u30C1\u30E3\u30CD\u30EB\u306E\u7BC4\u56F2\u5185\u3067\u306E\u307F\u5FDC\u7B54\u3057\u3066\u304F\u3060\u3055\u3044\u3002","error.participantTimeout":"\u53C2\u52A0\u8005 `{participantId}` \u306F {seconds} \u79D2\u4EE5\u5185\u306B\u5FDC\u7B54\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002","error.parseFailure":"\u53C2\u52A0\u8005 `{participantId}` \u306E `<{tag}>` \u30D6\u30ED\u30C3\u30AF\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002","error.sessionNotFound":"\u8A0E\u8B70\u30BB\u30C3\u30B7\u30E7\u30F3 `{sessionId}` \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002","error.invalidState":"\u72B6\u614B `{state}` \u3067\u306F\u64CD\u4F5C `{operation}` \u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\u3002","error.unknownLocaleFallback":"\u672A\u77E5\u306E\u30ED\u30B1\u30FC\u30EB `{locale}`\u3002\u65E2\u5B9A\u5024 `{fallback}` \u306B\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u3059\u3002","askUser.escalation.header":"\u6700\u5927\u30E9\u30A6\u30F3\u30C9\u306B\u9054\u3057\u307E\u3057\u305F\u304C\u5408\u610F\u306B\u81F3\u308A\u307E\u305B\u3093\u3067\u3057\u305F","askUser.escalation.question":"\u3069\u306E\u3088\u3046\u306B\u9032\u3081\u307E\u3059\u304B?","askUser.escalation.continue":"{rounds} \u30E9\u30A6\u30F3\u30C9\u8FFD\u52A0\u3057\u3066\u7D9A\u884C","askUser.escalation.escalate":"\u5408\u610F\u306A\u3057\u3067\u30A8\u30B9\u30AB\u30EC\u30FC\u30B7\u30E7\u30F3","askUser.escalation.stop":"\u8A0E\u8B70\u3092\u7D42\u4E86","provider.readiness.section":"\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u6E96\u5099\u72B6\u614B","provider.readiness.actionRequired":"\u30E6\u30FC\u30B6\u30FC\u78BA\u8A8D\u304C\u5FC5\u8981","provider.readiness.status.queued":"\u5F85\u6A5F\u4E2D","provider.readiness.status.checking":"\u78BA\u8A8D\u4E2D","provider.readiness.status.ready":"\u6E96\u5099\u5B8C\u4E86","provider.readiness.status.warming":"\u30A6\u30A9\u30FC\u30E0\u30A2\u30C3\u30D7\u4E2D","provider.readiness.status.warm":"\u30A6\u30A9\u30FC\u30E0\u30A2\u30C3\u30D7\u6E08\u307F","provider.readiness.status.unavailable":"\u5229\u7528\u4E0D\u53EF","provider.readiness.status.auth-needed":"\u8A8D\u8A3C\u304C\u5FC5\u8981","provider.readiness.status.workspace-blocked":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u3067\u30D6\u30ED\u30C3\u30AF","provider.readiness.status.disabled":"\u7121\u52B9","provider.readiness.status.skipped":"\u30B9\u30AD\u30C3\u30D7","provider.readiness.status.unknown":"\u4E0D\u660E","provider.routing.section":"\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u30EB\u30FC\u30C6\u30A3\u30F3\u30B0","provider.routing.selected":"\u9078\u629E\u6E08\u307F","provider.routing.skipped":"\u9664\u5916\u6E08\u307F","provider.routing.traceData":"\u30C8\u30EC\u30FC\u30B9\u30C7\u30FC\u30BF","provider.trust.workspaceBlocked":"{providerId} \u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u4FE1\u983C\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3067\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers} \u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u4FE1\u983C\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3067\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093: {workspaceBaseDir}","provider.trust.question":"{providerId} \u306B\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3060\u3051\u3092 trusted \u3068\u3057\u3066\u8FFD\u52A0\u3057\u307E\u3059\u304B?","provider.trust.batch.question":"\u5BFE\u5FDC\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u306B\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3060\u3051\u3092 trusted \u3068\u3057\u3066\u8FFD\u52A0\u3057\u307E\u3059\u304B?","provider.trust.option.apply":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4FE1\u983C\u3057\u3066\u7D9A\u884C","provider.trust.option.skip":"{providerId} \u306A\u3057\u3067\u7D9A\u884C","provider.trust.batch.option.skip":"\u3053\u308C\u3089\u306E\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u306A\u3057\u3067\u7D9A\u884C","provider.trust.option.abort":"\u4E2D\u6B62","provider.trust.apply.approvedRequired":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u8A2D\u5B9A\u306F\u3001\u30E6\u30FC\u30B6\u30FC\u306E\u660E\u793A\u7684\u306A\u627F\u8A8D\u5F8C\u306B\u306E\u307F\u5909\u66F4\u3067\u304D\u307E\u3059\u3002","provider.trust.apply.workspaceRequired":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u8A2D\u5B9A\u3092\u5909\u66F4\u3059\u308B\u306B\u306F\u3001\u5BFE\u8C61\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u30D5\u30A9\u30EB\u30C0\u30FC\u304C\u5FC5\u8981\u3067\u3059\u3002","provider.trust.apply.unsupported":"{providerId} \u306F\u81EA\u52D5\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u66F4\u65B0\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002","provider.trust.apply.result":"{providerId} \u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u7D50\u679C: {status} ({workspaceBaseDir})","provider.trust.apply.singleToolInstruction":"\u30E6\u30FC\u30B6\u30FC\u304C\u660E\u793A\u7684\u306B\u627F\u8A8D\u3057\u305F\u5F8C\u3001\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3054\u3068\u306B provider_trust_apply \u3092 1 \u56DE\u305A\u3064\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30DB\u30B9\u30C8\u306E\u6A29\u9650\u30E2\u30C7\u30EB\u304C\u4E00\u62EC trust \u5909\u66F4\u3092\u660E\u793A\u7684\u306B\u8A31\u53EF\u3059\u308B\u5834\u5408\u306E\u307F\u3001\u4E00\u62EC trust \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","provider.trust.batch.resultHeader":"\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC \u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u7D50\u679C","common.yes":"Yes","common.no":"No","common.none":"(none)","common.default":"(default)","common.unknown":"(unknown)","common.notRecorded":"(not recorded)","common.notGeneratedYet":"(not generated yet)","common.available":"Available","common.unavailable":"Unavailable","common.enabled":"enabled","common.disabled":"disabled","common.ok":"OK","common.degraded":"DEGRADED","common.error":"ERROR","common.failed":"failed","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7","setup.currentConfig.notFound":"Current config: not found","setup.currentConfig.present":"Current config: present","setup.currentConfig.presentNoProviders":"Current config: present (no providers enabled)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"Setup required: yes","setup.recommendedNextAction":"Recommended next action: ask the user for provider selection and locale, then call setup_apply.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"Detected providers","setup.detected.none":"(none detected)","setup.hostAssets":"Host assets","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra Setup Preview","setup.apply.appliedTitle":"Agestra Setup Applied","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"\u767B\u9332\u6E08\u307F\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC","provider.list.none":"No providers registered.","provider.health.title":"Health Check Results","provider.health.none":"No providers to check.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"Status","provider.label.message":"Message","provider.label.error":"Error","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4FE1\u983C\u306E\u4E8B\u524D\u78BA\u8A8D","workspaceTrust.policy":"Policy","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"Discovery","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"contents not read","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"Blocked","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus Session","consensus.label.ledger":"Consensus Ledger","consensus.label.sessionId":"Session ID","consensus.label.status":"Status","consensus.label.phase":"Phase","consensus.label.updated":"Updated","consensus.label.created":"Created","consensus.label.round":"Round","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider Readiness","consensus.section.participantProgress":"Participant Progress","consensus.section.pendingHostTurns":"Pending Host Turns","consensus.section.documents":"Documents","consensus.section.roundState":"Round State","consensus.section.runEvidence":"\u5B9F\u884C\u8A3C\u8DE1","consensus.section.runInspector":"Run Inspector","consensus.section.recentActivity":"Recent Activity","consensus.section.allowedActions":"Allowed Actions","consensus.section.researchPreprocessorStatus":"Research Preprocessor Status","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.starting":"starting","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate","consensus.action.nextStep":"Next step - choose one:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"Approve synthesis","consensus.action.extend":"Extend debate","consensus.action.reject":"Abandon session","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'Host turn accepted for participant "{participantId}".',"consensus.submit.remaining":"Remaining pending host turns","consensus.submit.allIn":"All pending host turns are in. The consensus round will resume shortly.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"waiting for convergence","consensus.research.state.noOpenItems":"no open convergence items","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"Debate aggregation document","consensusDoc.debate.sourceLedger":"Source ledger JSON","consensusDoc.debate.participants":"Participating AIs","consensusDoc.debate.currentRound":"Current round","consensusDoc.dashboard":"Item dashboard","consensusDoc.item.id":"ID","consensusDoc.item.item":"Item","consensusDoc.item.status":"Status","consensusDoc.item.proposer":"Proposer","consensusDoc.item.agreement":"Agreement","consensusDoc.item.currentConclusion":"Current conclusion / blocker","consensusDoc.item.purpose":"Purpose","consensusDoc.item.originalClaim":"Original claim","consensusDoc.item.currentSummary":"Current summary","consensusDoc.item.conclusion":"Conclusion","consensusDoc.item.stance":"Stance","consensusDoc.item.content":"Content","consensusDoc.item.newItemProposal":"New item proposal","consensusDoc.item.previousStanceMissing":"previous stance not recorded","consensusDoc.item.stanceChanged":"Stance changed: from {previous} to {current}","consensusDoc.item.respondsTo":"Responds to","consensusDoc.item.persuasionEvidence":"Persuasion evidence","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"\u6982\u8981","consensusDoc.synthesis.topic":"Topic","consensusDoc.synthesis.participants":"Participating AIs","consensusDoc.synthesis.roundReached":"Rounds to consensus","consensusDoc.synthesis.acceptedCount":"Accepted items","consensusDoc.synthesis.excludedCount":"Excluded items","consensusDoc.synthesis.openCount":"Open / needs-opinion items","consensusDoc.synthesis.ledger":"JSON ledger","consensusDoc.synthesis.debateDocument":"Aggregation document","consensusDoc.synthesis.finalTable":"\u6700\u7D42\u5224\u65AD\u8868","consensusDoc.synthesis.finalStatus":"Final status","consensusDoc.synthesis.finalDecision":"Conclusion","consensusDoc.synthesis.agreedProviders":"Agreed AIs","consensusDoc.synthesis.disagreedProviders":"Disagreed AIs","consensusDoc.synthesis.opinionProviders":"Opinion / revision suggestions","consensusDoc.synthesis.accepted":"Accepted items","consensusDoc.synthesis.excluded":"Excluded items","consensusDoc.synthesis.open":"Open / needs-opinion items","consensusDoc.synthesis.followUp":"Next actions","consensusDoc.synthesis.noDecisions":"No decided items.","consensusDoc.synthesis.followAccepted":"{id}: Apply the accepted decision ({title}); {reason}","consensusDoc.synthesis.followExcluded":"{id}: Do not reintroduce the excluded decision ({title}). {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} Additional evidence or a user decision is required.","consensusDoc.synthesis.providerContribution":"Provider contributions","consensusDoc.synthesis.proposedCount":"Proposed","consensusDoc.synthesis.acceptedProposals":"Accepted proposals","consensusDoc.synthesis.exclusionHelp":"Helped exclusions","consensusDoc.synthesis.dissentContribution":"Dissent/opinion contributions","consensusDoc.synthesis.characteristic":"Characteristic","consensusDoc.references":"Reference documents","consensusDoc.references.validationJson":"Validation JSON","consensusDoc.references.synthesis":"Synthesis document","consensusDoc.references.inputDocument":"{provider} input document","consensusDoc.unresolvedExplanation":"Unresolved item explanation","consensusDoc.documentPaths":"Document paths","consensusDoc.noItems":"(none)","consensusDoc.decision.purpose":"Purpose","consensusDoc.decision.finalDecision":"Final decision","consensusDoc.decision.agreedProviders":"Agreed AIs","consensusDoc.decision.disagreedProviders":"Disagreed AIs","consensusDoc.decision.currentStances":"Current stances","consensusDoc.decision.changeHistory":"Change history","consensusDoc.decision.sourceLocations":"Debate/evidence locations","consensusDoc.decision.blockedDecision":"Blocked decision","consensusDoc.decision.howToResolve":"To resolve: strengthen the evidence requested by AIs with dissent/opinions, or have the user choose the final direction.","consensusDoc.decision.reason":"Decision reason","consensusDoc.decision.keyComments":"Key comments","consensusDoc.decision.acceptedOriginal":"accepted as originally proposed.","consensusDoc.decision.excludedOriginal":"the original proposal ended as an excluded decision.","consensusDoc.decision.noFinalChange":"no finalized change yet.","consensusDoc.decision.revisionFrom":"this item is a revision derived from {parentId}.","consensusDoc.decision.revisionLedTo":"revision suggestions led to {itemIds}.","consensusDoc.reason.acceptedBase":"Accepted content: {base}","consensusDoc.reason.excludedBase":"Excluded content: {base}","consensusDoc.reason.keyEvidence":"Key evidence: {evidence}","consensusDoc.reason.exclusionEvidence":"Exclusion evidence: {evidence}","consensusDoc.reason.needImplementationCheck":"Any weak evidence should be strengthened by checking code or documents before implementation.","consensusDoc.reason.needDissentCheck":"Confirm exclusion reasons from participant dissent or risk notes.","consensusDoc.reason.sourceConstraint":"Evidence locations remain at {refs}.","consensusDoc.reason.sourceConstraintMissing":"If more evidence is needed during implementation, inspect participant comments in the aggregation document first.","consensusDoc.reason.blockedNoEvidence":"Remaining issues require more evidence or a user decision.","consensusDoc.blocker.none":"Not every participant has explicitly agreed yet.","consensusDoc.blocker.prefix":"Blocked by","consensusDoc.conclusion.prefix":"Conclusion","consensusDoc.providerContribution.proposed":"proposal contribution","consensusDoc.providerContribution.reviewed":"review contribution","consensusDoc.runInspection.problemSummary":"Issue summary","consensusDoc.runInspection.noDiagnostics":"No failure diagnostics recorded.","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"\u540C\u610F","consensus.stance.disagree":"\u53CD\u5BFE","consensus.stance.opinion":"\u610F\u898B","consensus.stance.revise":"\u4FEE\u6B63\u63D0\u6848","consensus.stance.no_response":"no response","consensus.stance.not_assigned":"not assigned this turn","consensus.previousStance.abstain":"abstain","consensus.previousStance.needs_human":"needs human review","consensus.automatic":"automatic","consensus.heartbeat.runningProvider":"[Consensus engine] {provider} in progress...","consensus.heartbeat.runningSummary":"[Consensus engine] round {round} in progress | accepted {accepted} | unresolved {unresolved}","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research preprocessing artifacts","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader final document target","researchConsensus.status":"Status","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"\u524D\u51E6\u7406\u72B6\u614B","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"Raw submissions","researchDoc.originalFindings":"Original findings","researchDoc.supplementLedger":"Supplement request log","researchDoc.mergedGroupsSection":"Merged groups","researchDoc.openDebateItemsSection":"Open debate items","researchDoc.roundPackets":"Round packets and raw responses","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}"};var eR={"report.header.topic":"\u4E3B\u9898","report.header.participants":"\u53C2\u4E0E\u8005","report.header.individualDocs":"\u4E2A\u4EBA\u8BC4\u5BA1\u6587\u6863","report.table.proposer":"\u63D0\u8BAE\u8005","report.table.opinion":"\u610F\u89C1","report.table.severity":"\u4E25\u91CD\u7A0B\u5EA6","report.table.agreement":"\u540C\u610F\u7387","report.section.mainTable":"\u63D0\u6848\u53F0\u8D26","report.section.dissentDetail":"\u672A\u8FBE\u6210\u4E00\u81F4\u9879\u8BE6\u60C5","report.section.contributionSummary":"AI \u8D21\u732E\u6C47\u603B","report.contribution.ai":"AI","report.contribution.proposed":"\u63D0\u51FA","report.contribution.accepted":"\u91C7\u7EB3","report.contribution.revises":"\u4FEE\u8BA2\u8BF7\u6C42","report.contribution.abstains":"\u5F03\u6743","report.footer.synthesisPath":"\u6700\u7EC8\u5171\u8BC6\u6587\u6863","report.footer.debatePath":"\u8FA9\u8BBA\u8BB0\u5F55","report.footer.pendingSynthesis":"(\u7B49\u5F85\u8D1F\u8D23\u4EBA\u6279\u51C6)","report.status.running":"\u8FDB\u884C\u4E2D","report.status.readyForApproval":"\u5F85\u6279\u51C6","report.status.consensus":"\u5DF2\u8FBE\u6210\u5171\u8BC6","report.status.escalated":"\u5DF2\u5347\u7EA7","report.status.approved":"\u5DF2\u6279\u51C6","report.status.rejected":"\u5DF2\u62D2\u7EDD","report.status.leaderTimeout":"\u8D1F\u8D23\u4EBA\u54CD\u5E94\u8D85\u65F6","report.status.partialCompleted":"\u90E8\u5206\u5B8C\u6210","report.status.needsHumanReview":"\u9700\u8981\u4EBA\u5DE5\u5BA1\u6838","report.status.error":"\u9519\u8BEF","synthesis.status.consensus":"\u5DF2\u8FBE\u6210\u5171\u8BC6","synthesis.status.escalated":"\u90E8\u5206\u5171\u8BC6 / \u5DF2\u5347\u7EA7","synthesis.section.acceptedItems":"\u91C7\u7EB3\u9879","synthesis.section.rejectedItems":"\u62D2\u7EDD / \u64A4\u56DE\u9879","synthesis.section.openItems":"\u672A\u51B3\u9879","synthesis.section.sources":"\u4F9D\u636E","synthesis.narration.consensusIn":"\u5728\u5168\u90E8 {max} \u8F6E\u4E2D\u7684\u7B2C {round} \u8F6E\u8FBE\u6210\u5171\u8BC6\u3002","synthesis.narration.escalated":"\u7ECF\u8FC7 {round} \u8F6E\u4ECD\u672A\u8FBE\u6210\u5171\u8BC6,\u7531\u7528\u6237\u51B3\u5B9A\u5347\u7EA7\u5904\u7406\u3002","synthesis.narration.leaderNote":"\u8D1F\u8D23\u4EBA\u5907\u6CE8","approval.pending":"\u7B49\u5F85\u8D1F\u8D23\u4EBA\u6279\u51C6\u3002\u8BF7\u8C03\u7528 `agent_debate_approve`\u3001`agent_debate_continue` \u6216 `agent_debate_reject`\u3002","approval.timeout":"\u7B49\u5F85\u8D1F\u8D23\u4EBA\u51B3\u7B56\u671F\u95F4\u4F1A\u8BDD\u5DF2\u8D85\u65F6({hours} \u5C0F\u65F6)\u3002","moderator.narration.roundHeader":"\u7B2C {round}/{max} \u8F6E","moderator.narration.consensusInRound":"\u5728\u7B2C {round} \u8F6E\u8FBE\u6210\u5171\u8BC6\u3002","moderator.narration.dissentDetailHeader":"\u672A\u89E3\u51B3\u9879","moderator.narration.noInterest":"\u53C2\u4E0E\u8005\u65E0\u5174\u8DA3","moderator.narration.participantDropout":"\u53C2\u4E0E\u8005 `{participantId}` \u56E0\u591A\u6B21\u5931\u8D25\u88AB\u6807\u8BB0\u4E3A\u4E0D\u53EF\u7528\u3002","moderator.narration.participantTimeout":"\u53C2\u4E0E\u8005 `{participantId}` \u5728\u672C\u8F6E\u672A\u4F5C\u51FA\u54CD\u5E94\u3002","moderator.narration.leaderTimeoutFooter":"\u8D1F\u8D23\u4EBA\u54CD\u5E94\u8D85\u65F6","moderator.narration.rejected":"\u8D1F\u8D23\u4EBA\u5DF2\u62D2\u7EDD\u8BE5\u4F1A\u8BDD\u3002","moderator.narration.approved":"\u8D1F\u8D23\u4EBA\u5DF2\u6279\u51C6\u8BE5\u4F1A\u8BDD\u3002","moderator.narration.aliasClarification":"\u522B\u540D\u6F84\u6E05\u9636\u6BB5","prompt.system.moderator":"\u4F60\u662F\u7ED3\u6784\u5316\u591A AI \u8FA9\u8BBA\u7684\u4E3B\u6301\u4EBA\u3002\u4F60\u4E0D\u64B0\u5199\u63D0\u6848,\u800C\u662F\u6C47\u603B\u7ED3\u6784\u5316\u6295\u7968\u5E76\u4EA7\u51FA\u4E2D\u7ACB\u7684\u5171\u8BC6\u65B9\u6848\u3002\u4EC5\u5728\u534F\u8BAE\u5B9A\u4E49\u7684\u901A\u9053\u8303\u56F4\u5185\u4F5C\u51FA\u54CD\u5E94\u3002","error.participantTimeout":"\u53C2\u4E0E\u8005 `{participantId}` \u5728 {seconds} \u79D2\u5185\u672A\u54CD\u5E94\u3002","error.parseFailure":"\u65E0\u6CD5\u89E3\u6790\u53C2\u4E0E\u8005 `{participantId}` \u7684 `<{tag}>` \u5757\u3002","error.sessionNotFound":"\u672A\u627E\u5230\u8FA9\u8BBA\u4F1A\u8BDD `{sessionId}`\u3002","error.invalidState":"\u5728\u72B6\u6001 `{state}` \u4E0B\u4E0D\u5141\u8BB8\u6267\u884C\u64CD\u4F5C `{operation}`\u3002","error.unknownLocaleFallback":"\u672A\u77E5\u533A\u57DF `{locale}`,\u56DE\u9000\u5230 `{fallback}`\u3002","askUser.escalation.header":"\u5DF2\u8FBE\u6700\u5927\u8F6E\u6B21\u4F46\u4ECD\u672A\u8FBE\u6210\u5171\u8BC6","askUser.escalation.question":"\u60A8\u5E0C\u671B\u5982\u4F55\u7EE7\u7EED?","askUser.escalation.continue":"\u518D\u8FDB\u884C {rounds} \u8F6E","askUser.escalation.escalate":"\u4E0D\u8FBE\u6210\u5171\u8BC6\u5373\u5347\u7EA7","askUser.escalation.stop":"\u7ED3\u675F\u8FA9\u8BBA","provider.readiness.section":"\u63D0\u4F9B\u5546\u51C6\u5907\u72B6\u6001","provider.readiness.actionRequired":"\u9700\u8981\u7528\u6237\u786E\u8BA4","provider.readiness.status.queued":"\u6392\u961F\u4E2D","provider.readiness.status.checking":"\u68C0\u67E5\u4E2D","provider.readiness.status.ready":"\u5DF2\u5C31\u7EEA","provider.readiness.status.warming":"\u9884\u70ED\u4E2D","provider.readiness.status.warm":"\u5DF2\u9884\u70ED","provider.readiness.status.unavailable":"\u4E0D\u53EF\u7528","provider.readiness.status.auth-needed":"\u9700\u8981\u8BA4\u8BC1","provider.readiness.status.workspace-blocked":"\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u53D7\u963B","provider.readiness.status.disabled":"\u5DF2\u7981\u7528","provider.readiness.status.skipped":"\u5DF2\u8DF3\u8FC7","provider.readiness.status.unknown":"\u672A\u77E5","provider.routing.section":"\u63D0\u4F9B\u5546\u8DEF\u7531","provider.routing.selected":"\u5DF2\u9009\u62E9","provider.routing.skipped":"\u5DF2\u8DF3\u8FC7","provider.routing.traceData":"trace \u6570\u636E","provider.trust.workspaceBlocked":"{providerId} \u65E0\u6CD5\u5728\u6B64\u5DE5\u4F5C\u533A\u8FD0\u884C\uFF0C\u56E0\u4E3A\u8BE5\u6587\u4EF6\u5939\u672A\u88AB\u4FE1\u4EFB: {workspaceBaseDir}","provider.trust.batch.workspaceBlocked":"{providers} \u65E0\u6CD5\u5728\u6B64\u5DE5\u4F5C\u533A\u8FD0\u884C\uFF0C\u56E0\u4E3A\u8BE5\u6587\u4EF6\u5939\u672A\u88AB\u4FE1\u4EFB: {workspaceBaseDir}","provider.trust.question":"\u662F\u5426\u4EC5\u5C06\u6B64\u9879\u76EE\u6587\u4EF6\u5939\u52A0\u5165 {providerId} \u7684 trusted \u5217\u8868?","provider.trust.batch.question":"\u662F\u5426\u4EC5\u5C06\u6B64\u9879\u76EE\u6587\u4EF6\u5939\u52A0\u5165\u53D7\u652F\u6301\u63D0\u4F9B\u5546\u7684 trusted \u5217\u8868?","provider.trust.option.apply":"\u4FE1\u4EFB\u6B64\u9879\u76EE\u5E76\u7EE7\u7EED","provider.trust.option.skip":"\u4E0D\u4F7F\u7528 {providerId} \u7EE7\u7EED","provider.trust.batch.option.skip":"\u4E0D\u4F7F\u7528\u8FD9\u4E9B\u63D0\u4F9B\u5546\u7EE7\u7EED","provider.trust.option.abort":"\u505C\u6B62","provider.trust.apply.approvedRequired":"\u53EA\u6709\u5728\u7528\u6237\u660E\u786E\u6279\u51C6\u540E\uFF0C\u624D\u80FD\u66F4\u6539\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u8BBE\u7F6E\u3002","provider.trust.apply.workspaceRequired":"\u66F4\u6539\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u8BBE\u7F6E\u524D\u9700\u8981\u76EE\u6807\u5DE5\u4F5C\u533A\u6587\u4EF6\u5939\u3002","provider.trust.apply.unsupported":"{providerId} \u4E0D\u652F\u6301\u81EA\u52A8\u66F4\u65B0\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u8BBE\u7F6E\u3002","provider.trust.apply.result":"{providerId} \u5DE5\u4F5C\u533A\u4FE1\u4EFB\u7ED3\u679C: {status} ({workspaceBaseDir})","provider.trust.apply.singleToolInstruction":"\u7528\u6237\u660E\u786E\u6279\u51C6\u540E\uFF0C\u8BF7\u5BF9\u6BCF\u4E2A\u63D0\u4F9B\u5546\u5404\u8C03\u7528\u4E00\u6B21 provider_trust_apply\u3002\u53EA\u6709\u5F53\u4E3B\u673A\u6743\u9650\u6A21\u578B\u660E\u786E\u5141\u8BB8\u6279\u91CF trust \u66F4\u6539\u65F6\uFF0C\u624D\u4F7F\u7528\u6279\u91CF trust\u3002","provider.trust.batch.resultHeader":"\u63D0\u4F9B\u5546\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u7ED3\u679C","common.yes":"Yes","common.no":"No","common.none":"(none)","common.default":"(default)","common.unknown":"(unknown)","common.notRecorded":"(not recorded)","common.notGeneratedYet":"(not generated yet)","common.available":"Available","common.unavailable":"Unavailable","common.enabled":"enabled","common.disabled":"disabled","common.ok":"OK","common.degraded":"DEGRADED","common.error":"ERROR","common.failed":"failed","common.verified":"verified","common.missing":"missing","common.optional":"optional","common.pathUnavailable":"(path unavailable)","common.notReadable":"not readable","setup.title":"Agestra \u8BBE\u7F6E","setup.currentConfig.notFound":"Current config: not found","setup.currentConfig.present":"Current config: present","setup.currentConfig.presentNoProviders":"Current config: present (no providers enabled)","setup.expectedLocation":"Expected location","setup.configPath":"Config path","setup.enabledProviders":"Enabled providers","setup.locale":"Locale","setup.selectionPolicy":"Selection policy","setup.workspaceTrustPolicy":"Workspace trust policy","setup.required.yes":"Setup required: yes","setup.recommendedNextAction":"Recommended next action: ask the user for provider selection and locale, then call setup_apply.","setup.workspaceTrustPreflight":"Workspace trust preflight","setup.usableProviders":"Usable providers","setup.blockedProviders":"Blocked providers","setup.recommendedTrustAction":"Recommended trust action: ask once whether to register this exact project folder for supported providers.","setup.detectedProviders":"Detected providers","setup.detected.none":"(none detected)","setup.hostAssets":"Host assets","setup.hostAssets.failed":"Host-native asset check failed: {message}","setup.hostAssets.automaticNotRun":"Automatic setup: not run","setup.apply.previewTitle":"Agestra Setup Preview","setup.apply.appliedTitle":"Agestra Setup Applied","setup.apply.noProvidersDetected":"No AI providers were detected, so setup could not be applied.","setup.apply.noProvidersSelected":"At least one available AI provider must be selected for Agestra orchestration. For direct single-host work, continue outside Agestra instead.","setup.apply.unavailableProviders":"These providers are not currently available and cannot be enabled: {providers}","setup.apply.action":"Action","provider.list.title":"\u5DF2\u6CE8\u518C\u63D0\u4F9B\u5546","provider.list.none":"No providers registered.","provider.health.title":"Health Check Results","provider.health.none":"No providers to check.","provider.label.hostSession":"Host Session","provider.label.host":"Host","provider.label.leaderProvider":"Leader Provider","provider.label.executionMode":"Execution Mode","provider.label.participants":"Participants","provider.label.status":"Status","provider.label.message":"Message","provider.label.error":"Error","provider.label.executionPolicy":"Execution Policy","provider.label.invocation":"Invocation","provider.label.roles":"Roles","provider.label.autonomousExecution":"Autonomous Execution","provider.label.readOnlyChat":"Read-Only Chat","provider.label.maxContext":"Max Context","provider.label.systemPrompt":"System Prompt","provider.label.files":"Files","provider.label.streaming":"Streaming","provider.label.jsonOutput":"JSON Output","provider.label.toolUse":"Tool Use","provider.label.strengths":"Strengths","provider.label.models":"Models","provider.label.workspace":"Workspace","workspaceTrust.title":"\u5DE5\u4F5C\u533A\u4FE1\u4EFB\u9884\u68C0","workspaceTrust.policy":"Policy","workspaceTrust.workspace":"Workspace","workspaceTrust.workspaceUnknown":"Workspace: (unknown)","workspaceTrust.discovery":"Discovery","workspaceTrust.envFilesPresent":"Env files present","workspaceTrust.envFilesNote":"contents not read","workspaceTrust.reviewSignals":"Review signals","workspaceTrust.applied":"Applied","workspaceTrust.blocked":"Blocked","workspaceTrust.noPersistentHook":"no persistent trust hook","consensus.label.session":"Consensus Session","consensus.label.ledger":"Consensus Ledger","consensus.label.sessionId":"Session ID","consensus.label.status":"Status","consensus.label.phase":"Phase","consensus.label.updated":"Updated","consensus.label.created":"Created","consensus.label.round":"Round","consensus.label.currentProvider":"Current Provider","consensus.label.items":"Items","consensus.label.terminalNote":"Terminal Note","consensus.label.taskLabel":"Task Label","consensus.label.type":"Type","consensus.label.topic":"Topic","consensus.label.providers":"Providers","consensus.label.debateId":"Debate ID","consensus.label.documentId":"Document ID","consensus.label.synthesisDocument":"Synthesis document","consensus.label.transcript":"Transcript","consensus.label.issueDocument":"Issue document","consensus.section.providerReadiness":"Provider Readiness","consensus.section.participantProgress":"Participant Progress","consensus.section.pendingHostTurns":"Pending Host Turns","consensus.section.documents":"Documents","consensus.section.roundState":"Round State","consensus.section.runEvidence":"\u8FD0\u884C\u8BC1\u636E","consensus.section.runInspector":"Run Inspector","consensus.section.recentActivity":"Recent Activity","consensus.section.allowedActions":"Allowed Actions","consensus.section.researchPreprocessorStatus":"Research Preprocessor Status","consensus.section.issueSummary":"Issue Summary","consensus.section.items":"Items","consensus.status.ledgerOnly":"ledger-only","consensus.phase.terminal":"terminal","consensus.phase.consensusRound":"consensus round","consensus.action.nextStep":"Next step - choose one:","consensus.action.leaderChoice":"The leader should choose one of:","consensus.action.approve":"Approve synthesis","consensus.action.extend":"Extend debate","consensus.action.reject":"Abandon session","consensus.action.escalated":"Debate escalated - max rounds exhausted with open proposals.","consensus.action.continueMoreRounds":"run more rounds","consensus.action.acceptCurrent":"accept the current synthesis with open items captured","consensus.action.abandonSession":"abandon the session","consensus.action.submitHostTurns":"Submit pending explicit host-native participant turns.","consensus.action.checkHostGate":"Check whether the host-turn gate has resumed.","consensus.action.inspectTimedOut":"Inspect the timed-out consensus session.","consensus.action.rejectTimedOut":"Write the timed-out decision as a rejected synthesis.","consensus.action.pollRunning":"Poll the running consensus session.","consensus.guidance.pendingHostTurns":"Dispatch each entry through the explicit host route and post the response back via `agent_consensus_submit_turn`. Consensus-round host turns use the consensus JSON contract. The workflow resumes automatically once every entry is fulfilled.","consensus.pending.requestedAt":"Requested at","consensus.pending.promptCapsule":"Prompt capsule","consensus.pending.files":"Files","consensus.pending.promptBodyHidden":"Prompt body: hidden from status output","consensus.submit.accepted":'Host turn accepted for participant "{participantId}".',"consensus.submit.remaining":"Remaining pending host turns","consensus.submit.allIn":"All pending host turns are in. The consensus round will resume shortly.","consensus.submit.continueDispatching":"Continue dispatching the remaining host-native routes, then call `{tool}` for each.","consensus.submit.duplicate":'Host turn for participant "{participantId}" was already submitted in this gate.',"consensus.submit.roundMismatch":'Round mismatch for participant "{participantId}": expected round {expectedRound}.',"consensus.submit.noPending":'No pending host-turn request for participant "{participantId}" in session "{sessionId}". The round may have already resumed; check `agent_debate_status`.',"consensus.error.engineMissing":"Consensus engine is not initialized for this workspace. Check MCP server wiring.","consensus.error.registryMissing":"Structured session registry is not initialized for this workspace.","consensus.error.invalidArguments":"Invalid arguments: {message}","consensus.error.startFailed":"Failed to start consensus session: {message}","consensus.error.approveFailed":"Approve failed: {message}","consensus.error.continueFailed":"Continue failed: {message}","consensus.error.rejectFailed":"Reject failed: {message}","consensus.error.submitFailed":"Submit host turn failed: {message}","consensus.error.unsupportedFields":"agent_consensus_start no longer performs research planning, source-document ingestion, specialist injection, or individual fan-out. Create `initial_aggregation` with team-lead/research/debate first, then call consensus. Unsupported fields: {fields}.","consensus.error.duplicateParticipant":'Duplicate participant "{participantId}" is not allowed. Pass each participant once.',"consensus.error.legacySpecialist":'Legacy host specialist participant "{participantId}" is no longer supported. Use an explicit participant route, for example `{ participant_id: "host-debate", transport: "host-turn", agent_name: "agestra-debate" }`.',"consensus.error.leaderMissing":"Cannot resolve a leader. Provide `leader` explicitly or ensure the session context exposes one.","consensus.error.engineReported":"Engine reported an error: {message}.","consensus.error.noMessage":"(no message)","consensus.result.approvedReplay":"(idempotent replay of existing approved state - no new synthesis written)","consensus.result.rejected":"Consensus session {sessionId} rejected.","consensus.result.reason":"Reason","consensus.result.rejectedReplay":"(idempotent replay of existing rejected state - no new artifacts written)","consensus.started.title":"Debate started","consensus.started.checkProgress":"Use `agent_debate_status` to check progress.","consensus.created.title":"Debate created","consensus.round.providerOrder":"provider order","consensus.round.rotationOffset":"rotation offset","consensus.round.stanceChanges":"stance changes","consensus.round.persuasionNotes":"persuasion notes","consensus.runEvidence.artifactIndex":"Artifact index","consensus.runEvidence.runReport":"Run report","consensus.runEvidence.evidencePacket":"Evidence packet","consensus.runEvidence.gateLedger":"Gate ledger","consensus.runEvidence.verified":"verified","consensus.runEvidence.indexedMissing":"indexed but missing","consensus.runEvidence.existsNotIndexed":"exists, not indexed","consensus.runEvidence.optionalNotPresent":"optional, not present","consensus.runEvidence.expectedNotVerified":"expected, not verified","consensus.runEvidence.indexUnreadable":"artifact index not readable; expected path","consensus.runInspector.manifest":"Manifest","consensus.runInspector.manifestUnreadable":"Manifest: not readable at {path}","consensus.runInspector.run":"Run","consensus.runInspector.routing":"Routing","consensus.runInspector.selected":"selected","consensus.runInspector.skipped":"skipped","consensus.runInspector.traceData":"Trace data","consensus.runInspector.firstDiagnostic":"First diagnostic","consensus.runInspector.nextCheck":"Next check","consensus.runInspector.providerEvents":"Provider events","consensus.runInspector.observableEvents":"Observable events","consensus.runInspector.artifacts":"Artifacts","consensus.recentActivity.none":"No user-visible observable events recorded yet.","consensus.research.state":"State","consensus.research.state.waiting":"waiting for convergence","consensus.research.state.noOpenItems":"no open convergence items","consensus.research.rawFindings":"raw findings","consensus.research.rawSubmissions":"raw submissions","consensus.research.mergedGroups":"merged groups","consensus.research.preAccepted":"preAccepted","consensus.research.openDebateItems":"openDebateItems","consensus.research.readWarnings":"Read warnings","consensusDoc.debate.title":"Debate aggregation document","consensusDoc.debate.sourceLedger":"Source ledger JSON","consensusDoc.debate.participants":"Participating AIs","consensusDoc.debate.currentRound":"Current round","consensusDoc.dashboard":"Item dashboard","consensusDoc.item.id":"ID","consensusDoc.item.item":"Item","consensusDoc.item.status":"Status","consensusDoc.item.proposer":"Proposer","consensusDoc.item.agreement":"Agreement","consensusDoc.item.currentConclusion":"Current conclusion / blocker","consensusDoc.item.purpose":"Purpose","consensusDoc.item.originalClaim":"Original claim","consensusDoc.item.currentSummary":"Current summary","consensusDoc.item.conclusion":"Conclusion","consensusDoc.item.stance":"Stance","consensusDoc.item.content":"Content","consensusDoc.item.newItemProposal":"New item proposal","consensusDoc.item.previousStanceMissing":"previous stance not recorded","consensusDoc.item.stanceChanged":"Stance changed: from {previous} to {current}","consensusDoc.item.respondsTo":"Responds to","consensusDoc.item.persuasionEvidence":"Persuasion evidence","consensusDoc.item.target":"target","consensusDoc.item.evidence":"evidence","consensusDoc.rawRoundResponses":"Raw Round Responses","consensusDoc.rawRound.assignedItems":"Assigned items","consensusDoc.rawRound.responseItems":"Response items","consensusDoc.rawRound.accepted":"Accepted","consensusDoc.rawRound.validationErrors":"Validation errors","consensusDoc.synthesis.overview":"\u6982\u89C8","consensusDoc.synthesis.topic":"Topic","consensusDoc.synthesis.participants":"Participating AIs","consensusDoc.synthesis.roundReached":"Rounds to consensus","consensusDoc.synthesis.acceptedCount":"Accepted items","consensusDoc.synthesis.excludedCount":"Excluded items","consensusDoc.synthesis.openCount":"Open / needs-opinion items","consensusDoc.synthesis.ledger":"JSON ledger","consensusDoc.synthesis.debateDocument":"Aggregation document","consensusDoc.synthesis.finalTable":"\u6700\u7EC8\u51B3\u7B56\u8868","consensusDoc.synthesis.finalStatus":"Final status","consensusDoc.synthesis.finalDecision":"Conclusion","consensusDoc.synthesis.agreedProviders":"Agreed AIs","consensusDoc.synthesis.disagreedProviders":"Disagreed AIs","consensusDoc.synthesis.opinionProviders":"Opinion / revision suggestions","consensusDoc.synthesis.accepted":"Accepted items","consensusDoc.synthesis.excluded":"Excluded items","consensusDoc.synthesis.open":"Open / needs-opinion items","consensusDoc.synthesis.followUp":"Next actions","consensusDoc.synthesis.noDecisions":"No decided items.","consensusDoc.synthesis.followAccepted":"{id}: Apply the accepted decision ({title}); {reason}","consensusDoc.synthesis.followExcluded":"{id}: Do not reintroduce the excluded decision ({title}). {reason}","consensusDoc.synthesis.followOpen":"{id}: {blocker} Additional evidence or a user decision is required.","consensusDoc.synthesis.providerContribution":"Provider contributions","consensusDoc.synthesis.proposedCount":"Proposed","consensusDoc.synthesis.acceptedProposals":"Accepted proposals","consensusDoc.synthesis.exclusionHelp":"Helped exclusions","consensusDoc.synthesis.dissentContribution":"Dissent/opinion contributions","consensusDoc.synthesis.characteristic":"Characteristic","consensusDoc.references":"Reference documents","consensusDoc.references.validationJson":"Validation JSON","consensusDoc.references.synthesis":"Synthesis document","consensusDoc.references.inputDocument":"{provider} input document","consensusDoc.unresolvedExplanation":"Unresolved item explanation","consensusDoc.documentPaths":"Document paths","consensusDoc.noItems":"(none)","consensusDoc.decision.purpose":"Purpose","consensusDoc.decision.finalDecision":"Final decision","consensusDoc.decision.agreedProviders":"Agreed AIs","consensusDoc.decision.disagreedProviders":"Disagreed AIs","consensusDoc.decision.currentStances":"Current stances","consensusDoc.decision.changeHistory":"Change history","consensusDoc.decision.sourceLocations":"Debate/evidence locations","consensusDoc.decision.blockedDecision":"Blocked decision","consensusDoc.decision.howToResolve":"To resolve: strengthen the evidence requested by AIs with dissent/opinions, or have the user choose the final direction.","consensusDoc.decision.reason":"Decision reason","consensusDoc.decision.keyComments":"Key comments","consensusDoc.decision.acceptedOriginal":"accepted as originally proposed.","consensusDoc.decision.excludedOriginal":"the original proposal ended as an excluded decision.","consensusDoc.decision.noFinalChange":"no finalized change yet.","consensusDoc.decision.revisionFrom":"this item is a revision derived from {parentId}.","consensusDoc.decision.revisionLedTo":"revision suggestions led to {itemIds}.","consensusDoc.reason.acceptedBase":"Accepted content: {base}","consensusDoc.reason.excludedBase":"Excluded content: {base}","consensusDoc.reason.keyEvidence":"Key evidence: {evidence}","consensusDoc.reason.exclusionEvidence":"Exclusion evidence: {evidence}","consensusDoc.reason.needImplementationCheck":"Any weak evidence should be strengthened by checking code or documents before implementation.","consensusDoc.reason.needDissentCheck":"Confirm exclusion reasons from participant dissent or risk notes.","consensusDoc.reason.sourceConstraint":"Evidence locations remain at {refs}.","consensusDoc.reason.sourceConstraintMissing":"If more evidence is needed during implementation, inspect participant comments in the aggregation document first.","consensusDoc.reason.blockedNoEvidence":"Remaining issues require more evidence or a user decision.","consensusDoc.blocker.none":"Not every participant has explicitly agreed yet.","consensusDoc.blocker.prefix":"Blocked by","consensusDoc.conclusion.prefix":"Conclusion","consensusDoc.providerContribution.proposed":"proposal contribution","consensusDoc.providerContribution.reviewed":"review contribution","consensusDoc.runInspection.problemSummary":"Issue summary","consensusDoc.runInspection.noDiagnostics":"No failure diagnostics recorded.","consensusDoc.runInspection.findingValidation":"Finding validation","consensusDoc.systemNotes":"System Notes","consensus.stance.agree":"\u540C\u610F","consensus.stance.disagree":"\u53CD\u5BF9","consensus.stance.opinion":"\u610F\u89C1","consensus.stance.revise":"\u4FEE\u8BA2\u5EFA\u8BAE","consensus.stance.no_response":"no response","consensus.stance.not_assigned":"not assigned this turn","consensus.previousStance.abstain":"abstain","consensus.previousStance.needs_human":"needs human review","consensus.automatic":"automatic","consensus.heartbeat.runningProvider":"[Consensus engine] {provider} in progress...","consensus.heartbeat.runningSummary":"[Consensus engine] round {round} in progress | accepted {accepted} | unresolved {unresolved}","consensus.rejection.reasonHeading":"Leader rejection reason","researchConsensus.artifacts":"Research preprocessing artifacts","researchConsensus.collection":"Collection","researchConsensus.fullCollection":"Full collection","researchConsensus.aggregationRecord":"Aggregation record","researchConsensus.openDebateItems":"Open debate items","researchConsensus.openDebateItemCount":"Open debate item count","researchConsensus.aggregationDocument":"Aggregation document","researchConsensus.finalDocumentTarget":"Leader final document target","researchConsensus.status":"Status","researchConsensus.error.noSourceDocuments":"`agent_research_consensus_start` does not accept `source_documents`. Host-led research consensus must collect and preprocess research submissions instead of passing research bundles through source documents.","researchConsensus.error.researchPacketParticipant":"`{providerId}` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.","researchConsensus.error.engineMissing":"Research consensus engine is not initialized for this workspace. Check MCP server wiring.","researchConsensus.error.startFailed":"Failed to start research consensus: {message}","researchDoc.aggregation.title":"Research Aggregation","researchDoc.topic":"Topic","researchDoc.session":"Session","researchDoc.date":"Date","researchDoc.participants":"Participants","researchDoc.domain":"Domain","researchDoc.purpose":"Purpose","researchDoc.purpose.recordPreservingAggregation":"record-preserving aggregation","researchDoc.preprocessingStatus":"\u9884\u5904\u7406\u72B6\u6001","researchDoc.objective":"Objective","researchDoc.rawFindings":"raw findings","researchDoc.mergedGroups":"merged groups","researchDoc.preAccepted":"preAccepted","researchDoc.openDebateItems":"openDebateItems","researchDoc.rawSubmissions":"Raw submissions","researchDoc.originalFindings":"Original findings","researchDoc.supplementLedger":"Supplement request log","researchDoc.mergedGroupsSection":"Merged groups","researchDoc.openDebateItemsSection":"Open debate items","researchDoc.roundPackets":"Round packets and raw responses","researchDoc.kind":"Kind","researchDoc.provider":"Provider","researchDoc.assignment":"Assignment","researchDoc.received":"Received","researchDoc.parse":"Parse","researchDoc.parseErrors":"Parse errors","researchDoc.summary":"Summary","researchDoc.internalBreakdown":"Internal breakdown","researchDoc.claim":"Claim","researchDoc.problem":"Problem","researchDoc.recommendation":"Recommendation","researchDoc.confidence":"Confidence","researchDoc.quality":"Quality","researchDoc.debateDisposition":"Debate disposition","researchDoc.evidence":"Evidence","researchDoc.counterarguments":"Counterarguments","researchDoc.unknowns":"Unknowns","researchDoc.mergeHints":"Merge hints","researchDoc.attempt":"Attempt","researchDoc.reason":"Reason","researchDoc.relation":"Relation","researchDoc.sourceProviders":"Source providers","researchDoc.sourceFindingIds":"Source finding IDs","researchDoc.sourceRefs":"Source refs","researchDoc.mergeReason":"Merge reason","researchDoc.mergeConfidence":"Merge confidence","researchDoc.optionGroup":"Option group","researchDoc.exclusive":"exclusive","researchDoc.originalSources":"Original sources","researchDoc.history":"History","researchDoc.createdAs":"{at}: created as {status} from {sourceFindingIds} - {reason}","researchDoc.statusChange":"{at}: {fromStatus} -> {toStatus}{round}{provider} - {reason}","researchDoc.inRound":" in round {round}","researchDoc.byProvider":" by {provider}","consensus.phase.starting":"starting","consensus.phase.awaitingHostTurn":"awaiting host turn","consensus.phase.approvalGate":"approval gate"};var tR=Object.freeze({en:Yk,ko:Qk,ja:Xk,zh:eR});function iq(t){return typeof t=="string"&&su.includes(t)}function Ym(t,e){return e===void 0?t:t.replace(/\{(\w+)\}/g,(r,s)=>{if(Object.prototype.hasOwnProperty.call(e,s)){let n=e[s];return typeof n=="number"?String(n):n}return r})}function no(t){return t===void 0?Qm(An):iq(t)?Qm(t):(console.warn(`[i18n] unknown locale '${t}', falling back to ${An}`),Qm(An))}function aq(t,e,r){let s=new Set;return{locale:t,t(n,o){let i=e[n];if(i!==void 0)return Ym(i,o);let a=r[n];return a!==void 0?(s.has(n)||(s.add(n),console.warn(`[i18n] missing key '${n}' in locale '${t}', falling back to ${um}`)),Ym(a,o)):(s.has(n)||(s.add(n),console.warn(`[i18n] missing key '${n}' in all bundles; returning raw key`)),Ym(n,o))}}}function Qm(t){return aq(t,tR[t],tR[um])}var Ya=class extends Error{timeoutMs;constructor(e){super(`Ollama HTTP request timed out after ${e}ms`),this.timeoutMs=e,this.name="OllamaHttpTimeoutError"}};async function Qa(t,e={},r,s){let n=new AbortController,o=!1,i=()=>{n.abort(s?.reason)};s?.aborted?n.abort(s.reason):s&&s.addEventListener("abort",i);let a=setTimeout(()=>{o=!0,n.abort()},r);try{return await fetch(t,{...e,signal:n.signal})}catch(c){throw o?new Ya(r):c}finally{clearTimeout(a),s&&s.removeEventListener("abort",i)}}async function rR(t,e=3e4){let r=await Qa(`${t}/api/tags`,{},e);if(!r.ok)throw new Error(`Ollama API error: ${r.status}`);return((await r.json()).models||[]).map(n=>({name:n.name||"unknown",size:n.size||0,strengths:cq(n.name||"")}))}function cq(t){let e=["chat"],r=t.toLowerCase();return(r.includes("coder")||r.includes("code"))&&e.push("code_review","code_generation"),r.includes("instruct")&&e.push("instruction_following"),r.includes("embed")&&e.push("embedding"),e}var uq=new Set(["http:","https:"]),lq=new Set(["model","prompt","system","stream"]);function pq(t){let e;try{e=new URL(t)}catch{throw new Error(`Invalid Ollama host: not a valid URL (${t})`)}if(!uq.has(e.protocol))throw new Error(`Invalid Ollama host: scheme "${e.protocol}" not allowed (use http:// or https://)`);if(e.username||e.password)throw new Error("Invalid Ollama host: embedded credentials are not allowed");return t.replace(/\/+$/,"")}var oo=class t{id;type="ollama";host;defaultModel;maxContext;available=!1;unavailableUntil=0;models=[];timeouts;lastInitializationError=null;lastRateLimitMessage=null;static RATE_LIMIT_BACKOFF_MS=6e4;constructor(e){this.id=e.id,this.host=pq(e.host),this.defaultModel=e.defaultModel||"auto",this.maxContext=e.maxContext??32768,this.timeouts={default:e.timeouts?.default??3e4,generate:e.timeouts?.generate??3e5,chat:e.timeouts?.chat??3e5}}async initialize(){try{this.models=await rR(this.host,this.timeouts.default),this.available=this.models.length>0,this.lastInitializationError=this.available?null:`No models detected. Install a model first (ollama pull ${im})`,this.available&&(this.unavailableUntil=0,this.lastRateLimitMessage=null)}catch(e){this.lastInitializationError=Xm(e),this.available=!1}}async healthCheck(){try{let e=await Qa(`${this.host}/api/tags`,{},this.timeouts.default);if(!e.ok)return{status:"error",message:`HTTP ${e.status}`};let r=await e.json(),s=r.models?.length??0;return{status:s>0?"ok":"degraded",message:`${s} models available`,details:{models:r.models?.map(n=>n.name)}}}catch(e){return{status:"error",message:Xm(e)}}}getCapabilities(){return{maxContext:this.maxContext,supportsSystemPrompt:!0,supportsFiles:!1,supportsStreaming:!1,supportsJsonOutput:!1,supportsToolUse:!0,strengths:[...new Set(this.models.flatMap(e=>e.strengths))],models:this.models.map(e=>({name:e.name,description:`Ollama model (${Math.round(e.size/1e9)}GB)`,strengths:e.strengths,sizeGb:e.size/1e9}))}}isAvailable(){return this.activeBackoffMs()>0?!1:this.available}async chat(e){let r=this.activeBackoffMs();if(r>0){let a=this.lastRateLimitMessage?`${this.lastRateLimitMessage}. Retry after ${r}ms.`:`Rate-limit backoff active. Retry after ${r}ms.`;throw new ve(this.id,a)}if(!this.available)throw new ve(this.id,this.lastInitializationError?`Ollama not running or no models installed: ${this.lastInitializationError}`:"Ollama not running or no models installed");if(e.files?.length)throw new He(this.id,"Ollama direct chat does not support file attachments; inline file context in the prompt first.");let s=e.extra||{},n=Object.keys(s).filter(a=>lq.has(a));if(n.length>0)throw new He(this.id,`Ollama request.extra cannot override reserved field(s): ${n.join(", ")}`);let o=e.model||this.selectModel(),i={model:o,prompt:e.prompt,system:e.system||"You are a helpful assistant.",stream:!1,...s};try{let a=await Qa(`${this.host}/api/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)},this.timeouts.generate,e.signal);if(a.status===429)throw this.unavailableUntil=Date.now()+t.RATE_LIMIT_BACKOFF_MS,this.lastRateLimitMessage=`Rate limited (HTTP 429${a.statusText?` ${a.statusText}`:""})`,new ve(this.id,`${this.lastRateLimitMessage}; temporarily deactivated for ${t.RATE_LIMIT_BACKOFF_MS/1e3}s`);if(!a.ok)throw new He(this.id,`HTTP ${a.status}: ${a.statusText}`);let c=await a.json();return{text:c.response||"",model:c.model||o,provider:this.id}}catch(a){throw a instanceof Ya||a.name==="AbortError"?new js(this.id,this.timeouts.generate):a instanceof He||a instanceof ve?a:new He(this.id,Xm(a))}}selectModel(){if(this.defaultModel!=="auto")return this.defaultModel;if(this.models.length===0)throw new ve(this.id,`No models detected. Install a model first (ollama pull ${im})`);return this.models[0].name}getModels(){return[...this.models]}getConnectionInfo(){return{host:this.host,model:this.selectModel()}}activeBackoffMs(e=Date.now()){if(this.unavailableUntil<=0)return 0;let r=this.unavailableUntil-e;return r>0?r:(this.unavailableUntil=0,this.lastRateLimitMessage=null,0)}};function Xm(t){return t instanceof Error?t.message:String(t)}var fq=[/^Loaded cached credentials/i,/^\[debug\]/i,/^\[info\]/i,/^\[warn\]/i,/^Using /i,/^Model:/i];function sR(t){return t.split(`
76
76
  `).filter(s=>{let n=s.trim();return n?!fq.some(o=>o.test(n)):!1}).join(`
77
77
  `).trim()}function nR(t){let e=Ka(t);return e&&typeof e.response=="string"?e.response:null}import{existsSync as mq,readFileSync as hq,mkdirSync as gq}from"fs";import{dirname as iR,isAbsolute as yq,relative as vq,resolve as aR,sep as eh}from"path";import{homedir as bq}from"os";var Bu="TRUST_FOLDER",th="TRUST_PARENT",cR="DO_NOT_TRUST",rh="GEMINI_CLI_TRUST_WORKSPACE",_q="GEMINI_CLI_TRUSTED_FOLDERS_PATH";function dR(t={}){let e=fR(_q,t);return t.configPath??(e&&e.length>0?e:void 0)??aR(t.homeDir??bq(),".gemini","trustedFolders.json")}function sh(t,e={}){let r=Uu(t);if(pR(e))return{status:"trusted",message:"Gemini workspace trust is bypassed by environment.",details:{workspaceBaseDir:r,source:"env",env:rh}};let s=dR(e),n=lR(s);if(!n.ok)return{status:"blocked",message:`Gemini trusted folders could not be read: ${n.error}`,details:{configPath:s,workspaceBaseDir:r}};let o=wq(n.value,r);return o?.state===Bu||o?.state===th?{status:"trusted",message:"Gemini workspace is trusted.",details:{configPath:s,workspaceBaseDir:r,matchedPath:o.path,...o.effectivePath!==o.path?{effectivePath:o.effectivePath}:{},trustState:o.state}}:{status:"blocked",message:o?.state===cR?"Gemini workspace trust is blocked by a trustedFolders.json entry.":"Gemini workspace is not listed as trusted.",details:{configPath:s,workspaceBaseDir:r,...o!==void 0?{matchedPath:o.path,trustState:o.state}:{}}}}function uR(t,e={}){let r=Uu(t);if(pR(e))return{status:"already-trusted",workspaceBaseDir:r,message:"Gemini workspace trust is bypassed by environment.",details:{source:"env",env:rh}};let s=dR(e),n=sh(r,{...e,configPath:s});if(n.status==="trusted")return{status:"already-trusted",workspaceBaseDir:r,message:"Gemini workspace is already trusted.",details:n.details};let o=lR(s);if(!o.ok)return{status:"failed",workspaceBaseDir:r,message:`Gemini trusted folders could not be updated: ${o.error}`,details:{configPath:s}};let i={...o.value,[r]:Bu};return gq(iR(s),{recursive:!0}),Se(s,i),{status:"applied",workspaceBaseDir:r,message:"Gemini workspace trust was added.",details:{configPath:s,trustState:Bu}}}function Uu(t){let e=aR(t);return e.endsWith(eh)&&e.length>eh.length?e.slice(0,-1):e}function lR(t){if(!mq(t))return{ok:!0,value:{}};try{let e=JSON.parse(Rq(hq(t,"utf-8")));if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,error:"trustedFolders.json is not an object"};let r={};for(let[s,n]of Object.entries(e)){if(kq(n)){r[s]=n;continue}return{ok:!1,error:`Invalid trust level "${String(n)}" for path "${s}"`}}return{ok:!0,value:r}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}function wq(t,e){let r;for(let[s,n]of Object.entries(t)){let o=Uu(s),i=n===th?iR(o):o;Sq(i,e)&&(!r||o.length>r.path.length)&&(r={path:o,effectivePath:i,state:n})}return r}function Sq(t,e){let r=oR(t),s=oR(e),n=vq(r,s);return n===""||n!==".."&&!n.startsWith(`..${eh}`)&&!yq(n)}function oR(t){let e=Uu(t);return process.platform==="win32"?e.toLowerCase():e}function kq(t){return t===Bu||t===th||t===cR}function pR(t){return fR(rh,t)==="true"}function fR(t,e){return e.env!==void 0?e.env[t]:process.env[t]}function Rq(t){let e="",r=!1,s=!1;for(let n=0;n<t.length;n+=1){let o=t[n],i=t[n+1];if(r){e+=o,s?s=!1:o==="\\"?s=!0:o==='"'&&(r=!1);continue}if(o==='"'){r=!0,e+=o;continue}if(o==="/"&&i==="/"){for(n+=2;n<t.length&&t[n]!==`
78
78
  `&&t[n]!=="\r";)n+=1;n-=1;continue}if(o==="/"&&i==="*"){for(n+=2;n<t.length;){if((t[n]===`
@@ -300,7 +300,7 @@ ${r.content}
300
300
  `:`[${s[c]}\r
301
301
  ]`;continue}n+=s[c],s[c]==="\\"?o=!0:i&&s[c]==="]"?i=!1:!i&&s[c]==="["&&(i=!0)}try{new RegExp(n)}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),t.source}return n}function Ml(t,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&t.keyType?._def.typeName===x.ZodEnum)return{type:"object",required:t.keyType._def.values,properties:t.keyType._def.values.reduce((s,n)=>({...s,[n]:V(t.valueType._def,{...e,currentPath:[...e.currentPath,"properties",n]})??Ue(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let r={type:"object",additionalProperties:V(t.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return r;if(t.keyType?._def.typeName===x.ZodString&&t.keyType._def.checks?.length){let{type:s,...n}=Ol(t.keyType._def,e);return{...r,propertyNames:n}}else{if(t.keyType?._def.typeName===x.ZodEnum)return{...r,propertyNames:{enum:t.keyType._def.values}};if(t.keyType?._def.typeName===x.ZodBranded&&t.keyType._def.type._def.typeName===x.ZodString&&t.keyType._def.type._def.checks?.length){let{type:s,...n}=Cl(t.keyType._def,e);return{...r,propertyNames:n}}}return r}function bx(t,e){if(e.mapStrategy==="record")return Ml(t,e);let r=V(t.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||Ue(e),s=V(t.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||Ue(e);return{type:"array",maxItems:125,items:{type:"array",items:[r,s],minItems:2,maxItems:2}}}function _x(t){let e=t.values,s=Object.keys(t.values).filter(o=>typeof e[e[o]]!="number").map(o=>e[o]),n=Array.from(new Set(s.map(o=>typeof o)));return{type:n.length===1?n[0]==="string"?"string":"number":["string","number"],enum:s}}function wx(t){return t.target==="openAi"?void 0:{not:Ue({...t,currentPath:[...t.currentPath,"not"]})}}function Sx(t){return t.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var Cc={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function Rx(t,e){if(e.target==="openApi3")return kx(t,e);let r=t.options instanceof Map?Array.from(t.options.values()):t.options;if(r.every(s=>s._def.typeName in Cc&&(!s._def.checks||!s._def.checks.length))){let s=r.reduce((n,o)=>{let i=Cc[o._def.typeName];return i&&!n.includes(i)?[...n,i]:n},[]);return{type:s.length>1?s:s[0]}}else if(r.every(s=>s._def.typeName==="ZodLiteral"&&!s.description)){let s=r.reduce((n,o)=>{let i=typeof o._def.value;switch(i){case"string":case"number":case"boolean":return[...n,i];case"bigint":return[...n,"integer"];case"object":if(o._def.value===null)return[...n,"null"];default:return n}},[]);if(s.length===r.length){let n=s.filter((o,i,a)=>a.indexOf(o)===i);return{type:n.length>1?n:n[0],enum:r.reduce((o,i)=>o.includes(i._def.value)?o:[...o,i._def.value],[])}}}else if(r.every(s=>s._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((s,n)=>[...s,...n._def.values.filter(o=>!s.includes(o))],[])};return kx(t,e)}var kx=(t,e)=>{let r=(t.options instanceof Map?Array.from(t.options.values()):t.options).map((s,n)=>V(s._def,{...e,currentPath:[...e.currentPath,"anyOf",`${n}`]})).filter(s=>!!s&&(!e.strictUnions||typeof s=="object"&&Object.keys(s).length>0));return r.length?{anyOf:r}:void 0};function $x(t,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(t.innerType._def.typeName)&&(!t.innerType._def.checks||!t.innerType._def.checks.length))return e.target==="openApi3"?{type:Cc[t.innerType._def.typeName],nullable:!0}:{type:[Cc[t.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let s=V(t.innerType._def,{...e,currentPath:[...e.currentPath]});return s&&"$ref"in s?{allOf:[s],nullable:!0}:s&&{...s,nullable:!0}}let r=V(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function Px(t,e){let r={type:"number"};if(!t.checks)return r;for(let s of t.checks)switch(s.kind){case"int":r.type="integer",wg(r,"type",s.message,e);break;case"min":e.target==="jsonSchema7"?s.inclusive?le(r,"minimum",s.value,s.message,e):le(r,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(r.exclusiveMinimum=!0),le(r,"minimum",s.value,s.message,e));break;case"max":e.target==="jsonSchema7"?s.inclusive?le(r,"maximum",s.value,s.message,e):le(r,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(r.exclusiveMaximum=!0),le(r,"maximum",s.value,s.message,e));break;case"multipleOf":le(r,"multipleOf",s.value,s.message,e);break}return r}function Ix(t,e){let r=e.target==="openAi",s={type:"object",properties:{}},n=[],o=t.shape();for(let a in o){let c=o[a];if(c===void 0||c._def===void 0)continue;let d=PH(c);d&&r&&(c._def.typeName==="ZodOptional"&&(c=c._def.innerType),c.isNullable()||(c=c.nullable()),d=!1);let u=V(c._def,{...e,currentPath:[...e.currentPath,"properties",a],propertyPath:[...e.currentPath,"properties",a]});u!==void 0&&(s.properties[a]=u,d||n.push(a))}n.length&&(s.required=n);let i=$H(t,e);return i!==void 0&&(s.additionalProperties=i),s}function $H(t,e){if(t.catchall._def.typeName!=="ZodNever")return V(t.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(t.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function PH(t){try{return t.isOptional()}catch{return!0}}var xx=(t,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return V(t.innerType._def,e);let r=V(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return r?{anyOf:[{not:Ue(e)},r]}:Ue(e)};var Ex=(t,e)=>{if(e.pipeStrategy==="input")return V(t.in._def,e);if(e.pipeStrategy==="output")return V(t.out._def,e);let r=V(t.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),s=V(t.out._def,{...e,currentPath:[...e.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,s].filter(n=>n!==void 0)}};function Ax(t,e){return V(t.type._def,e)}function Tx(t,e){let s={type:"array",uniqueItems:!0,items:V(t.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return t.minSize&&le(s,"minItems",t.minSize.value,t.minSize.message,e),t.maxSize&&le(s,"maxItems",t.maxSize.value,t.maxSize.message,e),s}function Dx(t,e){return t.rest?{type:"array",minItems:t.items.length,items:t.items.map((r,s)=>V(r._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((r,s)=>s===void 0?r:[...r,s],[]),additionalItems:V(t.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:t.items.length,maxItems:t.items.length,items:t.items.map((r,s)=>V(r._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((r,s)=>s===void 0?r:[...r,s],[])}}function Cx(t){return{not:Ue(t)}}function Ox(t){return Ue(t)}var Mx=(t,e)=>V(t.innerType._def,e);var jx=(t,e,r)=>{switch(e){case x.ZodString:return Ol(t,r);case x.ZodNumber:return Px(t,r);case x.ZodObject:return Ix(t,r);case x.ZodBigInt:return ux(t,r);case x.ZodBoolean:return lx();case x.ZodDate:return Sg(t,r);case x.ZodUndefined:return Cx(r);case x.ZodNull:return Sx(r);case x.ZodArray:return dx(t,r);case x.ZodUnion:case x.ZodDiscriminatedUnion:return Rx(t,r);case x.ZodIntersection:return gx(t,r);case x.ZodTuple:return Dx(t,r);case x.ZodRecord:return Ml(t,r);case x.ZodLiteral:return yx(t,r);case x.ZodEnum:return hx(t);case x.ZodNativeEnum:return _x(t);case x.ZodNullable:return $x(t,r);case x.ZodOptional:return xx(t,r);case x.ZodMap:return bx(t,r);case x.ZodSet:return Tx(t,r);case x.ZodLazy:return()=>t.getter()._def;case x.ZodPromise:return Ax(t,r);case x.ZodNaN:case x.ZodNever:return wx(r);case x.ZodEffects:return mx(t,r);case x.ZodAny:return Ue(r);case x.ZodUnknown:return Ox(r);case x.ZodDefault:return fx(t,r);case x.ZodBranded:return Cl(t,r);case x.ZodReadonly:return Mx(t,r);case x.ZodCatch:return px(t,r);case x.ZodPipeline:return Ex(t,r);case x.ZodFunction:case x.ZodVoid:case x.ZodSymbol:return;default:return(s=>{})(e)}};function V(t,e,r=!1){let s=e.seen.get(t);if(e.override){let a=e.override?.(t,e,s,r);if(a!==ix)return a}if(s&&!r){let a=IH(s,e);if(a!==void 0)return a}let n={def:t,path:e.currentPath,jsonSchema:void 0};e.seen.set(t,n);let o=jx(t,t.typeName,e),i=typeof o=="function"?V(o(),e):o;if(i&&xH(t,e,i),e.postProcess){let a=e.postProcess(i,t,e);return n.jsonSchema=i,a}return n.jsonSchema=i,i}var IH=(t,e)=>{switch(e.$refStrategy){case"root":return{$ref:t.path.join("/")};case"relative":return{$ref:Dl(e.currentPath,t.path)};case"none":case"seen":return t.path.length<e.currentPath.length&&t.path.every((r,s)=>e.currentPath[s]===r)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),Ue(e)):e.$refStrategy==="seen"?Ue(e):void 0}},xH=(t,e,r)=>(t.description&&(r.description=t.description,e.markdownDescription&&(r.markdownDescription=t.description)),r);var jl=(t,e)=>{let r=cx(e),s=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((c,[d,u])=>({...c,[d]:V(u._def,{...r,currentPath:[...r.basePath,r.definitionPath,d]},!0)??Ue(r)}),{}):void 0,n=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,o=V(t._def,n===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,n]},!1)??Ue(r),i=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;i!==void 0&&(o.title=i),r.flags.hasReferencedOpenAiAnyType&&(s||(s={}),s[r.openAiAnyTypeName]||(s[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let a=n===void 0?s?{...o,[r.definitionPath]:s}:o:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,n].join("/"),[r.definitionPath]:{...s,[n]:o}};return r.target==="jsonSchema7"?a.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(a.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in a||"oneOf"in a||"allOf"in a||"type"in a&&Array.isArray(a.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),a};function $g(t){let r=hl(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let s=_I(r);if(typeof s!="string")throw new Error("Schema method literal must be a string");return s}function Pg(t,e){let r=on(t,e);if(!r.success)throw r.error;return r.data}var EH=6e4,Nl=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(Sl,r=>{this._oncancel(r)}),this.setNotificationHandler(Rl,r=>{this._onprogress(r)}),this.setRequestHandler(kl,r=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler($l,async(r,s)=>{let n=await this._taskStore.getTask(r.params.taskId,s.sessionId);if(!n)throw new K(de.InvalidParams,"Failed to retrieve task: Task not found");return{...n}}),this.setRequestHandler(Il,async(r,s)=>{let n=async()=>{let o=r.params.taskId;if(this._taskMessageQueue){let a;for(;a=await this._taskMessageQueue.dequeue(o,s.sessionId);){if(a.type==="response"||a.type==="error"){let c=a.message,d=c.id,u=this._requestResolvers.get(d);if(u)if(this._requestResolvers.delete(d),a.type==="response")u(c);else{let l=c,f=new K(l.error.code,l.error.message,l.error.data);u(f)}else{let l=a.type==="response"?"Response":"Error";this._onerror(new Error(`${l} handler missing for request ${d}`))}continue}await this._transport?.send(a.message,{relatedRequestId:s.requestId})}}let i=await this._taskStore.getTask(o,s.sessionId);if(!i)throw new K(de.InvalidParams,`Task not found: ${o}`);if(!cn(i.status))return await this._waitForTaskUpdate(o,s.signal),await n();if(cn(i.status)){let a=await this._taskStore.getTaskResult(o,s.sessionId);return this._clearTaskQueue(o),{...a,_meta:{...a._meta,[an]:{taskId:o}}}}return await n()};return await n()}),this.setRequestHandler(xl,async(r,s)=>{try{let{tasks:n,nextCursor:o}=await this._taskStore.listTasks(r.params?.cursor,s.sessionId);return{tasks:n,nextCursor:o,_meta:{}}}catch(n){throw new K(de.InvalidParams,`Failed to list tasks: ${n instanceof Error?n.message:String(n)}`)}}),this.setRequestHandler(Al,async(r,s)=>{try{let n=await this._taskStore.getTask(r.params.taskId,s.sessionId);if(!n)throw new K(de.InvalidParams,`Task not found: ${r.params.taskId}`);if(cn(n.status))throw new K(de.InvalidParams,`Cannot cancel task in terminal status: ${n.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",s.sessionId),this._clearTaskQueue(r.params.taskId);let o=await this._taskStore.getTask(r.params.taskId,s.sessionId);if(!o)throw new K(de.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...o}}catch(n){throw n instanceof K?n:new K(de.InvalidRequest,`Failed to cancel task: ${n instanceof Error?n.message:String(n)}`)}}))}async _oncancel(e){if(!e.params.requestId)return;this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,r,s,n,o=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(n,r),startTime:Date.now(),timeout:r,maxTotalTimeout:s,resetTimeoutOnProgress:o,onTimeout:n})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let s=Date.now()-r.startTime;if(r.maxTotalTimeout&&s>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),K.fromError(de.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:s});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=e;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let s=this.transport?.onerror;this._transport.onerror=o=>{s?.(o),this._onerror(o)};let n=this._transport?.onmessage;this._transport.onmessage=(o,i)=>{n?.(o,i),kc(o)||KI(o)?this._onresponse(o):ig(o)?this._onrequest(o,i):JI(o)?this._onnotification(o):this._onerror(new Error(`Unknown message type: ${JSON.stringify(o)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let s of this._timeoutInfo.values())clearTimeout(s.timeoutId);this._timeoutInfo.clear();for(let s of this._requestHandlerAbortControllers.values())s.abort();this._requestHandlerAbortControllers.clear();let r=K.fromError(de.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let s of e.values())s(r)}_onerror(e){this.onerror?.(e)}_onnotification(e){let r=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(e)).catch(s=>this._onerror(new Error(`Uncaught error in notification handler: ${s}`)))}_onrequest(e,r){let s=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,n=this._transport,o=e.params?._meta?.[an]?.taskId;if(s===void 0){let u={jsonrpc:"2.0",id:e.id,error:{code:de.MethodNotFound,message:"Method not found"}};o&&this._taskMessageQueue?this._enqueueTaskMessage(o,{type:"error",message:u,timestamp:Date.now()},n?.sessionId).catch(l=>this._onerror(new Error(`Failed to enqueue error response: ${l}`))):n?.send(u).catch(l=>this._onerror(new Error(`Failed to send an error response: ${l}`)));return}let i=new AbortController;this._requestHandlerAbortControllers.set(e.id,i);let a=WI(e.params)?e.params.task:void 0,c=this._taskStore?this.requestTaskStore(e,n?.sessionId):void 0,d={signal:i.signal,sessionId:n?.sessionId,_meta:e.params?._meta,sendNotification:async u=>{if(i.signal.aborted)return;let l={relatedRequestId:e.id};o&&(l.relatedTask={taskId:o}),await this.notification(u,l)},sendRequest:async(u,l,f)=>{if(i.signal.aborted)throw new K(de.ConnectionClosed,"Request was cancelled");let h={...f,relatedRequestId:e.id};o&&!h.relatedTask&&(h.relatedTask={taskId:o});let m=h.relatedTask?.taskId??o;return m&&c&&await c.updateTaskStatus(m,"input_required"),await this.request(u,l,h)},authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo,taskId:o,taskStore:c,taskRequestedTtl:a?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{a&&this.assertTaskHandlerCapability(e.method)}).then(()=>s(e,d)).then(async u=>{if(i.signal.aborted)return;let l={result:u,jsonrpc:"2.0",id:e.id};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"response",message:l,timestamp:Date.now()},n?.sessionId):await n?.send(l)},async u=>{if(i.signal.aborted)return;let l={jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:de.InternalError,message:u.message??"Internal error",...u.data!==void 0&&{data:u.data}}};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"error",message:l,timestamp:Date.now()},n?.sessionId):await n?.send(l)}).catch(u=>this._onerror(new Error(`Failed to send response: ${u}`))).finally(()=>{this._requestHandlerAbortControllers.get(e.id)===i&&this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...s}=e.params,n=Number(r),o=this._progressHandlers.get(n);if(!o){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let i=this._responseHandlers.get(n),a=this._timeoutInfo.get(n);if(a&&i&&a.resetTimeoutOnProgress)try{this._resetTimeout(n)}catch(c){this._responseHandlers.delete(n),this._progressHandlers.delete(n),this._cleanupTimeout(n),i(c);return}o(s)}_onresponse(e){let r=Number(e.id),s=this._requestResolvers.get(r);if(s){if(this._requestResolvers.delete(r),kc(e))s(e);else{let i=new K(e.error.code,e.error.message,e.error.data);s(i)}return}let n=this._responseHandlers.get(r);if(n===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let o=!1;if(kc(e)&&e.result&&typeof e.result=="object"){let i=e.result;if(i.task&&typeof i.task=="object"){let a=i.task;typeof a.taskId=="string"&&(o=!0,this._taskProgressTokens.set(a.taskId,r))}}if(o||this._progressHandlers.delete(r),kc(e))n(e);else{let i=K.fromError(e.error.code,e.error.message,e.error.data);n(i)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,r,s){let{task:n}=s??{};if(!n){try{yield{type:"result",result:await this.request(e,r,s)}}catch(i){yield{type:"error",error:i instanceof K?i:new K(de.InternalError,String(i))}}return}let o;try{let i=await this.request(e,Oi,s);if(i.task)o=i.task.taskId,yield{type:"taskCreated",task:i.task};else throw new K(de.InternalError,"Task creation did not return a task");for(;;){let a=await this.getTask({taskId:o},s);if(yield{type:"taskStatus",task:a},cn(a.status)){a.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:o},r,s)}:a.status==="failed"?yield{type:"error",error:new K(de.InternalError,`Task ${o} failed`)}:a.status==="cancelled"&&(yield{type:"error",error:new K(de.InternalError,`Task ${o} was cancelled`)});return}if(a.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:o},r,s)};return}let c=a.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(d=>setTimeout(d,c)),s?.signal?.throwIfAborted()}}catch(i){yield{type:"error",error:i instanceof K?i:new K(de.InternalError,String(i))}}}request(e,r,s){let{relatedRequestId:n,resumptionToken:o,onresumptiontoken:i,task:a,relatedTask:c}=s??{};return new Promise((d,u)=>{let l=_=>{u(_)};if(!this._transport){l(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(e.method),a&&this.assertTaskCapability(e.method)}catch(_){l(_);return}s?.signal?.throwIfAborted();let f=this._requestMessageId++,h={...e,jsonrpc:"2.0",id:f};s?.onprogress&&(this._progressHandlers.set(f,s.onprogress),h.params={...e.params,_meta:{...e.params?._meta||{},progressToken:f}}),a&&(h.params={...h.params,task:a}),c&&(h.params={...h.params,_meta:{...h.params?._meta||{},[an]:c}});let m=_=>{this._responseHandlers.delete(f),this._progressHandlers.delete(f),this._cleanupTimeout(f),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:f,reason:String(_)}},{relatedRequestId:n,resumptionToken:o,onresumptiontoken:i}).catch(S=>this._onerror(new Error(`Failed to send cancellation: ${S}`)));let b=_ instanceof K?_:new K(de.RequestTimeout,String(_));u(b)};this._responseHandlers.set(f,_=>{if(!s?.signal?.aborted){if(_ instanceof Error)return u(_);try{let b=on(r,_.result);b.success?d(b.data):u(b.error)}catch(b){u(b)}}}),s?.signal?.addEventListener("abort",()=>{m(s?.signal?.reason)});let g=s?.timeout??EH,y=()=>m(K.fromError(de.RequestTimeout,"Request timed out",{timeout:g}));this._setupTimeout(f,g,s?.maxTotalTimeout,y,s?.resetTimeoutOnProgress??!1);let v=c?.taskId;if(v){let _=b=>{let S=this._responseHandlers.get(f);S?S(b):this._onerror(new Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,_),this._enqueueTaskMessage(v,{type:"request",message:h,timestamp:Date.now()}).catch(b=>{this._cleanupTimeout(f),u(b)})}else this._transport.send(h,{relatedRequestId:n,resumptionToken:o,onresumptiontoken:i}).catch(_=>{this._cleanupTimeout(f),u(_)})})}async getTask(e,r){return this.request({method:"tasks/get",params:e},Pl,r)}async getTaskResult(e,r,s){return this.request({method:"tasks/result",params:e},r,s)}async listTasks(e,r){return this.request({method:"tasks/list",params:e},El,r)}async cancelTask(e,r){return this.request({method:"tasks/cancel",params:e},XI,r)}async notification(e,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(e.method);let s=r?.relatedTask?.taskId;if(s){let a={...e,jsonrpc:"2.0",params:{...e.params,_meta:{...e.params?._meta||{},[an]:r.relatedTask}}};await this._enqueueTaskMessage(s,{type:"notification",message:a,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let a={...e,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[an]:r.relatedTask}}}),this._transport?.send(a,r).catch(c=>this._onerror(c))});return}let i={...e,jsonrpc:"2.0"};r?.relatedTask&&(i={...i,params:{...i.params,_meta:{...i.params?._meta||{},[an]:r.relatedTask}}}),await this._transport.send(i,r)}setRequestHandler(e,r){let s=$g(e);this.assertRequestHandlerCapability(s),this._requestHandlers.set(s,(n,o)=>{let i=Pg(e,n);return Promise.resolve(r(i,o))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){let s=$g(e);this._notificationHandlers.set(s,n=>{let o=Pg(e,n);return Promise.resolve(r(o))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let r=this._taskProgressTokens.get(e);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(e))}async _enqueueTaskMessage(e,r,s){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let n=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,r,s,n)}async _clearTaskQueue(e,r){if(this._taskMessageQueue){let s=await this._taskMessageQueue.dequeueAll(e,r);for(let n of s)if(n.type==="request"&&ig(n.message)){let o=n.message.id,i=this._requestResolvers.get(o);i?(i(new K(de.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(o)):this._onerror(new Error(`Resolver missing for request ${o} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,r){let s=this._options?.defaultTaskPollInterval??1e3;try{let n=await this._taskStore?.getTask(e);n?.pollInterval&&(s=n.pollInterval)}catch{}return new Promise((n,o)=>{if(r.aborted){o(new K(de.InvalidRequest,"Request cancelled"));return}let i=setTimeout(n,s);r.addEventListener("abort",()=>{clearTimeout(i),o(new K(de.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(e,r){let s=this._taskStore;if(!s)throw new Error("No task store configured");return{createTask:async n=>{if(!e)throw new Error("No request provided");return await s.createTask(n,e.id,{method:e.method,params:e.params},r)},getTask:async n=>{let o=await s.getTask(n,r);if(!o)throw new K(de.InvalidParams,"Failed to retrieve task: Task not found");return o},storeTaskResult:async(n,o,i)=>{await s.storeTaskResult(n,o,i,r);let a=await s.getTask(n,r);if(a){let c=xc.parse({method:"notifications/tasks/status",params:a});await this.notification(c),cn(a.status)&&this._cleanupTaskProgressHandler(n)}},getTaskResult:n=>s.getTaskResult(n,r),updateTaskStatus:async(n,o,i)=>{let a=await s.getTask(n,r);if(!a)throw new K(de.InvalidParams,`Task "${n}" not found - it may have been cleaned up`);if(cn(a.status))throw new K(de.InvalidParams,`Cannot update task "${n}" from terminal status "${a.status}" to "${o}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await s.updateTaskStatus(n,o,i,r);let c=await s.getTask(n,r);if(c){let d=xc.parse({method:"notifications/tasks/status",params:c});await this.notification(d),cn(c.status)&&this._cleanupTaskProgressHandler(n)}},listTasks:n=>s.listTasks(n,r)}}};function Nx(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Lx(t,e){let r={...t};for(let s in e){let n=s,o=e[n];if(o===void 0)continue;let i=r[n];Nx(i)&&Nx(o)?r[n]={...i,...o}:r[n]=o}return r}var UD=Aw(h0(),1),VD=Aw(BD(),1);function I5(){let t=new UD.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,VD.default)(t),t}var Gp=class{constructor(e){this._ajv=e??I5()}getValidator(e){let r="$id"in e&&typeof e.$id=="string"?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return s=>r(s)?{valid:!0,data:s,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var Jp=class{constructor(e){this._server=e}requestStream(e,r,s){return this._server.requestStream(e,r,s)}createMessageStream(e,r){let s=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!s?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let n=e.messages[e.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],i=o.some(u=>u.type==="tool_result"),a=e.messages.length>1?e.messages[e.messages.length-2]:void 0,c=a?Array.isArray(a.content)?a.content:[a.content]:[],d=c.some(u=>u.type==="tool_use");if(i){if(o.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!d)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(d){let u=new Set(c.filter(f=>f.type==="tool_use").map(f=>f.id)),l=new Set(o.filter(f=>f.type==="tool_result").map(f=>f.toolUseId));if(u.size!==l.size||![...u].every(f=>l.has(f)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:e},Dc,r)}elicitInputStream(e,r){let s=this._server.getClientCapabilities(),n=e.mode??"form";switch(n){case"url":{if(!s?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!s?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let o=n==="form"&&e.mode===void 0?{...e,mode:"form"}:e;return this.requestStream({method:"elicitation/create",params:o},ji,r)}async getTask(e,r){return this._server.getTask({taskId:e},r)}async getTaskResult(e,r,s){return this._server.getTaskResult({taskId:e},r,s)}async listTasks(e,r){return this._server.listTasks(e?{cursor:e}:void 0,r)}async cancelTask(e,r){return this._server.cancelTask({taskId:e},r)}};function HD(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"tools/call":if(!t.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${e})`);break;default:break}}function WD(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"sampling/createMessage":if(!t.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${e})`);break;case"elicitation/create":if(!t.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${e})`);break;default:break}}var Kp=class extends Nl{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Tc.options.map((s,n)=>[s,n])),this.isMessageIgnored=(s,n)=>{let o=this._loggingLevels.get(n);return o?this.LOG_LEVEL_SEVERITY.get(s)<this.LOG_LEVEL_SEVERITY.get(o):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new Gp,this.setRequestHandler(dg,s=>this._oninitialize(s)),this.setNotificationHandler(ug,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(vg,async(s,n)=>{let o=n.sessionId||n.requestInfo?.headers["mcp-session-id"]||void 0,{level:i}=s.params,a=Tc.safeParse(i);return a.success&&this._loggingLevels.set(o,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Jp(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Lx(this._capabilities,e)}setRequestHandler(e,r){let n=hl(e)?.method;if(!n)throw new Error("Schema is missing a method literal");let o;if(Di(n)){let a=n;o=a._zod?.def?.value??a.value}else{let a=n;o=a._def?.value??a.value}if(typeof o!="string")throw new Error("Schema method literal must be a string");if(o==="tools/call"){let a=async(c,d)=>{let u=on(Ac,c);if(!u.success){let m=u.error instanceof Error?u.error.message:String(u.error);throw new K(de.InvalidParams,`Invalid tools/call request: ${m}`)}let{params:l}=u.data,f=await Promise.resolve(r(c,d));if(l.task){let m=on(Oi,f);if(!m.success){let g=m.error instanceof Error?m.error.message:String(m.error);throw new K(de.InvalidParams,`Invalid task creation result: ${g}`)}return m.data}let h=on(Tl,f);if(!h.success){let m=h.error instanceof Error?h.error.message:String(h.error);throw new K(de.InvalidParams,`Invalid tools/call result: ${m}`)}return h.data};return super.setRequestHandler(e,a)}return super.setRequestHandler(e,r)}assertCapabilityForMethod(e){switch(e){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${e})`);break;case"ping":case"initialize":break}}assertTaskCapability(e){WD(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&HD(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:UI.includes(r)?r:ng,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},wl)}async createMessage(e,r){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let s=e.messages[e.messages.length-1],n=Array.isArray(s.content)?s.content:[s.content],o=n.some(d=>d.type==="tool_result"),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],c=a.some(d=>d.type==="tool_use");if(o){if(n.some(d=>d.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let d=new Set(a.filter(l=>l.type==="tool_use").map(l=>l.id)),u=new Set(n.filter(l=>l.type==="tool_result").map(l=>l.toolUseId));if(d.size!==u.size||![...d].every(l=>u.has(l)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return e.tools?this.request({method:"sampling/createMessage",params:e},bg,r):this.request({method:"sampling/createMessage",params:e},Dc,r)}async elicitInput(e,r){switch(e.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let n=e;return this.request({method:"elicitation/create",params:n},ji,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let n=e.mode==="form"?e:{...e,mode:"form"},o=await this.request({method:"elicitation/create",params:n},ji,r);if(o.action==="accept"&&o.content&&n.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(n.requestedSchema)(o.content);if(!a.valid)throw new K(de.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(i){throw i instanceof K?i:new K(de.InternalError,`Error validating elicitation response: ${i instanceof Error?i.message:String(i)}`)}return o}}}createElicitationCompletionNotifier(e,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:e}},r)}async listRoots(e,r){return this.request({method:"roots/list",params:e},_g,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};import GD from"node:process";var Yp=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
302
302
  `);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),x5(r)}clear(){this._buffer=void 0}};function x5(t){return YI.parse(JSON.parse(t))}function ZD(t){return JSON.stringify(t)+`
303
- `}var Qp=class{constructor(e=GD.stdin,r=GD.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new Yp,this._started=!1,this._ondata=s=>{this._readBuffer.append(s),this.processReadBuffer()},this._onerror=s=>{this.onerror?.(s)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(r=>{let s=ZD(e);this._stdout.write(s)?r():this._stdout.once("drain",r)})}};import{fileURLToPath as Yte}from"url";import{existsSync as Qd,statSync as Qte}from"fs";import{dirname as bw,isAbsolute as _w,join as Xte,relative as ere,resolve as Aa,sep as tre}from"path";var s_={};tt(s_,{AI_CHAT_TIMEOUT_MS:()=>ef,AI_CONTEXT_BINARY_SAMPLE_BYTES:()=>eC,AI_CONTEXT_MAX_FILE_BYTES:()=>Qb,AI_CONTEXT_MAX_TOTAL_BYTES:()=>Xb,getTools:()=>B5,handleTool:()=>W5});import{readFile as M5,stat as j5}from"fs/promises";import{join as N5}from"path";import{randomUUID as Nd}from"crypto";function H(t){let e=jl(t,{target:"jsonSchema7"});return delete e.$schema,delete e.additionalProperties,e.type==="object"&&!e.required&&(e.required=[]),e}import{existsSync as E5,readFileSync as A5}from"fs";async function ls(t){let e=t.workspaceBaseDir??t.deps.workspaceBaseDir,r=D5(),s=O5(t.providerIds),n=C5(t.deps.registry,s),o=new Set(s),i=s.length>0?n.filter(u=>o.has(u.id)):n,a=s.length>0?i.map(u=>u.id):s,c=await Ru({providers:i,providerIds:a,enabledProviderIds:a,...e!==void 0?{workspaceBaseDir:e}:{},policy:r.workspaceTrustPolicy});return c.blocked.filter(u=>s.includes(u.providerId)).length===0?{guard:c,blockResult:null}:{guard:c,blockResult:{content:[{type:"text",text:T5(c,s,t.deps.i18n)}],isError:!0}}}function T5(t,e,r){let s=new Set(e),n=t.blocked.filter(a=>s.has(a.providerId)),o=n.filter(a=>a.supportsApply),i=[`# ${r.t("workspaceTrust.title")}`,"",`${r.t("workspaceTrust.policy")}: ${t.policy}`,t.workspaceBaseDir?`${r.t("workspaceTrust.workspace")}: ${t.workspaceBaseDir}`:r.t("workspaceTrust.workspaceUnknown")];if(t.discovery){i.push(`${r.t("workspaceTrust.discovery")}: ${t.discovery.status}`),t.discovery.envFiles.length>0&&i.push(`${r.t("workspaceTrust.envFilesPresent")}: ${t.discovery.envFiles.join(", ")} (${r.t("workspaceTrust.envFilesNote")})`);let a=t.discovery.findings.filter(c=>c.kind==="risk");a.length>0&&i.push(`${r.t("workspaceTrust.reviewSignals")}: ${a.map(c=>`${c.path}:${c.signal}`).join(", ")}`)}if(t.applied.length>0){i.push("",`${r.t("workspaceTrust.applied")}:`);for(let a of t.applied)i.push(`- ${a.providerId}: ${a.status}${a.message?` - ${a.message}`:""}`)}i.push("",`${r.t("workspaceTrust.blocked")}:`);for(let a of n)i.push(`- ${a.providerId}: ${a.reason}${a.supportsApply?"":` (${r.t("workspaceTrust.noPersistentHook")})`}`);if(o.length>0&&t.workspaceBaseDir){let a=o.map(d=>d.providerId),c={providers:a.join(", "),workspaceBaseDir:t.workspaceBaseDir};i.push(""),i.push(r.t("provider.trust.batch.workspaceBlocked",c)),i.push(r.t("provider.trust.batch.question",c)),i.push(""),i.push("```json"),i.push(JSON.stringify({tool:"provider_trust_apply_all",providers:a,workspace_base_dir:t.workspaceBaseDir,approved:!0},null,2)),i.push("```")}return i.join(`
303
+ `}var Qp=class{constructor(e=GD.stdin,r=GD.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new Yp,this._started=!1,this._ondata=s=>{this._readBuffer.append(s),this.processReadBuffer()},this._onerror=s=>{this.onerror?.(s)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(r=>{let s=ZD(e);this._stdout.write(s)?r():this._stdout.once("drain",r)})}};import{fileURLToPath as Yte}from"url";import{existsSync as Qd,statSync as Qte}from"fs";import{dirname as bw,isAbsolute as _w,join as Xte,relative as ere,resolve as Aa,sep as tre}from"path";var s_={};tt(s_,{AI_CHAT_TIMEOUT_MS:()=>ef,AI_CONTEXT_BINARY_SAMPLE_BYTES:()=>eC,AI_CONTEXT_MAX_FILE_BYTES:()=>Qb,AI_CONTEXT_MAX_TOTAL_BYTES:()=>Xb,getTools:()=>B5,handleTool:()=>W5});import{readFile as M5,stat as j5}from"fs/promises";import{join as N5}from"path";import{randomUUID as Nd}from"crypto";function H(t){let e=jl(t,{target:"jsonSchema7"});return delete e.$schema,delete e.additionalProperties,e.type==="object"&&!e.required&&(e.required=[]),e}import{existsSync as E5,readFileSync as A5}from"fs";async function ls(t){let e=t.workspaceBaseDir??t.deps.workspaceBaseDir,r=D5(),s=O5(t.providerIds),n=C5(t.deps.registry,s),o=new Set(s),i=s.length>0?n.filter(u=>o.has(u.id)):n,a=s.length>0?i.map(u=>u.id):s,c=await Ru({providers:i,providerIds:a,enabledProviderIds:a,...e!==void 0?{workspaceBaseDir:e}:{},policy:r.workspaceTrustPolicy});return c.blocked.filter(u=>s.includes(u.providerId)).length===0?{guard:c,blockResult:null}:{guard:c,blockResult:{content:[{type:"text",text:T5(c,s,t.deps.i18n)}],isError:!0}}}function T5(t,e,r){let s=new Set(e),n=t.blocked.filter(a=>s.has(a.providerId)),o=n.filter(a=>a.supportsApply),i=[`# ${r.t("workspaceTrust.title")}`,"",`${r.t("workspaceTrust.policy")}: ${t.policy}`,t.workspaceBaseDir?`${r.t("workspaceTrust.workspace")}: ${t.workspaceBaseDir}`:r.t("workspaceTrust.workspaceUnknown")];if(t.discovery){i.push(`${r.t("workspaceTrust.discovery")}: ${t.discovery.status}`),t.discovery.envFiles.length>0&&i.push(`${r.t("workspaceTrust.envFilesPresent")}: ${t.discovery.envFiles.join(", ")} (${r.t("workspaceTrust.envFilesNote")})`);let a=t.discovery.findings.filter(c=>c.kind==="risk");a.length>0&&i.push(`${r.t("workspaceTrust.reviewSignals")}: ${a.map(c=>`${c.path}:${c.signal}`).join(", ")}`)}if(t.applied.length>0){i.push("",`${r.t("workspaceTrust.applied")}:`);for(let a of t.applied)i.push(`- ${a.providerId}: ${a.status}${a.message?` - ${a.message}`:""}`)}i.push("",`${r.t("workspaceTrust.blocked")}:`);for(let a of n)i.push(`- ${a.providerId}: ${a.reason}${a.supportsApply?"":` (${r.t("workspaceTrust.noPersistentHook")})`}`);if(o.length>0&&t.workspaceBaseDir){let a=o.map(d=>d.providerId),c={providers:a.join(", "),workspaceBaseDir:t.workspaceBaseDir};i.push(""),i.push(r.t("provider.trust.batch.workspaceBlocked",c)),i.push(r.t("provider.trust.batch.question",c)),i.push(r.t("provider.trust.apply.singleToolInstruction")),i.push(""),i.push("```json"),i.push(JSON.stringify(a.map(d=>({tool:"provider_trust_apply",provider:d,workspace_base_dir:t.workspaceBaseDir,approved:!0})),null,2)),i.push("```")}return i.join(`
304
304
  `)}function D5(){let t=Rr();if(!E5(t))return{enabledProviderIds:[],workspaceTrustPolicy:"ask"};try{let e=JSON.parse(A5(t,"utf-8")),r=Vs(e);return{enabledProviderIds:r.enabledProviders.map(s=>s.id),workspaceTrustPolicy:r.workspaceTrustPolicy}}catch{return{enabledProviderIds:[],workspaceTrustPolicy:"ask"}}}function C5(t,e){if(!t)return[];if(typeof t.getAll=="function")return t.getAll();let r=[];for(let s of e)try{r.push(t.get(s))}catch{}return r}function O5(t){let e=[];for(let r of t)e.includes(r)||e.push(r);return e}var L5=p.object({title:p.string().describe("Document title"),metadata:p.record(p.string()).optional().describe("Optional key-value metadata"),kind:p.enum(["individual","debate","synthesis","general"]).optional().describe("Semantic placement: 'individual' (per-provider initial analysis) \u2192 individual/, 'debate' (round-by-round working docs) \u2192 debates/, 'synthesis' (final consensus) \u2192 synthesis/, 'general' (default, legacy) \u2192 reviews/.")}).optional(),JD=36e5,e_=p.number().int().positive().max(JD).optional().describe(`Per-call provider chat timeout in milliseconds. Defaults to AI_CHAT_TIMEOUT_MS (300000 = 5 minutes); raise up to ${JD} (60 minutes) for large reviews. The same value is forwarded to the provider chat request and (for ai_chat) to the auto-fallback race.`),YD=p.object({provider:p.string().describe("Provider ID (e.g. 'ollama', 'gemini', 'codex', 'claude')"),prompt:p.string().describe("Chat prompt to send"),model:p.string().optional().describe("Model override"),system:p.string().optional().describe("System prompt"),files:p.array(p.string()).optional().describe("File paths to include as context"),allow_external_paths:p.boolean().optional().describe("Opt-in: allow absolute file paths outside the workspace base directory. Default false. Relative paths remain sandboxed either way. Audit trail is the call log \u2014 use sparingly."),timeout_ms:e_,save_as_document:L5.describe("If provided, automatically save the response as a workspace document with the given title and metadata. Returns document ID in the result.")}),QD=p.object({provider:p.string().describe("Provider ID"),file_paths:p.array(p.string()).min(1).describe("File paths to analyze"),question:p.string().describe("Question to ask about the files"),save_to_file:p.string().optional().describe("Path to save the analysis result"),allow_external_paths:p.boolean().optional().describe("Opt-in: allow absolute file paths outside the workspace base directory. Default false."),timeout_ms:e_}),XD=p.object({providers:p.array(p.string()).min(1).describe("List of provider IDs to compare"),prompt:p.string().describe("Prompt to send to all providers"),aggregate_provider:p.string().optional().describe("Provider ID to synthesize all responses into a unified document. If omitted, returns raw comparisons only."),aggregate_prompt:p.string().optional().describe("Custom synthesis prompt. Default: synthesize and identify agreements/disagreements."),timeout_ms:e_}),KD=Ak({id:"ai_compare.aggregate_synthesis",version:1,description:"The aggregate provider must return a non-empty synthesis document.",extraInstructions:["Return the synthesis document body only.","Do not return an empty response."],validate(t){return t.trim().length>0?[]:["Aggregate synthesis must not be empty."]}}),ef=3e5,Qb=1e6,Xb=4e6,eC=4096;function z5(t,e){return e?.get(t.id)??Ut(t.type)}function t_(t,e={}){return{providerRunExecutor:t.providerRunExecutor??new es({...t.providerRunStore!==void 0?{store:t.providerRunStore}:{},...e.traceWriter!==!1&&t.traceWriter!==void 0?{traceWriter:t.traceWriter}:{}}),shouldShutdownProviderRunExecutor:t.providerRunExecutor===void 0&&t.providerRunStore===void 0}}function r_(t,e){if(e)try{t.shutdown()}catch{}}function F5(t){return!t||t.length===0?"":["","Attached file context:",...t.map(e=>`--- ${e.path} ---
305
305
  ${e.content??""}`)].join(`
306
306
  `)}async function q5(t,e,r){if(t.type!=="ollama")return t.chat(e);let s=z5(t,r.providerPolicies),n=new sn({baseDir:r.baseDir,tools:oi(s)?rc():$i()}),o=`${e.prompt}${F5(e.files)}`;return n.chat(t,{...e,prompt:o})}async function tC(t){let e=t.allowExternalPaths?vS:Ht,r=[],s=0;for(let n of t.paths){let o=e(n,t.baseDir),i=await j5(o);if(!i.isFile())throw new Error(`AI context path is not a file: ${o}`);if(i.size>Qb)throw new Error(`File exceeds per-file AI context limit (${i.size} > ${Qb} bytes): ${o}`);if(s+i.size>Xb)throw new Error(`Total AI context size exceeds limit (${s+i.size} > ${Xb} bytes).`);s+=i.size;let a=await M5(o),c=Buffer.isBuffer(a)?a:Buffer.from(a);if(c.subarray(0,eC).includes(0))throw new Error(`Binary file rejected from AI context: ${o}`);let u;try{u=new TextDecoder("utf-8",{fatal:!0}).decode(c)}catch{throw new Error(`Binary file rejected from AI context: ${o}`)}r.push({path:o,content:u})}return r}function rC(t,e,r,s){if(t)try{t.write({traceId:Nd(),action:"chat",providerId:e,task:`${s.tool}:allow_external_paths`,request:{promptSummary:(s.promptSummary?s.promptSummary+" | ":"")+`external_files=${r.length}: ${r.join(", ")}`,fileCount:r.length},response:{success:!0,charLength:0},latencyMs:0})}catch{}}function sC(t,e,r){let s=`${r.tool}-${Date.now()}-${Nd().slice(0,8)}`,n=N5(t,".agestra","pending-saves",`${s}.md`),o=[["id",s],["tool",r.tool],["provider",e.provider],["model",e.model],["created_at",new Date().toISOString()]];if(r.title&&o.push(["title",r.title]),r.originalTarget&&o.push(["original_target",r.originalTarget]),r.extraMetadata)for(let[a,c]of Object.entries(r.extraMetadata))c!=null&&c!==""&&o.push([a,c]);let i=["---",...o.map(([a,c])=>`${a}: ${JSON.stringify(c)}`),"---",""].join(`
@@ -358,7 +358,7 @@ ${S}`:"",`
358
358
 
359
359
  # Synthesis
360
360
 
361
- ${g}`),{content:[{type:"text",text:y}]}}finally{r_(l,f)}}async function W5(t,e,r){switch(t){case"ai_chat":return U5(e,r);case"ai_analyze_files":return V5(e,r);case"ai_compare":return H5(e,r);default:return{content:[{type:"text",text:`Unknown tool: ${t}`}],isError:!0}}}var Z_={};tt(Z_,{getTools:()=>c_,handleTool:()=>PM});var nC=["host-seeded","council","provider-seeded"],oC={"host-led":"host-seeded","delegated-lead":"provider-seeded"},Z5=new Set(nC);function ga(t){if(typeof t=="string")return Z5.has(t)?t:oC[t]}function tf(t){let e=ga(t);if(e!==void 0)return e;throw new Error(n_(t))}function n_(t){return[`Invalid research topology: ${typeof t=="string"?`"${t}"`:typeof t}.`,`Expected one of: ${nC.join(", ")}.`,`Legacy aliases are accepted for parsing only: ${Object.keys(oC).join(", ")}.`].join(" ")}var ya=p.string().regex(fu,"Session ID must start with a letter or number and contain only letters, numbers, '_' or '-'"),rf=p.object({topic:p.string().describe("Topic for the debate"),providers:p.array(p.string()).min(1).describe("Provider IDs to participate"),max_rounds:p.number().int().positive().optional().default(3).describe("Maximum debate rounds"),goal:p.string().optional().describe("Quality goal for enhanced debate mode (enables quality validation loop)"),validator:p.string().optional().describe("Provider ID for quality validation (agent-tier recommended)"),min_rounds:p.number().int().positive().optional().default(2).describe("Minimum rounds before validation (default: 2)")}),sf=p.object({items:p.array(p.object({provider:p.string().describe("Provider that produced the content"),content:p.string().describe("Content to validate"),task:p.string().describe("Original task description")})).min(1).describe("Items to cross-validate"),validators:p.array(p.string()).optional().describe("Provider IDs to use as validators (agent-tier only)"),criteria:p.string().optional().describe("Custom validation criteria")}),nf=p.object({session_id:ya.describe("Session ID to check")}),G5=p.enum(["idea","design","review","qa","security","implement","research"]),J5=p.enum(["idea","design","review","qa","security","implement"]),K5=new Set(["research-packet","research_packet","research-bundle","research_bundle"]);function va(t){return K5.has(t.trim().toLowerCase())}function iC(t){return`\`${t}\` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.`}var Y5=p.enum(["host-seeded","council","provider-seeded","host-led","delegated-lead"],{errorMap:t=>({message:n_("received"in t?t.received:void 0)})}).transform(t=>tf(t)),Q5=p.object({id:p.string().min(1).optional(),title:p.string().min(1),statement:p.string().min(1),status:p.enum(["validated","dismissed","needs_human_review"]).optional().default("needs_human_review"),evidence_refs:p.array(p.string().min(1)).optional().default([]),residual_risk:p.string().optional()}),of=p.object({session_id:ya.optional().describe("Optional stable research run/session id. If omitted, the server generates one."),topic:p.string().min(1).describe("Research topic or question."),research_target_domain:G5.describe("The domain the research is about. The MCP workflow itself is standalone research."),topology:Y5.optional().default("host-seeded").describe("Research topology to record. Legacy topology ids are accepted only as parse aliases and runtime values are canonical."),status:p.enum(["running","completed","failed"]).optional().default("completed").describe("Research run status to record in the run manifest and report."),markdown_report_path:p.string().min(1).optional().describe("Optional human Markdown report path under docs/reports/research or .agestra/workspace. Must be a new .md file."),markdown_report_body:p.string().optional().describe("Optional Markdown report body to write. The server appends an execution-evidence section when missing."),research_plan:p.unknown().optional().describe("Optional host-evidence research plan or brief to persist as research_plan.json."),assignment_table:p.array(p.unknown()).optional().describe("Optional assignment table. Host-seeded runs may omit or pass an empty table."),claims:p.array(Q5).optional().default([]).describe("Claim/evidence entries to write into evidence_packet.json."),available_provider_ids:p.array(p.string().min(1)).optional().describe("Providers observed as available by the host. If omitted, the server records registered provider ids when available."),non_invocation_reason:p.string().optional().describe("How this host evidence will feed provider-backed review or debate."),validation_notes:p.array(p.string()).optional().default([]).describe("Short validation notes or residual risks for the run report.")}),af=p.object({topic:p.string().describe("Topic for the debate"),providers:p.array(p.string()).min(1).describe("Provider IDs to participate"),goal:p.string().optional().describe("Quality goal for the debate"),save_document:p.boolean().optional().default(!0).describe("Save debate as a workspace document (default: true)")}),cf=p.object({debate_id:p.string().describe("Debate session ID"),provider:p.string().describe(`Provider ID to take this turn. Use "claude" to record Claude's own opinion as an independent turn (requires claude_comment).`),claude_comment:p.string().optional().describe(`Claude's opinion. When provider is "claude", this becomes the turn content. Otherwise, injected before the provider responds.`),auto_specialist:p.boolean().optional().default(!1).describe("When true with provider 'claude', automatically select and record a specialist agent recommendation based on the debate topic.")}),df=p.object({debate_id:p.string().describe("Debate session ID to conclude"),summary:p.string().optional().describe("Claude's final summary of the debate"),quality_scores:p.array(p.object({provider:p.string(),score:p.number().min(0).max(1),feedback:p.string()})).optional().describe("Quality assessment of each provider's contribution")}),uf=p.object({document:p.string().describe("Document content to review"),providers:p.array(p.string()).min(1).describe("Provider IDs to review the document"),review_prompt:p.string().optional().describe("Custom review instructions (default: agree/disagree with feedback)"),debate_id:p.string().optional().describe("Link reviews to an existing debate session's workspace document")}),lf=p.object({task_id:p.string().describe("Task ID to review changes for")}),pf=p.object({task_id:p.string().describe("Task ID whose changes to accept"),message:p.string().optional().describe("Commit message for the merge")}),ff=p.object({task_id:p.string().describe("Task ID whose changes to reject"),reason:p.string().optional().describe("Reason for rejection")}),o_=p.object({agrees:p.union([p.boolean(),p.enum(["true","false"])]).transform(t=>typeof t=="boolean"?t:t==="true"),feedback:p.string().optional().default(""),suggestions:p.string().optional()}),X5=p.object({assignment_id:p.string().min(1).optional(),participant:p.string().min(1).optional(),assignee:p.string().min(1).optional(),question:p.string().min(1),lens:p.string().min(1).optional(),scope:p.string().min(1).optional(),deliverable:p.string().min(1).optional(),priority:p.enum(["low","medium","high"]).optional(),expected_artifact:p.string().min(1).optional(),rationale:p.string().min(1).optional()}).strict(),mf=p.object({domain:J5.describe("Target domain for host-led research consensus. Direct consensus starts from host-prepared initial_aggregation items."),objective:p.string().min(1).describe("What the research consensus flow should investigate and resolve."),participants:p.array(p.string().min(1)).min(1).describe("Provider or host participant IDs for the later debate phase. Research bundle pseudo-participants are rejected."),research_assignments:p.array(X5).optional().describe("Optional host-owned research assignments for providers or host researchers."),provider_order:p.array(p.string().min(1)).optional().describe("Optional debate provider order. Defaults to participants order when omitted."),max_rounds:p.number().int().positive().max(50).optional().describe("Maximum structured consensus rounds once debate wiring is enabled."),background:p.boolean().optional().default(!0).describe("When true, consensus may continue in the background after research preprocessing."),output:p.object({write_aggregation_document:p.boolean().optional().default(!1).describe("Write the engine-generated aggregation document under docs/agestra."),write_result_document:p.boolean().optional().default(!1).describe("Return the docs/agestra target path for the team-lead-authored final decision document. The engine does not write this document.")}).strict().optional().describe("Requested human-readable research outputs.")}).strict(),aC=["mode","domain","auto_inject_specialists","exclude_participants","individual_review_prompt","research_topology","seed_provider","seed_scope","reviewer_participants","tool_broker_policy","seed_document","research_plan","assignment_table","research_plan_approved","artifact_only_diagnostic","source_documents"],eY=p.object({id:p.string().min(1).optional().describe("Optional source-local id. The engine still allocates stable ITEM-* ids."),proposer:p.string().min(1).describe("Participant, provider, host artifact, or preprocessor that proposed this item."),title:p.string().min(1),plainSummary:p.string().min(1),originalClaim:p.string().min(1),sourceRefs:p.array(p.string().min(1)).optional().default([]),status:p.enum(["accepted","excluded","unresolved","needs_opinion"]).optional().default("unresolved").describe("Initial ledger status. Missing means unresolved."),preAgreedBy:p.array(p.string().min(1)).optional().describe("Participants whose agreement was already established by preprocessing.")}).strict(),tY=p.object({summary:p.string().optional(),sourceRefs:p.array(p.string().min(1)).optional().default([]),items:p.array(eY).min(1)}).strict(),rY=p.object({participant_id:p.string().min(1),transport:p.literal("host-turn"),agent_name:p.string().min(1).describe("Host-native agent name to show in pending_host_turns, e.g. agestra-debate.")}).strict(),sY=p.object({taskLabel:p.string().min(1).optional().describe("Human-readable label only. The engine never branches on it."),sourceWorkflow:p.string().min(1).optional().describe("Human-readable origin label for the caller/preprocessor.")}).strict(),hf=p.object({topic:p.string().min(1).describe("Short name for the consensus session."),scope:p.string().optional().describe("Consensus scope. The engine stores and forwards it but does not interpret it."),metadata:sY.optional().describe("Optional labels for humans and artifacts. These values never affect engine behavior."),workspace_base_dir:p.string().optional().describe("Optional absolute target workspace root. Use when the host workspace root is unavailable, the target project differs from the MCP server runtime directory, or the target is a new folder without project markers."),leader:p.string().optional().describe("Participant ID authorized to approve the final synthesis. Defaults to the session-context leader or the first participant."),participants:p.array(p.string().min(1)).min(1).describe("Exact participant IDs for consensus rounds. The engine never injects participants."),participant_routes:p.array(rY).optional().default([]).describe("Explicit host-native participant routes. Only these routes create pending host turns."),initial_aggregation:tY.describe("Leader/research/debate preprocessed JSON items that seed the consensus ledger."),max_rounds:p.number().int().positive().max(50).optional().describe("Maximum number of rounds. Default: STRUCTURED_DEBATE_DEFAULT_MAX_ROUNDS."),participant_timeout_ms:p.number().int().positive().max(36e5).optional().describe("Optional per-participant inactivity timeout in milliseconds for consensus provider turns. Default is 300000 (5 minutes); use 600000 (10 minutes) for large or deep reviews."),background:p.boolean().optional().default(!0).describe("When true (default), start in the background and return a tracking receipt. When false, wait for the final engine result in this tool call."),await_completion_ms:p.number().int().nonnegative().max(3e5).optional().describe("When background is true, wait up to this many milliseconds for a quick completion before returning the tracking receipt."),files:p.array(p.string()).optional().describe("Optional list of files to pass to participants as context."),locale:p.enum(["ko","zh","ja","en"]).optional().describe("Override config locale for system text in this consensus session only.")}).strict(),gf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start"),leader_note:p.string().optional().describe("Optional note appended to the synthesis footer under 'Leader approval notes'.")}),yf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start"),additional_rounds:p.union([p.literal(3),p.literal(5),p.literal(10)]).describe("How many extra rounds to run beyond the current round count. Choose one of 3, 5, or 10."),background:p.boolean().optional().default(!0).describe("When true (default), continue in the background and return a tracking receipt. When false, wait for the additional rounds to finish in this tool call."),await_completion_ms:p.number().int().nonnegative().max(3e5).optional().describe("When background is true, wait up to this many milliseconds for quick completion before returning the tracking receipt.")}),vf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start"),reason:p.string().optional().describe("Optional rejection reason, captured in the debate transcript footer."),spawn_issue:p.boolean().optional().default(!1).describe("If true, also write an issue_{sessionIdShort}_{YYYYMMDD}_{seq}.md under individual/ listing all non-accepted proposals (rejected/withdrawn/open/inconclusive/superseded). A rejected synthesis is always written.")}),bf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start."),participant_id:p.string().min(1).describe("Explicit host-native participant id the host fulfilled. Must match an entry under `pending_host_turns` in `agent_debate_status`."),content:p.string().min(1).describe("Verbatim content produced by the host route. Consensus-round handoffs must return the same JSON consensus contract used for provider turns."),round:p.number().int().nonnegative().optional().describe("Round number from the matching pending host-turn entry. When supplied the engine rejects mismatched submissions to catch stale responses.")});import{existsSync as uY,readFileSync as lY}from"fs";import{readFileSync as nY,existsSync as oY}from"fs";var iY={ollama:{executionPolicy:"workspace-write",config:{host:Ca,defaultModel:"auto"}},"gemini-cli":{executionPolicy:Ut("gemini-cli"),config:{timeout:12e4}},"codex-cli":{executionPolicy:Ut("codex-cli"),config:{timeout:12e4}},"claude-cli":{executionPolicy:Ut("claude-cli"),config:{timeout:12e4}}};async function Rn(t){let e=t?.workspaceBaseDir,r=[{id:"ollama",type:"ollama",provider:new oo({id:"ollama",host:Ca})},{id:"gemini",type:"gemini-cli",provider:new io({id:"gemini",workspaceBaseDir:e})},{id:"codex",type:"codex-cli",provider:new ao({id:"codex",workspaceBaseDir:e})},{id:"claude-cli",type:"claude-cli",provider:new co({id:"claude-cli",workspaceBaseDir:e})}],s=[],n=[];await Promise.all(r.map(async i=>{try{await i.provider.initialize()}catch{}let a=i.provider.isAvailable();s.push({id:i.id,type:i.type,available:a}),a&&n.push(i.provider)}));let o=["ollama","gemini","codex","claude-cli"];return s.sort((i,a)=>o.indexOf(i.id)-o.indexOf(a.id)),n.sort((i,a)=>o.indexOf(i.id)-o.indexOf(a.id)),{results:s,providers:n}}function aY(t){if(!oY(t))return null;try{return JSON.parse(nY(t,"utf-8"))}catch{return null}}function cY(t){return t==="auto"?"auto":"default-only"}function cC(t,e,r){let s=aY(t),n=new Set(r.enabledIds??[]),o=new Map((s?.providers??[]).map(l=>[l.id,l])),i=e.map(l=>{let f=iY[l.type]||{executionPolicy:Ut(l.type),config:{}},h=o.get(l.id);return o.delete(l.id),{id:l.id,type:l.type,enabled:l.available&&n.has(l.id),executionPolicy:h?.executionPolicy??f.executionPolicy,config:{...h?.config??f.config}}});for(let l of o.values())i.push({...l,enabled:n.has(l.id)?l.enabled:!1});if(i.length===0)throw new Error("No providers available to write into providers.config.json");let a={selectionPolicy:cY(r.selectionPolicy??s?.selectionPolicy),workspaceTrustPolicy:dY(r.workspaceTrustPolicy??s?.workspaceTrustPolicy),...r.locale!==void 0?{locale:r.locale}:s?.locale!==void 0?{locale:s.locale}:{},providers:i},c=s?JSON.stringify(s):null,d=JSON.stringify(a),u=c===null?"created":c===d?"unchanged":"updated";return!r.dryRun&&u!=="unchanged"&&(uS(t),Se(t,a)),{action:u,path:t,config:a}}function dY(t){return t==="auto-exact"||t==="never"?t:"ask"}function dC(t,e){i_(t,e)}function i_(t,e,r){let s=[];for(let n of t)e.has(n.id)||r?.excludeIds?.has(n.id)||r?.excludeTypes?.has(n.type)||(e.register(n),s.push(n));return s}function ps(t,e){return t.t(e?"common.yes":"common.no")}function Je(t,e,r){let s=t.t(e);return s===e?r:`${s} (${r})`}var _f="agent_consensus_start",ba="agent_debate_approve",_a="agent_debate_continue",wa="agent_debate_reject",Ld="agent_consensus_submit_turn";function zd(t){return t.moderatorEngine?t.structuredSessionRegistry?null:{content:[{type:"text",text:t.i18n.t("consensus.error.registryMissing")}],isError:!0}:{content:[{type:"text",text:t.i18n.t("consensus.error.engineMissing")}],isError:!0}}async function uC(t,e){let r=zd(e);if(r)return r;let s=pY(t);if(s.length>0)return dt(e.i18n.t("consensus.error.unsupportedFields",{fields:s.join(", ")}));let n;try{n=hf.parse(t)}catch(c){return dt(e.i18n.t("consensus.error.invalidArguments",{message:A(c)}))}let o=fY(n.participants);if(o!==void 0)return dt(e.i18n.t("consensus.error.duplicateParticipant",{participantId:o}));let i=n.participants.find(mY);if(i!==void 0)return dt(e.i18n.t("consensus.error.legacySpecialist",{participantId:i}));let a=hY(n.leader,n.participants,e);if(!a)return dt(e.i18n.t("consensus.error.leaderMissing"));try{let c=vC(n.participants,e),d=await ls({providerIds:n.participants,deps:e,workspaceBaseDir:e.workspaceBaseDir});if(d.blockResult)return d.blockResult;let u=d.guard.readiness.length>0?d.guard.readiness:await gY(n.participants,e,c),l=bC(),f=tk({requestedProviderIds:n.participants,enabledProviderIds:l.enabledProviderIds.length>0?l.enabledProviderIds:n.participants,providers:c,readiness:u,...e.providerPolicies!==void 0?{providerPolicies:e.providerPolicies}:{},leader:a,...e.sessionContext?.executionMode!==void 0?{executionMode:e.sessionContext.executionMode}:{},maxParallelWorkers:3,traceDataState:vY(e)}),h=yY(l,n.locale),m=await e.moderatorEngine.startDebate({topic:n.topic,...n.scope!==void 0?{scope:n.scope}:{},...n.metadata!==void 0?{metadata:{...n.metadata.taskLabel!==void 0?{taskLabel:n.metadata.taskLabel}:{},...n.metadata.sourceWorkflow!==void 0?{sourceWorkflow:n.metadata.sourceWorkflow}:{}}}:{},leader:a,participants:n.participants,participantRoutes:n.participant_routes.map(y=>({participantId:y.participant_id,agentName:y.agent_name})),initialAggregation:{...n.initial_aggregation.summary!==void 0?{summary:n.initial_aggregation.summary}:{},sourceRefs:n.initial_aggregation.sourceRefs,items:n.initial_aggregation.items.map(y=>({...y.id!==void 0?{id:y.id}:{},proposer:y.proposer,title:y.title,plainSummary:y.plainSummary,originalClaim:y.originalClaim,sourceRefs:y.sourceRefs,status:y.status,...y.preAgreedBy!==void 0?{preAgreedBy:y.preAgreedBy}:{}}))},...n.max_rounds!==void 0?{maxRounds:n.max_rounds}:{},...n.participant_timeout_ms!==void 0?{participantTimeoutMs:n.participant_timeout_ms}:{},...n.locale!==void 0?{locale:n.locale}:{},...n.files!==void 0?{files:n.files}:{},readiness:u,routing:f,setupSnapshot:h,background:n.background??!0,...n.await_completion_ms!==void 0?{awaitCompletionMs:n.await_completion_ms}:{}}),g=[m.terminalReport];return g.push(bY(f,e.i18n)),u.length>0&&g.push(_Y(u,e.i18n)),g.push(hC(m.sessionId,m.snapshot.status,e.i18n)),m.snapshot.status==="escalated"?g.push(yC(m.sessionId,e.i18n)):m.snapshot.status==="ready-for-approval"?g.push(gC(m.sessionId,e.i18n)):m.snapshot.status==="error"&&g.push(e.i18n.t("consensus.error.engineReported",{message:m.errorMessage??e.i18n.t("consensus.error.noMessage")})),{content:[{type:"text",text:g.filter(Boolean).join(`
361
+ ${g}`),{content:[{type:"text",text:y}]}}finally{r_(l,f)}}async function W5(t,e,r){switch(t){case"ai_chat":return U5(e,r);case"ai_analyze_files":return V5(e,r);case"ai_compare":return H5(e,r);default:return{content:[{type:"text",text:`Unknown tool: ${t}`}],isError:!0}}}var Z_={};tt(Z_,{getTools:()=>c_,handleTool:()=>PM});var nC=["host-seeded","council","provider-seeded"],oC={"host-led":"host-seeded","delegated-lead":"provider-seeded"},Z5=new Set(nC);function ga(t){if(typeof t=="string")return Z5.has(t)?t:oC[t]}function tf(t){let e=ga(t);if(e!==void 0)return e;throw new Error(n_(t))}function n_(t){return[`Invalid research topology: ${typeof t=="string"?`"${t}"`:typeof t}.`,`Expected one of: ${nC.join(", ")}.`,`Legacy aliases are accepted for parsing only: ${Object.keys(oC).join(", ")}.`].join(" ")}var ya=p.string().regex(fu,"Session ID must start with a letter or number and contain only letters, numbers, '_' or '-'"),rf=p.object({topic:p.string().describe("Topic for the debate"),providers:p.array(p.string()).min(1).describe("Provider IDs to participate"),max_rounds:p.number().int().positive().optional().default(3).describe("Maximum debate rounds"),goal:p.string().optional().describe("Quality goal for enhanced debate mode (enables quality validation loop)"),validator:p.string().optional().describe("Provider ID for quality validation (agent-tier recommended)"),min_rounds:p.number().int().positive().optional().default(2).describe("Minimum rounds before validation (default: 2)")}),sf=p.object({items:p.array(p.object({provider:p.string().describe("Provider that produced the content"),content:p.string().describe("Content to validate"),task:p.string().describe("Original task description")})).min(1).describe("Items to cross-validate"),validators:p.array(p.string()).optional().describe("Provider IDs to use as validators (agent-tier only)"),criteria:p.string().optional().describe("Custom validation criteria")}),nf=p.object({session_id:ya.describe("Session ID to check")}),G5=p.enum(["idea","design","review","qa","security","implement","research"]),J5=p.enum(["idea","design","review","qa","security","implement"]),K5=new Set(["research-packet","research_packet","research-bundle","research_bundle"]);function va(t){return K5.has(t.trim().toLowerCase())}function iC(t){return`\`${t}\` is a retired research bundle participant. Host-led research consensus must use the dedicated research preprocessor flow; do not pass research bundles through consensus participants or source_documents.`}var Y5=p.enum(["host-seeded","council","provider-seeded","host-led","delegated-lead"],{errorMap:t=>({message:n_("received"in t?t.received:void 0)})}).transform(t=>tf(t)),Q5=p.object({id:p.string().min(1).optional(),title:p.string().min(1),statement:p.string().min(1),status:p.enum(["validated","dismissed","needs_human_review"]).optional().default("needs_human_review"),evidence_refs:p.array(p.string().min(1)).optional().default([]),residual_risk:p.string().optional()}),of=p.object({session_id:ya.optional().describe("Optional stable research run/session id. If omitted, the server generates one."),topic:p.string().min(1).describe("Research topic or question."),research_target_domain:G5.describe("The domain the research is about. The MCP workflow itself is standalone research."),topology:Y5.optional().default("host-seeded").describe("Research topology to record. Legacy topology ids are accepted only as parse aliases and runtime values are canonical."),status:p.enum(["running","completed","failed"]).optional().default("completed").describe("Research run status to record in the run manifest and report."),markdown_report_path:p.string().min(1).optional().describe("Optional human Markdown report path under docs/reports/research or .agestra/workspace. Must be a new .md file."),markdown_report_body:p.string().optional().describe("Optional Markdown report body to write. The server appends an execution-evidence section when missing."),research_plan:p.unknown().optional().describe("Optional host-evidence research plan or brief to persist as research_plan.json."),assignment_table:p.array(p.unknown()).optional().describe("Optional assignment table. Host-seeded runs may omit or pass an empty table."),claims:p.array(Q5).optional().default([]).describe("Claim/evidence entries to write into evidence_packet.json."),available_provider_ids:p.array(p.string().min(1)).optional().describe("Providers observed as available by the host. If omitted, the server records registered provider ids when available."),non_invocation_reason:p.string().optional().describe("How this host evidence will feed provider-backed review or debate."),validation_notes:p.array(p.string()).optional().default([]).describe("Short validation notes or residual risks for the run report.")}),af=p.object({topic:p.string().describe("Topic for the debate"),providers:p.array(p.string()).min(1).describe("Provider IDs to participate"),goal:p.string().optional().describe("Quality goal for the debate"),save_document:p.boolean().optional().default(!0).describe("Save debate as a workspace document (default: true)")}),cf=p.object({debate_id:p.string().describe("Debate session ID"),provider:p.string().describe(`Provider ID to take this turn. Use "claude" to record Claude's own opinion as an independent turn (requires claude_comment).`),claude_comment:p.string().optional().describe(`Claude's opinion. When provider is "claude", this becomes the turn content. Otherwise, injected before the provider responds.`),auto_specialist:p.boolean().optional().default(!1).describe("When true with provider 'claude', automatically select and record a specialist agent recommendation based on the debate topic.")}),df=p.object({debate_id:p.string().describe("Debate session ID to conclude"),summary:p.string().optional().describe("Claude's final summary of the debate"),quality_scores:p.array(p.object({provider:p.string(),score:p.number().min(0).max(1),feedback:p.string()})).optional().describe("Quality assessment of each provider's contribution")}),uf=p.object({document:p.string().describe("Document content to review"),providers:p.array(p.string()).min(1).describe("Provider IDs to review the document"),review_prompt:p.string().optional().describe("Custom review instructions (default: agree/disagree with feedback)"),debate_id:p.string().optional().describe("Link reviews to an existing debate session's workspace document")}),lf=p.object({task_id:p.string().describe("Task ID to review changes for")}),pf=p.object({task_id:p.string().describe("Task ID whose changes to accept"),message:p.string().optional().describe("Commit message for the merge")}),ff=p.object({task_id:p.string().describe("Task ID whose changes to reject"),reason:p.string().optional().describe("Reason for rejection")}),o_=p.object({agrees:p.union([p.boolean(),p.enum(["true","false"])]).transform(t=>typeof t=="boolean"?t:t==="true"),feedback:p.string().optional().default(""),suggestions:p.string().optional()}),X5=p.object({assignment_id:p.string().min(1).optional(),participant:p.string().min(1).optional(),assignee:p.string().min(1).optional(),question:p.string().min(1),lens:p.string().min(1).optional(),scope:p.string().min(1).optional(),deliverable:p.string().min(1).optional(),priority:p.enum(["low","medium","high"]).optional(),expected_artifact:p.string().min(1).optional(),rationale:p.string().min(1).optional()}).strict(),mf=p.object({domain:J5.describe("Target domain for host-led research consensus. Direct consensus starts from host-prepared initial_aggregation items."),objective:p.string().min(1).describe("What the research consensus flow should investigate and resolve."),workspace_base_dir:p.string().optional().describe("Optional absolute target workspace root. Use when the host workspace root is unavailable, the target project differs from the MCP server runtime directory, or the target is a new folder without project markers."),participants:p.array(p.string().min(1)).min(1).describe("Provider or host participant IDs for the later debate phase. Research bundle pseudo-participants are rejected."),research_assignments:p.array(X5).optional().describe("Optional host-owned research assignments for providers or host researchers."),provider_order:p.array(p.string().min(1)).optional().describe("Optional debate provider order. Defaults to participants order when omitted."),max_rounds:p.number().int().positive().max(50).optional().describe("Maximum structured consensus rounds once debate wiring is enabled."),background:p.boolean().optional().default(!0).describe("When true, consensus may continue in the background after research preprocessing."),output:p.object({write_aggregation_document:p.boolean().optional().default(!1).describe("Write the engine-generated aggregation document under docs/agestra."),write_result_document:p.boolean().optional().default(!1).describe("Return the docs/agestra target path for the team-lead-authored final decision document. The engine does not write this document.")}).strict().optional().describe("Requested human-readable research outputs.")}).strict(),aC=["mode","domain","auto_inject_specialists","exclude_participants","individual_review_prompt","research_topology","seed_provider","seed_scope","reviewer_participants","tool_broker_policy","seed_document","research_plan","assignment_table","research_plan_approved","artifact_only_diagnostic","source_documents"],eY=p.object({id:p.string().min(1).optional().describe("Optional source-local id. The engine still allocates stable ITEM-* ids."),proposer:p.string().min(1).describe("Participant, provider, host artifact, or preprocessor that proposed this item."),title:p.string().min(1),plainSummary:p.string().min(1),originalClaim:p.string().min(1),sourceRefs:p.array(p.string().min(1)).optional().default([]),status:p.enum(["accepted","excluded","unresolved","needs_opinion"]).optional().default("unresolved").describe("Initial ledger status. Missing means unresolved."),preAgreedBy:p.array(p.string().min(1)).optional().describe("Participants whose agreement was already established by preprocessing.")}).strict(),tY=p.object({summary:p.string().optional(),sourceRefs:p.array(p.string().min(1)).optional().default([]),items:p.array(eY).min(1)}).strict(),rY=p.object({participant_id:p.string().min(1),transport:p.literal("host-turn"),agent_name:p.string().min(1).describe("Host-native agent name to show in pending_host_turns, e.g. agestra-debate.")}).strict(),sY=p.object({taskLabel:p.string().min(1).optional().describe("Human-readable label only. The engine never branches on it."),sourceWorkflow:p.string().min(1).optional().describe("Human-readable origin label for the caller/preprocessor.")}).strict(),hf=p.object({topic:p.string().min(1).describe("Short name for the consensus session."),scope:p.string().optional().describe("Consensus scope. The engine stores and forwards it but does not interpret it."),metadata:sY.optional().describe("Optional labels for humans and artifacts. These values never affect engine behavior."),workspace_base_dir:p.string().optional().describe("Optional absolute target workspace root. Use when the host workspace root is unavailable, the target project differs from the MCP server runtime directory, or the target is a new folder without project markers."),leader:p.string().optional().describe("Participant ID authorized to approve the final synthesis. Defaults to the session-context leader or the first participant."),participants:p.array(p.string().min(1)).min(1).describe("Exact participant IDs for consensus rounds. The engine never injects participants."),participant_routes:p.array(rY).optional().default([]).describe("Explicit host-native participant routes. Only these routes create pending host turns."),initial_aggregation:tY.describe("Leader/research/debate preprocessed JSON items that seed the consensus ledger."),max_rounds:p.number().int().positive().max(50).optional().describe("Maximum number of rounds. Default: STRUCTURED_DEBATE_DEFAULT_MAX_ROUNDS."),participant_timeout_ms:p.number().int().positive().max(36e5).optional().describe("Optional per-participant inactivity timeout in milliseconds for consensus provider turns. Default is 300000 (5 minutes); use 600000 (10 minutes) for large or deep reviews."),background:p.boolean().optional().default(!0).describe("When true (default), start in the background and return a tracking receipt. When false, wait for the final engine result in this tool call."),await_completion_ms:p.number().int().nonnegative().max(3e5).optional().describe("When background is true, wait up to this many milliseconds for a quick completion before returning the tracking receipt."),files:p.array(p.string()).optional().describe("Optional list of files to pass to participants as context."),locale:p.enum(["ko","zh","ja","en"]).optional().describe("Override config locale for system text in this consensus session only.")}).strict(),gf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start"),leader_note:p.string().optional().describe("Optional note appended to the synthesis footer under 'Leader approval notes'.")}),yf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start"),additional_rounds:p.union([p.literal(3),p.literal(5),p.literal(10)]).describe("How many extra rounds to run beyond the current round count. Choose one of 3, 5, or 10."),background:p.boolean().optional().default(!0).describe("When true (default), continue in the background and return a tracking receipt. When false, wait for the additional rounds to finish in this tool call."),await_completion_ms:p.number().int().nonnegative().max(3e5).optional().describe("When background is true, wait up to this many milliseconds for quick completion before returning the tracking receipt.")}),vf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start"),reason:p.string().optional().describe("Optional rejection reason, captured in the debate transcript footer."),spawn_issue:p.boolean().optional().default(!1).describe("If true, also write an issue_{sessionIdShort}_{YYYYMMDD}_{seq}.md under individual/ listing all non-accepted proposals (rejected/withdrawn/open/inconclusive/superseded). A rejected synthesis is always written.")}),bf=p.object({session_id:ya.describe("Consensus session ID returned from agent_consensus_start."),participant_id:p.string().min(1).describe("Explicit host-native participant id the host fulfilled. Must match an entry under `pending_host_turns` in `agent_debate_status`."),content:p.string().min(1).describe("Verbatim content produced by the host route. Consensus-round handoffs must return the same JSON consensus contract used for provider turns."),round:p.number().int().nonnegative().optional().describe("Round number from the matching pending host-turn entry. When supplied the engine rejects mismatched submissions to catch stale responses.")});import{existsSync as uY,readFileSync as lY}from"fs";import{readFileSync as nY,existsSync as oY}from"fs";var iY={ollama:{executionPolicy:"workspace-write",config:{host:Ca,defaultModel:"auto"}},"gemini-cli":{executionPolicy:Ut("gemini-cli"),config:{timeout:12e4}},"codex-cli":{executionPolicy:Ut("codex-cli"),config:{timeout:12e4}},"claude-cli":{executionPolicy:Ut("claude-cli"),config:{timeout:12e4}}};async function Rn(t){let e=t?.workspaceBaseDir,r=[{id:"ollama",type:"ollama",provider:new oo({id:"ollama",host:Ca})},{id:"gemini",type:"gemini-cli",provider:new io({id:"gemini",workspaceBaseDir:e})},{id:"codex",type:"codex-cli",provider:new ao({id:"codex",workspaceBaseDir:e})},{id:"claude-cli",type:"claude-cli",provider:new co({id:"claude-cli",workspaceBaseDir:e})}],s=[],n=[];await Promise.all(r.map(async i=>{try{await i.provider.initialize()}catch{}let a=i.provider.isAvailable();s.push({id:i.id,type:i.type,available:a}),a&&n.push(i.provider)}));let o=["ollama","gemini","codex","claude-cli"];return s.sort((i,a)=>o.indexOf(i.id)-o.indexOf(a.id)),n.sort((i,a)=>o.indexOf(i.id)-o.indexOf(a.id)),{results:s,providers:n}}function aY(t){if(!oY(t))return null;try{return JSON.parse(nY(t,"utf-8"))}catch{return null}}function cY(t){return t==="auto"?"auto":"default-only"}function cC(t,e,r){let s=aY(t),n=new Set(r.enabledIds??[]),o=new Map((s?.providers??[]).map(l=>[l.id,l])),i=e.map(l=>{let f=iY[l.type]||{executionPolicy:Ut(l.type),config:{}},h=o.get(l.id);return o.delete(l.id),{id:l.id,type:l.type,enabled:l.available&&n.has(l.id),executionPolicy:h?.executionPolicy??f.executionPolicy,config:{...h?.config??f.config}}});for(let l of o.values())i.push({...l,enabled:n.has(l.id)?l.enabled:!1});if(i.length===0)throw new Error("No providers available to write into providers.config.json");let a={selectionPolicy:cY(r.selectionPolicy??s?.selectionPolicy),workspaceTrustPolicy:dY(r.workspaceTrustPolicy??s?.workspaceTrustPolicy),...r.locale!==void 0?{locale:r.locale}:s?.locale!==void 0?{locale:s.locale}:{},providers:i},c=s?JSON.stringify(s):null,d=JSON.stringify(a),u=c===null?"created":c===d?"unchanged":"updated";return!r.dryRun&&u!=="unchanged"&&(uS(t),Se(t,a)),{action:u,path:t,config:a}}function dY(t){return t==="auto-exact"||t==="never"?t:"ask"}function dC(t,e){i_(t,e)}function i_(t,e,r){let s=[];for(let n of t)e.has(n.id)||r?.excludeIds?.has(n.id)||r?.excludeTypes?.has(n.type)||(e.register(n),s.push(n));return s}function ps(t,e){return t.t(e?"common.yes":"common.no")}function Je(t,e,r){let s=t.t(e);return s===e?r:`${s} (${r})`}var _f="agent_consensus_start",ba="agent_debate_approve",_a="agent_debate_continue",wa="agent_debate_reject",Ld="agent_consensus_submit_turn";function zd(t){return t.moderatorEngine?t.structuredSessionRegistry?null:{content:[{type:"text",text:t.i18n.t("consensus.error.registryMissing")}],isError:!0}:{content:[{type:"text",text:t.i18n.t("consensus.error.engineMissing")}],isError:!0}}async function uC(t,e){let r=zd(e);if(r)return r;let s=pY(t);if(s.length>0)return dt(e.i18n.t("consensus.error.unsupportedFields",{fields:s.join(", ")}));let n;try{n=hf.parse(t)}catch(c){return dt(e.i18n.t("consensus.error.invalidArguments",{message:A(c)}))}let o=fY(n.participants);if(o!==void 0)return dt(e.i18n.t("consensus.error.duplicateParticipant",{participantId:o}));let i=n.participants.find(mY);if(i!==void 0)return dt(e.i18n.t("consensus.error.legacySpecialist",{participantId:i}));let a=hY(n.leader,n.participants,e);if(!a)return dt(e.i18n.t("consensus.error.leaderMissing"));try{let c=vC(n.participants,e),d=await ls({providerIds:n.participants,deps:e,workspaceBaseDir:e.workspaceBaseDir});if(d.blockResult)return d.blockResult;let u=d.guard.readiness.length>0?d.guard.readiness:await gY(n.participants,e,c),l=bC(),f=tk({requestedProviderIds:n.participants,enabledProviderIds:l.enabledProviderIds.length>0?l.enabledProviderIds:n.participants,providers:c,readiness:u,...e.providerPolicies!==void 0?{providerPolicies:e.providerPolicies}:{},leader:a,...e.sessionContext?.executionMode!==void 0?{executionMode:e.sessionContext.executionMode}:{},maxParallelWorkers:3,traceDataState:vY(e)}),h=yY(l,n.locale),m=await e.moderatorEngine.startDebate({topic:n.topic,...n.scope!==void 0?{scope:n.scope}:{},...n.metadata!==void 0?{metadata:{...n.metadata.taskLabel!==void 0?{taskLabel:n.metadata.taskLabel}:{},...n.metadata.sourceWorkflow!==void 0?{sourceWorkflow:n.metadata.sourceWorkflow}:{}}}:{},leader:a,participants:n.participants,participantRoutes:n.participant_routes.map(y=>({participantId:y.participant_id,agentName:y.agent_name})),initialAggregation:{...n.initial_aggregation.summary!==void 0?{summary:n.initial_aggregation.summary}:{},sourceRefs:n.initial_aggregation.sourceRefs,items:n.initial_aggregation.items.map(y=>({...y.id!==void 0?{id:y.id}:{},proposer:y.proposer,title:y.title,plainSummary:y.plainSummary,originalClaim:y.originalClaim,sourceRefs:y.sourceRefs,status:y.status,...y.preAgreedBy!==void 0?{preAgreedBy:y.preAgreedBy}:{}}))},...n.max_rounds!==void 0?{maxRounds:n.max_rounds}:{},...n.participant_timeout_ms!==void 0?{participantTimeoutMs:n.participant_timeout_ms}:{},...n.locale!==void 0?{locale:n.locale}:{},...n.files!==void 0?{files:n.files}:{},readiness:u,routing:f,setupSnapshot:h,background:n.background??!0,...n.await_completion_ms!==void 0?{awaitCompletionMs:n.await_completion_ms}:{}}),g=[m.terminalReport];return g.push(bY(f,e.i18n)),u.length>0&&g.push(_Y(u,e.i18n)),g.push(hC(m.sessionId,m.snapshot.status,e.i18n)),m.snapshot.status==="escalated"?g.push(yC(m.sessionId,e.i18n)):m.snapshot.status==="ready-for-approval"?g.push(gC(m.sessionId,e.i18n)):m.snapshot.status==="error"&&g.push(e.i18n.t("consensus.error.engineReported",{message:m.errorMessage??e.i18n.t("consensus.error.noMessage")})),{content:[{type:"text",text:g.filter(Boolean).join(`
362
362
 
363
363
  `)}],...m.snapshot.status==="error"?{isError:!0}:{}}}catch(c){return dt(e.i18n.t("consensus.error.startFailed",{message:A(c)}))}}async function lC(t,e){let r=zd(e);if(r)return r;let s;try{s=gf.parse(t)}catch(n){return dt(e.i18n.t("consensus.error.invalidArguments",{message:A(n)}))}try{let n=await e.moderatorEngine.approve({sessionId:s.session_id,...s.leader_note!==void 0?{leaderNote:s.leader_note}:{}}),o=[n.terminalReport];return o.push(`${e.i18n.t("consensus.label.synthesisDocument")}: ${n.synthesisPath}`),o.push(`${e.i18n.t("consensus.label.status")}: ${Je(e.i18n,`report.status.${n.snapshot.status}`,n.snapshot.status)} (session ${s.session_id})`),n.idempotentReplay&&o.push(e.i18n.t("consensus.result.approvedReplay")),{content:[{type:"text",text:o.join(`
364
364
 
@@ -372,8 +372,8 @@ ${g}`),{content:[{type:"text",text:y}]}}finally{r_(l,f)}}async function W5(t,e,r
372
372
  `)}function _Y(t,e){let r=[`## ${e.t("provider.readiness.section")}`];for(let s of t){let n=[s.version?`version ${s.version}`:void 0,s.detectedPath,s.sourceState?.mismatches?.length?`mismatch: ${s.sourceState.mismatches.join("; ")}`:void 0,s.diagnostic?.category].filter(Boolean);r.push(`- ${s.providerId}: ${Je(e,`provider.readiness.status.${s.status}`,s.status)}${n.length>0?` (${n.join(", ")})`:""}`)}return r.join(`
373
373
  `)}function wY(t,e){let r=e==="ready-for-approval"?"report.status.readyForApproval":e==="leader-timeout"?"report.status.leaderTimeout":e==="partial-completed"?"report.status.partialCompleted":e==="needs-human-review"?"report.status.needsHumanReview":`report.status.${e}`;return Je(t,r,e)}import{randomUUID as zY}from"crypto";import{extname as FY,isAbsolute as qY,resolve as Fd}from"path";import{existsSync as BY}from"fs";import{existsSync as Sf,mkdirSync as xY,readFileSync as kf}from"fs";import{join as kC}from"path";function a_(t){let e=[],r=0,s=-1,n=!1,o=!1;for(let i=0;i<t.length;i+=1){let a=t[i];if(n){o?o=!1:a==="\\"?o=!0:a==='"'&&(n=!1);continue}if(a==='"'){n=!0;continue}if(a==="{"){r===0&&(s=i),r+=1;continue}a==="}"&&r>0&&(r-=1,r===0&&s>=0&&(e.push(t.slice(s,i+1)),s=-1))}return e}function _C(t){try{return JSON.parse(t)}catch{}let e=a_(t);for(let r=e.length-1;r>=0;r-=1)try{return JSON.parse(e[r])}catch{}return null}function wf(t,e="finding-validator"){return{provider:e,phase:"finding_validation",validatedFindings:t.items.map(r=>SY(r))}}function wC(t,e){return{schemaVersion:1,provider:t.provider,phase:t.phase,generatedAt:e,validated_findings:t.validatedFindings.map(r=>({source_item_id:r.sourceItemId,status:r.status,claim:r.claim,evidence:r.evidence.slice(),falsifiers_checked:r.falsifiersChecked.slice(),remaining_uncertainty:r.remainingUncertainty.slice(),...r.recommendedAction!==void 0?{recommended_action:r.recommendedAction}:{}}))}}function SC(t,e){let r={confirmed:0,dismissed:0,needsHumanReview:0};for(let s of t.validatedFindings)s.status==="confirmed"&&(r.confirmed+=1),s.status==="dismissed"&&(r.dismissed+=1),s.status==="needs_human_review"&&(r.needsHumanReview+=1);return{provider:t.provider,phase:t.phase,artifactPath:e.artifactPath,updatedAt:e.updatedAt,counts:r}}function SY(t){return{sourceItemId:t.id,status:kY(t),claim:t.originalClaim||t.plainSummary||t.title,evidence:RY(t),falsifiersChecked:$Y(t),remainingUncertainty:PY(t),recommendedAction:IY(t)}}function kY(t){return t.status==="accepted"?"confirmed":t.status==="excluded"||t.status==="superseded"?"dismissed":"needs_human_review"}function RY(t){let e=[...t.sourceRefs,...t.comments.filter(r=>r.stance==="agree"||r.stance==="revise").slice(-3).map(r=>`${r.provider} round ${r.round}: ${r.comment}`)];return e.length>0?e:["No explicit evidence recorded in the ledger."]}function $Y(t){let e=t.comments.filter(r=>r.stance==="disagree"||r.stance==="opinion"||r.stance==="revise").slice(-5).map(r=>`${r.provider} ${r.stance}: ${r.comment}`);return e.length>0?e:["No dissenting or falsifying comment recorded."]}function PY(t){if(t.status==="accepted"||t.status==="excluded")return[];let e=t.currentStances.filter(r=>r.stance==="not_assigned"||r.stance==="no_response"||r.stance==="opinion"||r.stance==="revise"||r.stance==="disagree").map(r=>`${r.provider}: ${r.stance}`);return e.length>0?e:[`Item remains ${t.status}.`]}function IY(t){return t.status==="accepted"?t.conclusion??"Carry this confirmed finding into synthesis.":t.status==="excluded"?t.conclusion??"Do not include this dismissed finding in the final recommendation.":t.status==="superseded"?t.conclusion??"Use the superseding item instead of this finding.":"Resolve the remaining uncertainty before treating this as confirmed."}var fs="run_report.json",Br="gate_ledger.json",br="evidence_packet.json",_t=class{artifactsRoot;constructor(e){this.artifactsRoot=kC(e,Uo)}sessionDir(e){return ws(e,"",this.artifactsRoot)}pathFor(e,r){return kC(this.sessionDir(e),r)}writeArtifact(e,r,s){let n=this.sessionDir(e);xY(n,{recursive:!0});let o=this.pathFor(e,r);return Se(o,s),{name:r,path:o}}writeIndex(e){let r=this.readIndex(e.sessionId);return this.writeArtifact(e.sessionId,"artifact_index.json",{schemaVersion:1,sessionId:e.sessionId,...e.domain!==void 0?{domain:e.domain}:{},updatedAt:e.updatedAt,artifacts:DY([...r?.artifacts??[],...e.artifacts])})}readIndex(e){let r=this.pathFor(e,"artifact_index.json");if(!Sf(r))return null;try{let s=JSON.parse(kf(r,"utf-8"));if(s.schemaVersion===1&&s.sessionId===e&&Array.isArray(s.artifacts))return s}catch{return null}return null}writeResearchPlanningArtifacts(e){let r=tf(e.topology),s=RC(e.researchPlan),n=this.writeArtifact(e.sessionId,"research_plan.json",{schemaVersion:1,sessionId:e.sessionId,domain:e.domain,topic:e.topic,topology:r,approved:e.approved,approvedAt:e.approvedAt,plan:s}),o=this.writeArtifact(e.sessionId,"assignment_table.json",{schemaVersion:1,sessionId:e.sessionId,domain:e.domain,topic:e.topic,topology:r,approved:e.approved,approvedAt:e.approvedAt,assignments:e.assignmentTable??[]});return[this.writeIndex({sessionId:e.sessionId,domain:e.domain,updatedAt:e.approvedAt,artifacts:[{...n,note:"approved research plan"},{...o,note:"approved research assignment table"}]}),n,o]}readResearchPlanArtifact(e){let r=this.pathFor(e,"research_plan.json");if(!Sf(r))return null;try{let s=JSON.parse(kf(r,"utf-8")),n=ga(s.topology);if(s.schemaVersion===1&&s.sessionId===e&&typeof s.domain=="string"&&typeof s.topic=="string"&&n!==void 0&&typeof s.approved=="boolean"&&typeof s.approvedAt=="string")return{schemaVersion:1,sessionId:s.sessionId,domain:s.domain,topic:s.topic,topology:n,approved:s.approved,approvedAt:s.approvedAt,plan:RC(s.plan)}}catch{return null}return null}readResearchAssignmentTableArtifact(e){let r=this.pathFor(e,"assignment_table.json");if(!Sf(r))return null;try{let s=JSON.parse(kf(r,"utf-8")),n=ga(s.topology);if(s.schemaVersion===1&&s.sessionId===e&&typeof s.domain=="string"&&typeof s.topic=="string"&&n!==void 0&&typeof s.approved=="boolean"&&typeof s.approvedAt=="string")return{schemaVersion:1,sessionId:s.sessionId,domain:s.domain,topic:s.topic,topology:n,approved:s.approved,approvedAt:s.approvedAt,assignments:s.assignments??[]}}catch{return null}return null}writeRunReportArtifact(e){let r={...e,artifacts:{...e.artifacts,runReport:this.pathFor(e.sessionId,fs),gateLedger:this.pathFor(e.sessionId,Br),evidencePacket:this.pathFor(e.sessionId,br),artifactIndex:this.pathFor(e.sessionId,"artifact_index.json")}},s=this.writeArtifact(e.sessionId,fs,r);return this.writeIndex({sessionId:e.sessionId,domain:e.domain,updatedAt:e.updatedAt,artifacts:[{...s,note:"machine-readable run report"}]}),s}writeGateLedgerArtifact(e){let r=this.readGateLedger(e.sessionId),s={schemaVersion:1,sessionId:e.sessionId,domain:e.domain,topic:e.topic,updatedAt:e.updatedAt,events:CY([...r?.events??[],...e.events])},n=this.writeArtifact(e.sessionId,Br,s);return this.writeIndex({sessionId:e.sessionId,domain:e.domain,updatedAt:e.updatedAt,artifacts:[{...n,note:"machine-readable gate decision ledger"}]}),n}writeEvidencePacketArtifact(e){let r=this.writeArtifact(e.sessionId,br,e);return this.writeIndex({sessionId:e.sessionId,domain:e.domain,updatedAt:e.updatedAt,artifacts:[{...r,note:"machine-readable evidence packet"}]}),r}writeConsensusLedgerArtifacts(e){let r=this.writeArtifact(e.sessionId,"individual_results.json",EY(e)),s=this.writeArtifact(e.sessionId,br,AY(e)),n=this.writeArtifact(e.sessionId,"dispute_ledger.json",TY(e)),o=this.writeArtifact(e.sessionId,"validated_findings.json",wC(wf(e),e.updatedAt)),i=this.writeArtifact(e.sessionId,"consensus_ledger.json",e);return[this.writeIndex({sessionId:e.sessionId,updatedAt:e.updatedAt,artifacts:[{name:"consensus_ledger.json",path:e.documents.ledger,note:"canonical debate consensus ledger"},{...r,note:"normalized individual result summary"},{...s,note:"machine-readable evidence packet"},{...n,note:"machine-readable unresolved and dissenting items"},{...o,note:"deterministic validation summary derived from the consensus ledger"},{...i,note:"artifact workspace mirror of the consensus ledger"}]}),r,s,n,o,i]}readGateLedger(e){let r=this.pathFor(e,Br);if(!Sf(r))return null;try{let s=JSON.parse(kf(r,"utf-8"));if(s.schemaVersion===1&&s.sessionId===e&&Array.isArray(s.events))return{...s,events:s.events.map(OY)}}catch{return null}return null}};function EY(t){return{schemaVersion:1,sessionId:t.sessionId,topic:t.topic,updatedAt:t.updatedAt,documents:{...t.documents.inputs},participants:t.participants.map(e=>({provider:e,...t.documents.inputs[e]!==void 0?{documentPath:t.documents.inputs[e]}:{},proposedItems:t.items.filter(r=>r.proposer===e).map(r=>({id:r.id,title:r.title,status:r.status,sourceRefs:r.sourceRefs.slice()}))}))}}function AY(t){let e=MY(t),r=new Map(e.map(n=>[n.ref,n.id])),s=void 0;return{schemaVersion:1,sessionId:t.sessionId,...t.metadata!==void 0?{metadata:{...t.metadata}}:{},topic:t.topic,updatedAt:t.updatedAt,documents:{inputs:{...t.documents.inputs},ledger:t.documents.ledger,debate:t.documents.debate,...t.documents.synthesis!==void 0?{synthesis:t.documents.synthesis}:{}},...t.runRef!==void 0?{runRef:t.runRef}:{},...t.routing!==void 0?{routing:t.routing}:{},...t.promptRefs!==void 0?{promptRefs:t.promptRefs.slice()}:{},...t.readiness!==void 0?{readiness:t.readiness.slice()}:{},...t.diagnostics!==void 0?{diagnostics:t.diagnostics.slice()}:{},items:t.items.map(n=>({id:n.id,title:n.title,status:n.status,originalClaim:n.originalClaim,sourceRefs:n.sourceRefs.slice(),commentCount:n.comments.length})),claims:t.items.map(n=>{let o=n.sourceRefs.map(a=>r.get(a)).filter(a=>a!==void 0),i=$C(n.status);return{id:`CLAIM-${n.id}`,itemId:n.id,title:n.title,status:n.status,statement:n.originalClaim,evidenceIds:o,validationStatus:i,...i==="needs_human_review"?{residualRisk:"Claim has not reached a validated terminal state."}:{}}}),evidence:e,validationSummary:NY(t),...s!==void 0?{researchSynthesis:s}:{}}}function TY(t){return{schemaVersion:1,sessionId:t.sessionId,...t.metadata!==void 0?{metadata:{...t.metadata}}:{},topic:t.topic,updatedAt:t.updatedAt,unresolvedItems:t.items.filter(e=>e.status!=="accepted").map(e=>({id:e.id,title:e.title,status:e.status,displayStatus:e.displayStatus,currentStances:e.currentStances.map(r=>({...r})),comments:e.comments.map(r=>({...r}))}))}}function DY(t){let e=new Set,r=[];for(let s of t){let n=`${s.name}:${s.path}`;e.has(n)||(e.add(n),r.push(s))}return r}function CY(t){let e=new Set,r=[];for(let s of t){let n=s.id;e.has(n)||(e.add(n),r.push(s))}return r}function RC(t){if(t===null||typeof t!="object"||Array.isArray(t))return t;let e=t,r=ga(e.topology);return r!==void 0?{...e,topology:r}:t}function OY(t){let e=ga(t.details?.topology);if(e===void 0)return t;let r={...t.details??{},topology:e};return{...t,...t.kind==="research_topology_selected"?{reason:`${e} Research selected.`}:{},details:r}}function MY(t){let e=new Map;for(let r of t.items)for(let s of r.sourceRefs){let n=e.get(s);n?n.sourceItemIds.add(r.id):e.set(s,{ref:s,sourceItemIds:new Set([r.id])})}return Array.from(e.values()).map((r,s)=>({id:`EV-${String(s+1).padStart(2,"0")}`,kind:jY(r.ref),ref:r.ref,sourceItemIds:Array.from(r.sourceItemIds)}))}function jY(t){return/^https?:\/\//i.test(t)?"web":t.includes(".agestra/workspace/individual/")?"provider":t.includes(".md")||t.includes(".json")?"document":/^[A-Za-z]:[\\/]/.test(t)||t.includes("/")||t.includes("\\")?"file":t.includes(":")?"tool":"other"}function $C(t){return t==="accepted"?"validated":t==="excluded"?"dismissed":t==="superseded"?"superseded":"needs_human_review"}function NY(t){let e=0,r=0,s=0;for(let n of t.items){let o=$C(n.status);o==="validated"?e+=1:o==="dismissed"||o==="superseded"?r+=1:s+=1}return{claimsTotal:t.items.length,validated:e,dismissed:r,needsHumanReview:s,status:t.findingValidation?"partial":"not_reported",...t.findingValidation!==void 0?{findingValidationArtifactPath:t.findingValidation.artifactPath}:{}}}function Rf(t,e){if(LY(t.observableEventStore))return t.observableEventStore;try{return new ar(e)}catch{return null}}function Jt(t,e){if(t)try{t.appendBestEffort(e)}catch{}}function IC(t,e){if(t?.createLocatorIndex)try{t.createLocatorIndex(e)}catch{}}function Cs(t,e=512){let r=t.replace(/\s+/gu," ").trim();if(Buffer.byteLength(r,"utf-8")<=e)return r;let s=" [truncated]",n=Buffer.byteLength(s,"utf-8");return e<=n?PC(r,e):`${PC(r,e-n)}${s}`}function LY(t){return typeof t?.appendBestEffort=="function"}function PC(t,e){let r=0,s="";for(let n of t){let o=Buffer.byteLength(n,"utf-8");if(r+o>e)break;s+=n,r+=o}return s}var Pf="agent_research_record",jo="host-seeded-research";async function xC(t,e){let r;try{r=of.parse(t)}catch(v){return $f(`Invalid arguments: ${A(v)}`)}let s=e.workspaceBaseDir??process.cwd(),n=r.session_id??`research_${zY().replace(/-/g,"").slice(0,16)}`,o=new Date().toISOString(),i=e.structuredSessionRegistry.getWorkspaceDir(),a=new _t(i),c=or(s,n),d=Rf(e,s);IC(d,{locatorType:"session",locatorId:n,runId:c.runId,at:o}),Jt(d,{at:o,runId:c.runId,sessionId:n,workflow:"research",domain:r.research_target_domain,task:Cs(r.topic),phase:jo,actor:"host",kind:"run.started",severity:"info",status:"running",message:"Host evidence research artifact recording started.",visibility:"user"});let u=r.markdown_report_path!==void 0?YY(s,i,r.markdown_report_path):void 0;if(u instanceof Error)return Jt(d,{at:new Date().toISOString(),runId:c.runId,sessionId:n,workflow:"research",domain:r.research_target_domain,task:Cs(r.topic),phase:jo,actor:"host",kind:"run.failed",severity:"error",status:"failed",message:"Host evidence research artifact recording failed.",visibility:"user"}),$f(u.message);let l=r.available_provider_ids??QY(e),f=r.non_invocation_reason??"Host evidence recorded for provider-backed research review.",h=a.pathFor(n,br),m=a.pathFor(n,fs),g=a.pathFor(n,Br),y=a.pathFor(n,"artifact_index.json");try{a.writeResearchPlanningArtifacts({sessionId:n,domain:"research",topic:r.topic,topology:r.topology,researchPlan:r.research_plan??{domain:r.research_target_domain,topology:r.topology,topic:r.topic,items:[]},assignmentTable:r.assignment_table??[],approved:!0,approvedAt:o}),a.writeGateLedgerArtifact({sessionId:n,domain:"research",topic:r.topic,updatedAt:o,events:UY({at:o,topology:r.topology,availableProviderIds:l,nonInvocationReason:f})}),a.writeEvidencePacketArtifact(VY({sessionId:n,topic:r.topic,updatedAt:o,claims:r.claims,evidencePacketPath:h,reportPath:u,validationNotes:r.validation_notes})),a.writeRunReportArtifact(GY({sessionId:n,topic:r.topic,updatedAt:o,status:r.status,runRef:c,availableProviderIds:l,nonInvocationReason:f,runReportPath:m,gateLedgerPath:g,evidencePath:h,indexPath:y,reportPath:u,validationNotes:r.validation_notes}));let v=JY({sessionId:n,topic:r.topic,targetDomain:r.research_target_domain,status:r.status,now:o,runRef:c,runReportPath:m,gateLedgerPath:g,evidencePath:h,indexPath:y,reportPath:u}),_=ir(s,v);if(!_.ok)return Jt(d,{at:new Date().toISOString(),runId:c.runId,sessionId:n,workflow:"research",domain:r.research_target_domain,task:Cs(r.topic),phase:jo,actor:"host",kind:"run.failed",severity:"error",status:"failed",message:"Host evidence research artifact recording failed.",visibility:"user"}),$f(`Failed to write research run manifest: ${_.error??"unknown error"}`);u!==void 0&&r.markdown_report_body!==void 0&&KY(u,r.markdown_report_body,{runReportPath:m,gateLedgerPath:g,evidencePath:h});let b=new Date().toISOString();for(let S of[{path:m,message:"Host evidence research run report written."},{path:g,message:"Host evidence research gate ledger written."},{path:h,message:"Host evidence research evidence packet written."}])Jt(d,{at:b,runId:c.runId,sessionId:n,workflow:"research",domain:r.research_target_domain,task:Cs(r.topic),phase:jo,actor:"host",kind:"artifact.written",severity:"info",status:"ok",message:S.message,refs:{artifactPath:S.path,manifestPath:c.manifestPath},visibility:"user"});Jt(d,{at:b,runId:c.runId,sessionId:n,workflow:"research",domain:r.research_target_domain,task:Cs(r.topic),phase:jo,actor:"host",kind:r.status==="failed"?"run.failed":"run.completed",severity:r.status==="failed"?"error":"info",status:r.status==="failed"?"failed":"ok",message:r.status==="failed"?"Host evidence research recorded a failed run.":"Host evidence research artifact recording completed.",visibility:"user"})}catch(v){return Jt(d,{at:new Date().toISOString(),runId:c.runId,sessionId:n,workflow:"research",domain:r.research_target_domain,task:Cs(r.topic),phase:jo,actor:"host",kind:"run.failed",severity:"error",status:"failed",message:"Host evidence research artifact recording failed.",visibility:"user"}),$f(`Failed to record research artifacts: ${A(v)}`)}return{content:[{type:"text",text:["Host evidence research artifacts recorded.",`Session ID: ${n}`,"","## Run Evidence",`- Run report: ${m}`,`- Gate ledger: ${g}`,`- Evidence packet: ${h}`,`- Artifact index: ${y}`,...u!==void 0?[`- Markdown report: ${u}`]:[],`- Observable events: ${Zt(c.runId)}`,`- Observable hint: call \`run_observable_events\` with \`session_id=${n}\``].join(`
374
374
  `)}]}}function UY(t){return[{id:"research-topology:selected",at:t.at,kind:"research_topology_selected",actor:"host",status:"approved",reason:`${t.topology} Research selected.`,details:{topology:t.topology}},{id:"provider-fanout:not-invoked",at:t.at,kind:"provider_fanout",actor:"system",status:t.availableProviderIds.length>0?"available_but_not_invoked":"not_requested",reason:t.nonInvocationReason,evidence:t.availableProviderIds.map(e=>`provider available: ${e}`),details:{availableProviderIds:t.availableProviderIds.slice()}}]}function VY(t){let e=t.claims.map((i,a)=>i.id??`HOST-${String(a+1).padStart(2,"0")}`),r=HY(t.claims,e),s=new Map(r.map(i=>[i.ref,i.id])),n=t.claims.map((i,a)=>{let c=e[a]??`HOST-${String(a+1).padStart(2,"0")}`,d=i.status;return{id:i.id??`CLAIM-HOST-${String(a+1).padStart(2,"0")}`,itemId:c,title:i.title,status:d,statement:i.statement,evidenceIds:i.evidence_refs.map(u=>s.get(u)).filter(u=>u!==void 0),validationStatus:d,...i.residual_risk!==void 0?{residualRisk:i.residual_risk}:d==="needs_human_review"?{residualRisk:"Host-seeded claim needs human review or additional validation."}:{}}}),o=ZY(n);return{schemaVersion:1,sessionId:t.sessionId,domain:"research",topic:t.topic,updatedAt:t.updatedAt,documents:{inputs:{},ledger:t.evidencePacketPath,debate:t.reportPath??t.evidencePacketPath},diagnostics:t.validationNotes.map(i=>({category:"unknown",summary:i,firstBadEventId:`host_note_${XY(i)}`,confidence:"low",evidence:[i],downstreamEffects:[]})),items:n.map(i=>({id:i.itemId,title:i.title,status:i.status,originalClaim:i.statement,sourceRefs:r.filter(a=>i.evidenceIds.includes(a.id)).map(a=>a.ref),commentCount:0})),claims:n,evidence:r,validationSummary:o}}function HY(t,e){return Array.from(new Set(t.flatMap(s=>s.evidence_refs))).map((s,n)=>({id:`EV-HOST-${String(n+1).padStart(2,"0")}`,kind:WY(s),ref:s,sourceItemIds:t.map((o,i)=>o.evidence_refs.includes(s)?e[i]:void 0).filter(o=>o!==void 0)}))}function WY(t){return/^https?:\/\//i.test(t)?"web":t.includes(".md")||t.includes(".json")?"document":/^[A-Za-z]:[\\/]/.test(t)||t.includes("/")||t.includes("\\")?"file":t.includes(":")?"tool":"other"}function ZY(t){let e=t.filter(n=>n.validationStatus==="validated").length,r=t.filter(n=>n.validationStatus==="dismissed").length,s=t.filter(n=>n.validationStatus==="needs_human_review").length;return{claimsTotal:t.length,validated:e,dismissed:r,needsHumanReview:s,status:t.length===0?"not_reported":"partial"}}function GY(t){return{schemaVersion:1,sessionId:t.sessionId,domain:"research",topic:t.topic,updatedAt:t.updatedAt,status:t.status,runRef:{runId:t.runRef.runId,manifestPath:t.runRef.manifestPath},providerFanout:{status:t.availableProviderIds.length>0?"available_but_not_invoked":"not_requested",started:!1,reason:t.nonInvocationReason,requestedProviders:[],selectedProviders:[],skippedProviders:t.availableProviderIds.map(e=>({providerId:e,reason:"available_but_not_invoked",evidence:["Host evidence recorded for provider-backed research review"]}))},artifacts:{runReport:t.runReportPath,gateLedger:t.gateLedgerPath,evidencePacket:t.evidencePath,artifactIndex:t.indexPath,...t.reportPath!==void 0?{markdownReport:t.reportPath}:{}},readiness:t.availableProviderIds.map(e=>({providerId:e,status:"available_but_not_invoked"})),...t.validationNotes.length>0?{diagnostics:t.validationNotes.slice()}:{}}}function JY(t){let e={schemaVersion:1,runId:t.runRef.runId,sessionId:t.sessionId,workflow:"research",domain:t.targetDomain,topic:t.topic,startedAt:t.now,updatedAt:t.now,status:t.status,artifacts:[{kind:"run-report",path:t.runReportPath},{kind:"gate-ledger",path:t.gateLedgerPath},{kind:"evidence-packet",path:t.evidencePath},{kind:"artifact-index",path:t.indexPath},...t.reportPath!==void 0?[{kind:"research-report",path:t.reportPath}]:[]],milestones:[]};return Zs(xr(e,{at:t.now,phase:jo,status:t.status,message:"Host evidence research artifacts recorded"}))}function KY(t,e,r){let s=e.includes("## \uC2E4\uD589 \uC99D\uAC70")?e:[e.trimEnd(),"","## \uC2E4\uD589 \uC99D\uAC70","",`- \uC2E4\uD589 \uBCF4\uACE0\uC11C: ${r.runReportPath}`,`- \uBD84\uAE30/\uC2B9\uC778 \uAE30\uB85D: ${r.gateLedgerPath}`,`- \uADFC\uAC70 \uD328\uD0B7: ${r.evidencePath}`,""].join(`
375
- `);ae(t,s)}function YY(t,e,r){let s=qY(r)?Fd(r):Fd(t,r);return FY(s).toLowerCase()!==".md"?new Error(`Research report path must be a Markdown .md file: ${r}`):[Fd(t,"docs","reports","research"),Fd(t,Ns),Fd(e)].some(o=>Fa(s,o))?BY(s)?new Error(`Research report path already exists; refusing to overwrite: ${r}`):s:new Error(`Research report path must stay under docs/reports/research or ${Ns}: ${r}`)}function QY(t){try{return typeof t.registry.getAll!="function"?[]:t.registry.getAll().filter(e=>{try{return e.isAvailable()}catch{return!1}}).map(e=>e.id)}catch{return[]}}function XY(t){let e=0;for(let r=0;r<t.length;r+=1)e=(e<<5)-e+t.charCodeAt(r)|0;return Math.abs(e).toString(16)}function $f(t){return{content:[{type:"text",text:t}],isError:!0}}var If="agent_research_consensus_start";async function EC(t,e){if(eQ(t,"source_documents"))return No(e.i18n.t("researchConsensus.error.noSourceDocuments"));let r;try{r=mf.parse(t)}catch(d){return No(e.i18n.t("consensus.error.invalidArguments",{message:A(d)}))}let s=r.participants.find(va);if(s!==void 0)return No(e.i18n.t("researchConsensus.error.researchPacketParticipant",{providerId:s}));let n=r.provider_order?.find(va);if(n!==void 0)return No(e.i18n.t("researchConsensus.error.researchPacketParticipant",{providerId:n}));let i=(r.research_assignments??[]).flatMap(d=>[d.participant,d.assignee].filter(u=>u!==void 0)).find(va);if(i!==void 0)return No(e.i18n.t("researchConsensus.error.researchPacketParticipant",{providerId:i}));if(!e.moderatorEngine||typeof e.moderatorEngine.startResearchConsensus!="function")return No(e.i18n.t("researchConsensus.error.engineMissing"));let a=Array.from(new Set([...r.participants,...r.provider_order??[],...(r.research_assignments??[]).flatMap(d=>[d.participant,d.assignee].filter(u=>u!==void 0))])),c=await ls({providerIds:a,deps:e,workspaceBaseDir:e.workspaceBaseDir});if(c.blockResult)return c.blockResult;try{let d=await e.moderatorEngine.startResearchConsensus({domain:r.domain,objective:r.objective,participants:r.participants,...r.research_assignments!==void 0?{researchAssignments:r.research_assignments.map(u=>({...u.assignment_id!==void 0?{assignmentId:u.assignment_id}:{},...u.participant!==void 0?{participant:u.participant}:{},...u.assignee!==void 0?{assignee:u.assignee}:{},question:u.question,...u.lens!==void 0?{lens:u.lens}:{},...u.scope!==void 0?{scope:u.scope}:{},...u.deliverable!==void 0?{deliverable:u.deliverable}:{},...u.priority!==void 0?{priority:u.priority}:{},...u.expected_artifact!==void 0?{expectedArtifact:u.expected_artifact}:{},...u.rationale!==void 0?{rationale:u.rationale}:{}}))}:{},...r.provider_order!==void 0?{providerOrder:r.provider_order}:{},...r.max_rounds!==void 0?{maxRounds:r.max_rounds}:{},background:r.background,...r.output!==void 0?{output:{...r.output.write_aggregation_document!==void 0?{writeAggregationDocument:r.output.write_aggregation_document}:{},...r.output.write_result_document!==void 0?{writeResultDocument:r.output.write_result_document}:{}}}:{}});return{content:[{type:"text",text:[d.terminalReport,"",`${e.i18n.t("researchConsensus.artifacts")}:`,`- ${e.i18n.t("researchConsensus.collection")}: ${d.research.collectionPath}`,`- ${e.i18n.t("researchConsensus.fullCollection")}: ${d.research.fullCollectionPath}`,`- ${e.i18n.t("researchConsensus.aggregationRecord")}: ${d.research.aggregationRecordPath}`,`- ${e.i18n.t("researchConsensus.openDebateItems")}: ${d.research.openDebateItemsPath}`,`- ${e.i18n.t("researchConsensus.openDebateItemCount")}: ${d.research.openDebateItemCount}`,...d.research.documents?.aggregationDocumentPath!==void 0?[`- ${e.i18n.t("researchConsensus.aggregationDocument")}: ${d.research.documents.aggregationDocumentPath}`]:[],...d.research.documents?.finalDocumentTargetPath!==void 0?[`- ${e.i18n.t("researchConsensus.finalDocumentTarget")}: ${d.research.documents.finalDocumentTargetPath}`]:[],"",`${e.i18n.t("researchConsensus.status")}: ${Je(e.i18n,`report.status.${d.snapshot.status}`,d.snapshot.status)} (session ${d.sessionId})`].join(`
376
- `)}],...d.snapshot.status==="error"?{isError:!0}:{}}}catch(d){return No(e.i18n.t("researchConsensus.error.startFailed",{message:A(d)}))}}function eQ(t,e){return t!==null&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,e)}function No(t){return{content:[{type:"text",text:t}],isError:!0}}function c_(){return[{name:"agent_debate_start",title:"Start AI Debate",description:"Start a multi-provider debate on a topic. Optionally enable enhanced mode with goal-based quality validation.",inputSchema:H(rf)},{name:"agent_debate_status",title:"Check Debate Status",description:"Check the status and result of a debate session.",inputSchema:H(nf)},{name:"agent_cross_validate",title:"Cross-Validate Outputs",description:"Cross-validate work outputs. Each item is reviewed by agent-tier providers. Tool-tier providers cannot be validators.",inputSchema:H(sf)},{name:"agent_debate_create",title:"Create Turn-Based Debate",description:"Create a turn-based debate session. Returns a debate ID for use with agent_debate_turn and agent_debate_conclude.",inputSchema:H(af)},{name:"agent_debate_turn",title:"Execute Debate Turn",description:`Execute one provider's turn in a debate. Optionally inject Claude's comment before the provider responds. Returns the provider's response. Use provider: "claude" with claude_comment to record Claude's own independent opinion as a debate turn.`,inputSchema:H(cf)},{name:"agent_debate_conclude",title:"Conclude Debate",description:"End a debate session and generate the final transcript. Optionally add Claude's summary and quality scores for each provider.",inputSchema:H(df)},{name:"agent_debate_review",title:"Review Document with Providers",description:"Send a document to multiple providers for structured review. Each provider responds with agree/disagree and feedback. Use iteratively: review \u2192 revise document based on feedback \u2192 review again until all agree.",inputSchema:H(uf)},{name:"agent_changes_review",title:"Review File Changes",description:"Review file changes made by an external AI in an isolated worktree. Shows diff stat and full diff.",inputSchema:H(lf)},{name:"agent_changes_accept",title:"Accept File Changes",description:"Accept and merge file changes from an isolated worktree back to the main branch.",inputSchema:H(pf)},{name:"agent_changes_reject",title:"Reject File Changes",description:"Reject file changes and clean up the isolated worktree.",inputSchema:H(ff)},{name:_f,title:"Start Consensus Session",description:"Start the consensus round engine from an explicit participant list and initial_aggregation JSON. The engine does not inject specialists, run research, or create individual-review fan-out. By default it starts in the background and returns a tracking receipt; call agent_debate_status to recover state and artifacts. No synthesis is written until the leader approves or rejects a ready-for-approval/escalated session.",inputSchema:H(hf)},{name:If,title:"Start Research Consensus",description:"Start the dedicated host-led research consensus flow. This entry point does not accept source_documents; research submissions are collected and preprocessed before consensus starts.",inputSchema:H(mf)},{name:ba,title:"Approve Consensus Session",description:"Leader-approve a ready-for-approval structured-debate session. Writes the synthesis document and marks the session approved.",inputSchema:H(gf)},{name:_a,title:"Continue Consensus Session",description:"Run additional rounds on a ready-for-approval (or escalated) structured-debate session. Choose 3, 5, or 10 extra rounds. Defaults to background execution; set background=false or await_completion_ms when the caller should wait for a bounded result.",inputSchema:H(yf)},{name:wa,title:"Reject Consensus Session",description:"Reject a ready-for-approval (or escalated/leader-timeout) structured-debate session. Writes a rejected synthesis, marks the transcript rejected, and optionally writes an issue document.",inputSchema:H(vf)},{name:Ld,title:"Submit Host Turn",description:"Submit an explicit host-native participant turn. When `agent_debate_status` reports `phase: awaiting-host-turn`, the host dispatches each `pending_host_turns` entry through the route declared in participant_routes and posts JSON/text output back here. Every consensus-round host turn uses the consensus JSON contract. Once every pending host participant has answered, the workflow resumes automatically.",inputSchema:H(bf)},{name:Pf,title:"Record Research Artifacts",description:"Record host-owned research evidence for a provider-backed research workflow. Writes run_report.json, gate_ledger.json, evidence_packet.json, artifact_index.json, and an optional Markdown report.",inputSchema:H(of)}]}import{join as c8}from"path";var AC="claude",TC="claude-cli";function tQ(t,e){return t===AC?e==="claude-code"?{transport:"read-only-chat",providerId:AC}:{transport:"cli-bridge",providerId:TC}:{transport:"read-only-chat",providerId:t}}function rQ(t){if(!(!t||t.length===0))return t.map(e=>({path:e}))}function sQ(t,e){if(e===void 0)return{race:o=>o,clear:()=>{}};let r=new AbortController,s,n=new Promise((o,i)=>{s=setTimeout(()=>{let a=new Error(`Participant "${t}" stalled (hard deadline after ${Math.round(e/1e3)}s)`);r.abort(a),i(a)},e),s.unref?.()});return{signal:r.signal,race:o=>(o.catch(()=>{}),Promise.race([o,n])),clear:()=>{s!==void 0&&clearTimeout(s)}}}var d_=class{registry;readOnlyAdapter;hostKind;constructor(e){this.registry=e.registry,this.readOnlyAdapter=e.readOnlyAdapter,this.hostKind=e.hostKind}describe(e){return this.resolveDescriptor(e)}async requestTurn(e,r){let s=this.resolveDescriptor(e),n=performance.now();try{switch(s.transport){case"cli-bridge":{let o=s.providerId??TC,i=this.lookupProviderOrNull(o);if(!i)return this.buildFailure(e,n,`CLI provider "${o}" not registered`);let a=await this.chatWithParticipantControls(e,i,r,r.system);return this.buildSuccess(e,n,a.text)}case"read-only-chat":{let o=s.providerId??e,i=this.lookupProviderOrNull(o);if(!i)return this.buildFailure(e,n,`provider "${o}" not registered`);let a=await this.chatWithParticipantControls(e,i,r,r.system);return this.buildSuccess(e,n,a.text)}default:{let o=s.transport;return this.buildFailure(e,n,`unknown transport: ${String(o)}`)}}}catch(o){return this.buildFailure(e,n,A(o))}}lookupProviderOrNull(e){try{return this.registry.get(e)}catch{return null}}async chatWithParticipantControls(e,r,s,n){let o=sQ(e,s.timeoutMs);try{let i=this.readOnlyAdapter.chat(r,{prompt:s.prompt,...n!==void 0?{system:n}:{},...s.files!==void 0?{files:rQ(s.files)}:{},...s.timeoutMs!==void 0?{timeoutMs:s.timeoutMs}:{},...s.activity!==void 0?{activity:s.activity}:{},...s.providerRun!==void 0?{extra:{agestraProviderRun:s.providerRun}}:{},...o.signal!==void 0?{signal:o.signal}:{}});return await o.race(i)}finally{o.clear()}}resolveDescriptor(e){return tQ(e,this.hostKind)}buildSuccess(e,r,s){return{participantId:e,text:s,latencyMs:Math.round(performance.now()-r),failed:!1}}buildFailure(e,r,s){return{participantId:e,text:"",latencyMs:Math.round(performance.now()-r),failed:!0,failureReason:s}}};function DC(t){return new d_(t)}import{existsSync as qO}from"fs";import{basename as L_,dirname as BO,join as z_}from"path";function u_(t,e){return e(t)}function CC(t,e){if(e.length===0)return t;let r=new Set(t),s=t.slice();for(let n of e)r.has(n)||(r.add(n),s.push(n));return s}function nQ(t){let e={id:t.id,proposerIds:t.proposerIds.slice(),title:t.title,severity:t.severity,roundOpened:t.roundOpened,status:t.status,votes:new Map};t.location!==void 0&&(e.location=t.location),t.kind!==void 0&&(e.kind=t.kind),t.claim!==void 0&&(e.claim=t.claim),t.evidence!==void 0&&(e.evidence=t.evidence),t.recommendation!==void 0&&(e.recommendation=t.recommendation),t.localId!==void 0&&(e.localId=t.localId),t.sourceDocumentPath!==void 0&&(e.sourceDocumentPath=t.sourceDocumentPath),t.description!==void 0&&(e.description=t.description),t.supersededBy!==void 0&&(e.supersededBy=t.supersededBy),t.mergedInto!==void 0&&(e.mergedInto=t.mergedInto);for(let[r,s]of t.votes)e.votes.set(r,{...s});return e}var Sa=class t{_proposals=new Map;_aliasCandidates=[];get proposals(){return this._proposals}get aliasCandidates(){return this._aliasCandidates.slice()}addProposal(e){if(this._proposals.has(e.id))throw new Error(`ProposalLedger.addProposal: duplicate id "${e.id}"`);let r={id:e.id,proposerIds:e.proposerIds.slice(),title:e.title,severity:e.severity,roundOpened:e.roundOpened,status:e.status??"open",votes:new Map};e.location!==void 0&&(r.location=e.location),e.kind!==void 0&&(r.kind=e.kind),e.claim!==void 0&&(r.claim=e.claim),e.evidence!==void 0&&(r.evidence=e.evidence),e.recommendation!==void 0&&(r.recommendation=e.recommendation),e.localId!==void 0&&(r.localId=e.localId),e.sourceDocumentPath!==void 0&&(r.sourceDocumentPath=e.sourceDocumentPath),e.description!==void 0&&(r.description=e.description),this._proposals.set(r.id,r)}recordVote(e,r,s){let n=this._proposals.get(e);if(!n)throw new Error(`ProposalLedger.recordVote: unknown proposal id "${e}"`);n.votes.set(r,{...s}),n.proposerIds.includes(r)&&s.vote==="revise"&&n.status==="open"&&(n.status="withdrawn-by-author")}countRevisesThisRound(e,r){let s=this._proposals.get(e);if(!s)return 0;let n=0;for(let[o,i]of s.votes)i.vote==="revise"&&i.roundRecorded===r&&(s.proposerIds.includes(o)||(n+=1));return n}markSuperseded(e,r,s){let n=this._proposals.get(e);if(!n)throw new Error(`ProposalLedger.markSuperseded: unknown old id "${e}"`);if(!this._proposals.has(r))throw new Error(`ProposalLedger.markSuperseded: successor id "${r}" not registered`);n.status="superseded",n.supersededBy=r;for(let o of n.votes.values())o.supersededAt===void 0&&(o.supersededAt=s)}applyAliasMerge(e,r){if(e===r)throw new Error(`ProposalLedger.applyAliasMerge: cannot merge id "${e}" into itself`);let s=this._proposals.get(e),n=this._proposals.get(r);if(!s)throw new Error(`ProposalLedger.applyAliasMerge: unknown primary id "${e}"`);if(!n)throw new Error(`ProposalLedger.applyAliasMerge: unknown alias id "${r}"`);s.proposerIds=CC(s.proposerIds,n.proposerIds);for(let[o,i]of n.votes){let a=s.votes.get(o);if(!a){s.votes.set(o,{...i});continue}i.roundRecorded>a.roundRecorded&&s.votes.set(o,{...i})}n.status="merged",n.mergedInto=e;for(let o=this._aliasCandidates.length-1;o>=0;o-=1){let i=this._aliasCandidates[o];(i.proposalA===r||i.proposalB===r||i.proposalA===e||i.proposalB===e)&&this._aliasCandidates.splice(o,1)}}setStatus(e,r){let s=this._proposals.get(e);if(!s)throw new Error(`ProposalLedger.setStatus: unknown proposal id "${e}"`);s.status=r}aggregateRound(e,r,s=[]){let n=new Set(s),o=[];for(let i of this._proposals.values()){if(i.status!=="open")continue;let a={agree:0,disagree:0,abstain:0,revise:0,missing:0};for(let d of r){if(i.proposerIds.includes(d))continue;let u=i.votes.get(d);if(u===void 0||u.roundRecorded!==e){n.has(d)?a.abstain+=1:a.missing+=1;continue}switch(u.vote){case"agree":a.agree+=1;break;case"disagree":a.disagree+=1;break;case"abstain":a.abstain+=1;break;case"revise":a.revise+=1;break;default:{let l=u.vote}}}let c=oQ(a);o.push({proposalId:i.id,tally:a,verdict:c})}return o}getOpenProposals(){return this.selectByStatus("open")}getConsensusProposals(){return this.selectByStatus("consensus")}getUnresolved(){return this.selectByStatus("unresolved")}selectByStatus(e){let r=[];for(let s of this._proposals.values())s.status===e&&r.push(nQ(s));return r}toJSON(){let e=Array.from(this._proposals.values()).map(s=>{let n=[];for(let[i,a]of s.votes){let c={voter:i,vote:a.vote,roundRecorded:a.roundRecorded};a.reason!==void 0&&(c.reason=a.reason),a.supersededAt!==void 0&&(c.supersededAt=a.supersededAt),n.push(c)}let o={id:s.id,proposerIds:s.proposerIds.slice(),title:s.title,severity:s.severity,roundOpened:s.roundOpened,status:s.status,votes:n};return s.location!==void 0&&(o.location=s.location),s.kind!==void 0&&(o.kind=s.kind),s.claim!==void 0&&(o.claim=s.claim),s.evidence!==void 0&&(o.evidence=s.evidence),s.recommendation!==void 0&&(o.recommendation=s.recommendation),s.localId!==void 0&&(o.localId=s.localId),s.sourceDocumentPath!==void 0&&(o.sourceDocumentPath=s.sourceDocumentPath),s.description!==void 0&&(o.description=s.description),s.supersededBy!==void 0&&(o.supersededBy=s.supersededBy),s.mergedInto!==void 0&&(o.mergedInto=s.mergedInto),o}),r=this._aliasCandidates.map(s=>({proposalA:s.proposalA,proposalB:s.proposalB,matchedFields:s.matchedFields.slice(),missingField:s.missingField}));return{proposals:e,aliasCandidates:r}}static fromJSON(e){let r=new t,s=new Set;for(let n of e.proposals){if(s.has(n.id))throw new Error(`ProposalLedger.fromJSON: duplicate proposal id "${n.id}"`);s.add(n.id);let o={id:n.id,proposerIds:n.proposerIds.slice(),title:n.title,severity:n.severity,roundOpened:n.roundOpened,status:n.status,votes:new Map};n.location!==void 0&&(o.location=n.location),n.kind!==void 0&&(o.kind=n.kind),n.claim!==void 0&&(o.claim=n.claim),n.evidence!==void 0&&(o.evidence=n.evidence),n.recommendation!==void 0&&(o.recommendation=n.recommendation),n.localId!==void 0&&(o.localId=n.localId),n.sourceDocumentPath!==void 0&&(o.sourceDocumentPath=n.sourceDocumentPath),n.description!==void 0&&(o.description=n.description),n.supersededBy!==void 0&&(o.supersededBy=n.supersededBy),n.mergedInto!==void 0&&(o.mergedInto=n.mergedInto);for(let i of n.votes){let a={vote:i.vote,roundRecorded:i.roundRecorded};i.reason!==void 0&&(a.reason=i.reason),i.supersededAt!==void 0&&(a.supersededAt=i.supersededAt),o.votes.set(i.voter,a)}r._proposals.set(o.id,o)}for(let n of e.aliasCandidates)r._aliasCandidates.push({proposalA:n.proposalA,proposalB:n.proposalB,matchedFields:n.matchedFields.slice(),missingField:n.missingField});return r}_rawProposal(e){return this._proposals.get(e)}_pushAliasCandidate(e){this._aliasCandidates.push(e)}_extendProposers(e,r){let s=this._proposals.get(e);s&&(s.proposerIds=CC(s.proposerIds,r))}_maybeReplaceDescription(e,r){let s=this._proposals.get(e);if(!s||r===void 0)return;let n=s.description??"";r.length>n.length&&(s.description=r)}};function oQ(t){return t.disagree>0||t.revise>0?"dissent":t.missing>0?"pending":t.agree>0?"consensus":"pending"}var iQ=p.object({title:p.string().min(1),plainSummary:p.string().min(1),originalClaim:p.string().min(1)}).strict(),aQ=p.object({kind:p.string().min(1),ref:p.string().min(1),note:p.string().min(1).optional()}).strict(),cQ=p.object({provider:p.string().min(1),itemId:p.string().min(1),point:p.string().min(1)}).strict(),dQ=p.object({itemId:p.string().min(1),claim:p.string().min(1),evidenceRefs:p.array(aQ).optional(),targetProviders:p.array(p.string().min(1)).optional()}).strict(),uQ=p.object({id:p.string().min(1),stance:p.enum(["agree","disagree","opinion","revise"]),comment:p.string(),proposedItem:iQ.optional(),stanceChanged:p.boolean().optional(),previousStance:p.enum(["agree","disagree","revise","abstain","needs_human"]).optional(),respondsTo:p.array(cQ).optional(),persuasionNotes:p.array(dQ).optional()}).strict(),OC=p.object({provider:p.string().min(1),round:p.number().int().nonnegative(),items:p.array(uQ)}).strict();function MC(t){return t.issues.map(e=>`${e.path.length>0?`${e.path.join(".")}: `:""}${e.message}`)}function lQ(t){return{provider:t.provider,round:t.round,items:t.assignedItems.map(e=>({id:e.id,stance:"agree",comment:"Explain the explicit reason for this stance.",stanceChanged:!1,respondsTo:[],persuasionNotes:[]}))}}function l_(t){return["Return JSON only.","The top-level object must have exactly these fields: provider, round, items.","Do not use a votes key.","Do not use XML.","Do not include Markdown fences or prose.","Every assigned item must appear exactly once in items.","Use only these stance values: agree, disagree, opinion, revise.","disagree, opinion, and revise require a non-empty comment.","revise requires proposedItem with title, plainSummary, originalClaim.","Each item may include stanceChanged, previousStance, respondsTo, and persuasionNotes.","If stanceChanged is true, include previousStance with one of: agree, disagree, revise, abstain, needs_human.","respondsTo entries must use { provider, itemId, point } and point at an assigned item.","persuasionNotes entries must use { itemId, claim, evidenceRefs?, targetProviders? } and point at an assigned item.","","Response example:",JSON.stringify(lQ(t),null,2)].join(`
375
+ `);ae(t,s)}function YY(t,e,r){let s=qY(r)?Fd(r):Fd(t,r);return FY(s).toLowerCase()!==".md"?new Error(`Research report path must be a Markdown .md file: ${r}`):[Fd(t,"docs","reports","research"),Fd(t,Ns),Fd(e)].some(o=>Fa(s,o))?BY(s)?new Error(`Research report path already exists; refusing to overwrite: ${r}`):s:new Error(`Research report path must stay under docs/reports/research or ${Ns}: ${r}`)}function QY(t){try{return typeof t.registry.getAll!="function"?[]:t.registry.getAll().filter(e=>{try{return e.isAvailable()}catch{return!1}}).map(e=>e.id)}catch{return[]}}function XY(t){let e=0;for(let r=0;r<t.length;r+=1)e=(e<<5)-e+t.charCodeAt(r)|0;return Math.abs(e).toString(16)}function $f(t){return{content:[{type:"text",text:t}],isError:!0}}var If="agent_research_consensus_start";async function EC(t,e){if(eQ(t,"source_documents"))return No(e.i18n.t("researchConsensus.error.noSourceDocuments"));let r;try{r=mf.parse(t)}catch(u){return No(e.i18n.t("consensus.error.invalidArguments",{message:A(u)}))}let s=r.participants.find(va);if(s!==void 0)return No(e.i18n.t("researchConsensus.error.researchPacketParticipant",{providerId:s}));let n=r.provider_order?.find(va);if(n!==void 0)return No(e.i18n.t("researchConsensus.error.researchPacketParticipant",{providerId:n}));let i=(r.research_assignments??[]).flatMap(u=>[u.participant,u.assignee].filter(l=>l!==void 0)).find(va);if(i!==void 0)return No(e.i18n.t("researchConsensus.error.researchPacketParticipant",{providerId:i}));if(!e.moderatorEngine||typeof e.moderatorEngine.startResearchConsensus!="function")return No(e.i18n.t("researchConsensus.error.engineMissing"));let a=Array.from(new Set([...r.participants,...r.provider_order??[],...(r.research_assignments??[]).flatMap(u=>[u.participant,u.assignee].filter(l=>l!==void 0))])),c=r.workspace_base_dir??e.workspaceBaseDir,d=await ls({providerIds:a,deps:e,workspaceBaseDir:c});if(d.blockResult)return d.blockResult;try{let u=await e.moderatorEngine.startResearchConsensus({domain:r.domain,objective:r.objective,participants:r.participants,...r.research_assignments!==void 0?{researchAssignments:r.research_assignments.map(l=>({...l.assignment_id!==void 0?{assignmentId:l.assignment_id}:{},...l.participant!==void 0?{participant:l.participant}:{},...l.assignee!==void 0?{assignee:l.assignee}:{},question:l.question,...l.lens!==void 0?{lens:l.lens}:{},...l.scope!==void 0?{scope:l.scope}:{},...l.deliverable!==void 0?{deliverable:l.deliverable}:{},...l.priority!==void 0?{priority:l.priority}:{},...l.expected_artifact!==void 0?{expectedArtifact:l.expected_artifact}:{},...l.rationale!==void 0?{rationale:l.rationale}:{}}))}:{},...r.provider_order!==void 0?{providerOrder:r.provider_order}:{},...r.max_rounds!==void 0?{maxRounds:r.max_rounds}:{},background:r.background,...r.output!==void 0?{output:{...r.output.write_aggregation_document!==void 0?{writeAggregationDocument:r.output.write_aggregation_document}:{},...r.output.write_result_document!==void 0?{writeResultDocument:r.output.write_result_document}:{}}}:{}});return{content:[{type:"text",text:[u.terminalReport,"",`${e.i18n.t("researchConsensus.artifacts")}:`,`- ${e.i18n.t("researchConsensus.collection")}: ${u.research.collectionPath}`,`- ${e.i18n.t("researchConsensus.fullCollection")}: ${u.research.fullCollectionPath}`,`- ${e.i18n.t("researchConsensus.aggregationRecord")}: ${u.research.aggregationRecordPath}`,`- ${e.i18n.t("researchConsensus.openDebateItems")}: ${u.research.openDebateItemsPath}`,`- ${e.i18n.t("researchConsensus.openDebateItemCount")}: ${u.research.openDebateItemCount}`,...u.research.documents?.aggregationDocumentPath!==void 0?[`- ${e.i18n.t("researchConsensus.aggregationDocument")}: ${u.research.documents.aggregationDocumentPath}`]:[],...u.research.documents?.finalDocumentTargetPath!==void 0?[`- ${e.i18n.t("researchConsensus.finalDocumentTarget")}: ${u.research.documents.finalDocumentTargetPath}`]:[],"",`${e.i18n.t("researchConsensus.status")}: ${Je(e.i18n,`report.status.${u.snapshot.status}`,u.snapshot.status)} (session ${u.sessionId})`].join(`
376
+ `)}],...u.snapshot.status==="error"?{isError:!0}:{}}}catch(u){return No(e.i18n.t("researchConsensus.error.startFailed",{message:A(u)}))}}function eQ(t,e){return t!==null&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,e)}function No(t){return{content:[{type:"text",text:t}],isError:!0}}function c_(){return[{name:"agent_debate_start",title:"Start AI Debate",description:"Start a multi-provider debate on a topic. Optionally enable enhanced mode with goal-based quality validation.",inputSchema:H(rf)},{name:"agent_debate_status",title:"Check Debate Status",description:"Check the status and result of a debate session.",inputSchema:H(nf)},{name:"agent_cross_validate",title:"Cross-Validate Outputs",description:"Cross-validate work outputs. Each item is reviewed by agent-tier providers. Tool-tier providers cannot be validators.",inputSchema:H(sf)},{name:"agent_debate_create",title:"Create Turn-Based Debate",description:"Create a turn-based debate session. Returns a debate ID for use with agent_debate_turn and agent_debate_conclude.",inputSchema:H(af)},{name:"agent_debate_turn",title:"Execute Debate Turn",description:`Execute one provider's turn in a debate. Optionally inject Claude's comment before the provider responds. Returns the provider's response. Use provider: "claude" with claude_comment to record Claude's own independent opinion as a debate turn.`,inputSchema:H(cf)},{name:"agent_debate_conclude",title:"Conclude Debate",description:"End a debate session and generate the final transcript. Optionally add Claude's summary and quality scores for each provider.",inputSchema:H(df)},{name:"agent_debate_review",title:"Review Document with Providers",description:"Send a document to multiple providers for structured review. Each provider responds with agree/disagree and feedback. Use iteratively: review \u2192 revise document based on feedback \u2192 review again until all agree.",inputSchema:H(uf)},{name:"agent_changes_review",title:"Review File Changes",description:"Review file changes made by an external AI in an isolated worktree. Shows diff stat and full diff.",inputSchema:H(lf)},{name:"agent_changes_accept",title:"Accept File Changes",description:"Accept and merge file changes from an isolated worktree back to the main branch.",inputSchema:H(pf)},{name:"agent_changes_reject",title:"Reject File Changes",description:"Reject file changes and clean up the isolated worktree.",inputSchema:H(ff)},{name:_f,title:"Start Consensus Session",description:"Start the consensus round engine from an explicit participant list and initial_aggregation JSON. The engine does not inject specialists, run research, or create individual-review fan-out. By default it starts in the background and returns a tracking receipt; call agent_debate_status to recover state and artifacts. No synthesis is written until the leader approves or rejects a ready-for-approval/escalated session.",inputSchema:H(hf)},{name:If,title:"Start Research Consensus",description:"Start the dedicated host-led research consensus flow. This entry point does not accept source_documents; research submissions are collected and preprocessed before consensus starts.",inputSchema:H(mf)},{name:ba,title:"Approve Consensus Session",description:"Leader-approve a ready-for-approval structured-debate session. Writes the synthesis document and marks the session approved.",inputSchema:H(gf)},{name:_a,title:"Continue Consensus Session",description:"Run additional rounds on a ready-for-approval (or escalated) structured-debate session. Choose 3, 5, or 10 extra rounds. Defaults to background execution; set background=false or await_completion_ms when the caller should wait for a bounded result.",inputSchema:H(yf)},{name:wa,title:"Reject Consensus Session",description:"Reject a ready-for-approval (or escalated/leader-timeout) structured-debate session. Writes a rejected synthesis, marks the transcript rejected, and optionally writes an issue document.",inputSchema:H(vf)},{name:Ld,title:"Submit Host Turn",description:"Submit an explicit host-native participant turn. When `agent_debate_status` reports `phase: awaiting-host-turn`, the host dispatches each `pending_host_turns` entry through the route declared in participant_routes and posts JSON/text output back here. Every consensus-round host turn uses the consensus JSON contract. Once every pending host participant has answered, the workflow resumes automatically.",inputSchema:H(bf)},{name:Pf,title:"Record Research Artifacts",description:"Record host-owned research evidence for a provider-backed research workflow. Writes run_report.json, gate_ledger.json, evidence_packet.json, artifact_index.json, and an optional Markdown report.",inputSchema:H(of)}]}import{join as c8}from"path";var AC="claude",TC="claude-cli";function tQ(t,e){return t===AC?e==="claude-code"?{transport:"read-only-chat",providerId:AC}:{transport:"cli-bridge",providerId:TC}:{transport:"read-only-chat",providerId:t}}function rQ(t){if(!(!t||t.length===0))return t.map(e=>({path:e}))}function sQ(t,e){if(e===void 0)return{race:o=>o,clear:()=>{}};let r=new AbortController,s,n=new Promise((o,i)=>{s=setTimeout(()=>{let a=new Error(`Participant "${t}" stalled (hard deadline after ${Math.round(e/1e3)}s)`);r.abort(a),i(a)},e),s.unref?.()});return{signal:r.signal,race:o=>(o.catch(()=>{}),Promise.race([o,n])),clear:()=>{s!==void 0&&clearTimeout(s)}}}var d_=class{registry;readOnlyAdapter;hostKind;constructor(e){this.registry=e.registry,this.readOnlyAdapter=e.readOnlyAdapter,this.hostKind=e.hostKind}describe(e){return this.resolveDescriptor(e)}async requestTurn(e,r){let s=this.resolveDescriptor(e),n=performance.now();try{switch(s.transport){case"cli-bridge":{let o=s.providerId??TC,i=this.lookupProviderOrNull(o);if(!i)return this.buildFailure(e,n,`CLI provider "${o}" not registered`);let a=await this.chatWithParticipantControls(e,i,r,r.system);return this.buildSuccess(e,n,a.text)}case"read-only-chat":{let o=s.providerId??e,i=this.lookupProviderOrNull(o);if(!i)return this.buildFailure(e,n,`provider "${o}" not registered`);let a=await this.chatWithParticipantControls(e,i,r,r.system);return this.buildSuccess(e,n,a.text)}default:{let o=s.transport;return this.buildFailure(e,n,`unknown transport: ${String(o)}`)}}}catch(o){return this.buildFailure(e,n,A(o))}}lookupProviderOrNull(e){try{return this.registry.get(e)}catch{return null}}async chatWithParticipantControls(e,r,s,n){let o=sQ(e,s.timeoutMs);try{let i=this.readOnlyAdapter.chat(r,{prompt:s.prompt,...n!==void 0?{system:n}:{},...s.files!==void 0?{files:rQ(s.files)}:{},...s.timeoutMs!==void 0?{timeoutMs:s.timeoutMs}:{},...s.activity!==void 0?{activity:s.activity}:{},...s.providerRun!==void 0?{extra:{agestraProviderRun:s.providerRun}}:{},...o.signal!==void 0?{signal:o.signal}:{}});return await o.race(i)}finally{o.clear()}}resolveDescriptor(e){return tQ(e,this.hostKind)}buildSuccess(e,r,s){return{participantId:e,text:s,latencyMs:Math.round(performance.now()-r),failed:!1}}buildFailure(e,r,s){return{participantId:e,text:"",latencyMs:Math.round(performance.now()-r),failed:!0,failureReason:s}}};function DC(t){return new d_(t)}import{existsSync as qO}from"fs";import{basename as L_,dirname as BO,join as z_}from"path";function u_(t,e){return e(t)}function CC(t,e){if(e.length===0)return t;let r=new Set(t),s=t.slice();for(let n of e)r.has(n)||(r.add(n),s.push(n));return s}function nQ(t){let e={id:t.id,proposerIds:t.proposerIds.slice(),title:t.title,severity:t.severity,roundOpened:t.roundOpened,status:t.status,votes:new Map};t.location!==void 0&&(e.location=t.location),t.kind!==void 0&&(e.kind=t.kind),t.claim!==void 0&&(e.claim=t.claim),t.evidence!==void 0&&(e.evidence=t.evidence),t.recommendation!==void 0&&(e.recommendation=t.recommendation),t.localId!==void 0&&(e.localId=t.localId),t.sourceDocumentPath!==void 0&&(e.sourceDocumentPath=t.sourceDocumentPath),t.description!==void 0&&(e.description=t.description),t.supersededBy!==void 0&&(e.supersededBy=t.supersededBy),t.mergedInto!==void 0&&(e.mergedInto=t.mergedInto);for(let[r,s]of t.votes)e.votes.set(r,{...s});return e}var Sa=class t{_proposals=new Map;_aliasCandidates=[];get proposals(){return this._proposals}get aliasCandidates(){return this._aliasCandidates.slice()}addProposal(e){if(this._proposals.has(e.id))throw new Error(`ProposalLedger.addProposal: duplicate id "${e.id}"`);let r={id:e.id,proposerIds:e.proposerIds.slice(),title:e.title,severity:e.severity,roundOpened:e.roundOpened,status:e.status??"open",votes:new Map};e.location!==void 0&&(r.location=e.location),e.kind!==void 0&&(r.kind=e.kind),e.claim!==void 0&&(r.claim=e.claim),e.evidence!==void 0&&(r.evidence=e.evidence),e.recommendation!==void 0&&(r.recommendation=e.recommendation),e.localId!==void 0&&(r.localId=e.localId),e.sourceDocumentPath!==void 0&&(r.sourceDocumentPath=e.sourceDocumentPath),e.description!==void 0&&(r.description=e.description),this._proposals.set(r.id,r)}recordVote(e,r,s){let n=this._proposals.get(e);if(!n)throw new Error(`ProposalLedger.recordVote: unknown proposal id "${e}"`);n.votes.set(r,{...s}),n.proposerIds.includes(r)&&s.vote==="revise"&&n.status==="open"&&(n.status="withdrawn-by-author")}countRevisesThisRound(e,r){let s=this._proposals.get(e);if(!s)return 0;let n=0;for(let[o,i]of s.votes)i.vote==="revise"&&i.roundRecorded===r&&(s.proposerIds.includes(o)||(n+=1));return n}markSuperseded(e,r,s){let n=this._proposals.get(e);if(!n)throw new Error(`ProposalLedger.markSuperseded: unknown old id "${e}"`);if(!this._proposals.has(r))throw new Error(`ProposalLedger.markSuperseded: successor id "${r}" not registered`);n.status="superseded",n.supersededBy=r;for(let o of n.votes.values())o.supersededAt===void 0&&(o.supersededAt=s)}applyAliasMerge(e,r){if(e===r)throw new Error(`ProposalLedger.applyAliasMerge: cannot merge id "${e}" into itself`);let s=this._proposals.get(e),n=this._proposals.get(r);if(!s)throw new Error(`ProposalLedger.applyAliasMerge: unknown primary id "${e}"`);if(!n)throw new Error(`ProposalLedger.applyAliasMerge: unknown alias id "${r}"`);s.proposerIds=CC(s.proposerIds,n.proposerIds);for(let[o,i]of n.votes){let a=s.votes.get(o);if(!a){s.votes.set(o,{...i});continue}i.roundRecorded>a.roundRecorded&&s.votes.set(o,{...i})}n.status="merged",n.mergedInto=e;for(let o=this._aliasCandidates.length-1;o>=0;o-=1){let i=this._aliasCandidates[o];(i.proposalA===r||i.proposalB===r||i.proposalA===e||i.proposalB===e)&&this._aliasCandidates.splice(o,1)}}setStatus(e,r){let s=this._proposals.get(e);if(!s)throw new Error(`ProposalLedger.setStatus: unknown proposal id "${e}"`);s.status=r}aggregateRound(e,r,s=[]){let n=new Set(s),o=[];for(let i of this._proposals.values()){if(i.status!=="open")continue;let a={agree:0,disagree:0,abstain:0,revise:0,missing:0};for(let d of r){if(i.proposerIds.includes(d))continue;let u=i.votes.get(d);if(u===void 0||u.roundRecorded!==e){n.has(d)?a.abstain+=1:a.missing+=1;continue}switch(u.vote){case"agree":a.agree+=1;break;case"disagree":a.disagree+=1;break;case"abstain":a.abstain+=1;break;case"revise":a.revise+=1;break;default:{let l=u.vote}}}let c=oQ(a);o.push({proposalId:i.id,tally:a,verdict:c})}return o}getOpenProposals(){return this.selectByStatus("open")}getConsensusProposals(){return this.selectByStatus("consensus")}getUnresolved(){return this.selectByStatus("unresolved")}selectByStatus(e){let r=[];for(let s of this._proposals.values())s.status===e&&r.push(nQ(s));return r}toJSON(){let e=Array.from(this._proposals.values()).map(s=>{let n=[];for(let[i,a]of s.votes){let c={voter:i,vote:a.vote,roundRecorded:a.roundRecorded};a.reason!==void 0&&(c.reason=a.reason),a.supersededAt!==void 0&&(c.supersededAt=a.supersededAt),n.push(c)}let o={id:s.id,proposerIds:s.proposerIds.slice(),title:s.title,severity:s.severity,roundOpened:s.roundOpened,status:s.status,votes:n};return s.location!==void 0&&(o.location=s.location),s.kind!==void 0&&(o.kind=s.kind),s.claim!==void 0&&(o.claim=s.claim),s.evidence!==void 0&&(o.evidence=s.evidence),s.recommendation!==void 0&&(o.recommendation=s.recommendation),s.localId!==void 0&&(o.localId=s.localId),s.sourceDocumentPath!==void 0&&(o.sourceDocumentPath=s.sourceDocumentPath),s.description!==void 0&&(o.description=s.description),s.supersededBy!==void 0&&(o.supersededBy=s.supersededBy),s.mergedInto!==void 0&&(o.mergedInto=s.mergedInto),o}),r=this._aliasCandidates.map(s=>({proposalA:s.proposalA,proposalB:s.proposalB,matchedFields:s.matchedFields.slice(),missingField:s.missingField}));return{proposals:e,aliasCandidates:r}}static fromJSON(e){let r=new t,s=new Set;for(let n of e.proposals){if(s.has(n.id))throw new Error(`ProposalLedger.fromJSON: duplicate proposal id "${n.id}"`);s.add(n.id);let o={id:n.id,proposerIds:n.proposerIds.slice(),title:n.title,severity:n.severity,roundOpened:n.roundOpened,status:n.status,votes:new Map};n.location!==void 0&&(o.location=n.location),n.kind!==void 0&&(o.kind=n.kind),n.claim!==void 0&&(o.claim=n.claim),n.evidence!==void 0&&(o.evidence=n.evidence),n.recommendation!==void 0&&(o.recommendation=n.recommendation),n.localId!==void 0&&(o.localId=n.localId),n.sourceDocumentPath!==void 0&&(o.sourceDocumentPath=n.sourceDocumentPath),n.description!==void 0&&(o.description=n.description),n.supersededBy!==void 0&&(o.supersededBy=n.supersededBy),n.mergedInto!==void 0&&(o.mergedInto=n.mergedInto);for(let i of n.votes){let a={vote:i.vote,roundRecorded:i.roundRecorded};i.reason!==void 0&&(a.reason=i.reason),i.supersededAt!==void 0&&(a.supersededAt=i.supersededAt),o.votes.set(i.voter,a)}r._proposals.set(o.id,o)}for(let n of e.aliasCandidates)r._aliasCandidates.push({proposalA:n.proposalA,proposalB:n.proposalB,matchedFields:n.matchedFields.slice(),missingField:n.missingField});return r}_rawProposal(e){return this._proposals.get(e)}_pushAliasCandidate(e){this._aliasCandidates.push(e)}_extendProposers(e,r){let s=this._proposals.get(e);s&&(s.proposerIds=CC(s.proposerIds,r))}_maybeReplaceDescription(e,r){let s=this._proposals.get(e);if(!s||r===void 0)return;let n=s.description??"";r.length>n.length&&(s.description=r)}};function oQ(t){return t.disagree>0||t.revise>0?"dissent":t.missing>0?"pending":t.agree>0?"consensus":"pending"}var iQ=p.object({title:p.string().min(1),plainSummary:p.string().min(1),originalClaim:p.string().min(1)}).strict(),aQ=p.object({kind:p.string().min(1),ref:p.string().min(1),note:p.string().min(1).optional()}).strict(),cQ=p.object({provider:p.string().min(1),itemId:p.string().min(1),point:p.string().min(1)}).strict(),dQ=p.object({itemId:p.string().min(1),claim:p.string().min(1),evidenceRefs:p.array(aQ).optional(),targetProviders:p.array(p.string().min(1)).optional()}).strict(),uQ=p.object({id:p.string().min(1),stance:p.enum(["agree","disagree","opinion","revise"]),comment:p.string(),proposedItem:iQ.optional(),stanceChanged:p.boolean().optional(),previousStance:p.enum(["agree","disagree","revise","abstain","needs_human"]).optional(),respondsTo:p.array(cQ).optional(),persuasionNotes:p.array(dQ).optional()}).strict(),OC=p.object({provider:p.string().min(1),round:p.number().int().nonnegative(),items:p.array(uQ)}).strict();function MC(t){return t.issues.map(e=>`${e.path.length>0?`${e.path.join(".")}: `:""}${e.message}`)}function lQ(t){return{provider:t.provider,round:t.round,items:t.assignedItems.map(e=>({id:e.id,stance:"agree",comment:"Explain the explicit reason for this stance.",stanceChanged:!1,respondsTo:[],persuasionNotes:[]}))}}function l_(t){return["Return JSON only.","The top-level object must have exactly these fields: provider, round, items.","Do not use a votes key.","Do not use XML.","Do not include Markdown fences or prose.","Every assigned item must appear exactly once in items.","Use only these stance values: agree, disagree, opinion, revise.","disagree, opinion, and revise require a non-empty comment.","revise requires proposedItem with title, plainSummary, originalClaim.","Each item may include stanceChanged, previousStance, respondsTo, and persuasionNotes.","If stanceChanged is true, include previousStance with one of: agree, disagree, revise, abstain, needs_human.","respondsTo entries must use { provider, itemId, point } and point at an assigned item.","persuasionNotes entries must use { itemId, claim, evidenceRefs?, targetProviders? } and point at an assigned item.","","Response example:",JSON.stringify(lQ(t),null,2)].join(`
377
377
  `)}import{createHash as pQ}from"crypto";import{existsSync as p_,readFileSync as LC}from"fs";import{dirname as zC,join as ka,resolve as $n}from"path";import{fileURLToPath as fQ}from"url";var mQ=/^[a-z][a-z0-9_-]*$/,FC=["research.md",ka("research-domains","review.md")];function qC(t){let e=bQ(t.lensesRoot),r={domain:t.domain,...t.variables??{}},s=[];s.push(jC(e,"research-guide","research.md","research",r)),s.push(jC(e,"research-domain-card",ka("research-domains",`${t.domain}.md`),t.domain,r));let n=hQ("research-submission-contract","research-submission-json",gQ(t.domain));s.push(n);let o=t.taskPacket===void 0?"":["Research task packet:","```json",JSON.stringify(t.taskPacket,null,2),"```"].join(`
378
378
  `);return o.length>0&&s.push({kind:"task-packet",id:"task-packet",path:"(runtime)",hash:f_(o),text:o}),{system:s.filter(a=>a.kind!=="task-packet").map(a=>a.text).join(`
379
379
 
@@ -613,7 +613,7 @@ ${s.content}`}]}}async function K8(t,e){CM.parse(t);let r=await e.documentManage
613
613
  `),a.error&&(i+=`- **${s.t("provider.label.error")}:** ${a.error}
614
614
  `),i+=`
615
615
  `;return{content:[{type:"text",text:i}]}}function MM(){let t=Rr();if(!Q8(t))return{enabledProviderIds:[]};try{let e=JSON.parse(X8(t,"utf-8"));return{enabledProviderIds:Vs(e).enabledProviders.map(s=>s.id)}}catch{return{enabledProviderIds:[]}}}function J_(t,e){return t===void 0?e:eee(t)?t:tee(e??process.cwd(),t)}function pee(t,e,r){let s=e.i18n,n=[`# ${s.t("provider.readiness.section")}`,""];for(let i of t)n.push(`- ${i.providerId}: ${mee(s,i.status)}`);let o=fee(t,e,r);if(o){n.push("",`## ${s.t("provider.readiness.actionRequired")}`),n.push("",o.text);for(let i of o.choices)n.push(`- ${i.id}: ${i.label}`);n.push(""),n.push("```json"),n.push(JSON.stringify(o,null,2)),n.push("```")}return n.join(`
616
- `)}function fee(t,e,r){if(!r)return null;let s=t.filter(c=>c.status==="workspace-blocked");if(s.length===0)return null;let n=s.filter(c=>{try{return typeof e.registry.get(c.providerId).trustWorkspace=="function"}catch{return!1}});if(n.length===0)return null;let o=n.map(c=>c.providerId),i={providers:o.join(", "),workspaceBaseDir:r},a=e.i18n;return{kind:"trust-workspace-batch",providerIds:o,workspaceBaseDir:r,messageKey:"provider.trust.batch.workspaceBlocked",questionKey:"provider.trust.batch.question",params:i,text:[a.t("provider.trust.batch.workspaceBlocked",i),a.t("provider.trust.batch.question",i)].join(`
616
+ `)}function fee(t,e,r){if(!r)return null;let s=t.filter(c=>c.status==="workspace-blocked");if(s.length===0)return null;let n=s.filter(c=>{try{return typeof e.registry.get(c.providerId).trustWorkspace=="function"}catch{return!1}});if(n.length===0)return null;let o=n.map(c=>c.providerId),i={providers:o.join(", "),workspaceBaseDir:r},a=e.i18n;return{kind:"trust-workspace-per-provider",providerIds:o,workspaceBaseDir:r,messageKey:"provider.trust.batch.workspaceBlocked",questionKey:"provider.trust.batch.question",params:i,toolCalls:o.map(c=>({tool:"provider_trust_apply",provider:c,workspace_base_dir:r,approved:!0})),text:[a.t("provider.trust.batch.workspaceBlocked",i),a.t("provider.trust.batch.question",i),a.t("provider.trust.apply.singleToolInstruction")].join(`
617
617
  `),choices:[{id:"apply",label:a.t("provider.trust.option.apply",i)},{id:"skip",label:a.t("provider.trust.batch.option.skip",i)},{id:"abort",label:a.t("provider.trust.option.abort",i)}]}}function mee(t,e){return Je(t,`provider.readiness.status.${e}`,e)}async function hee(t,e,r){switch(t){case"provider_list":return aee(r);case"provider_health":return lee(e,r);case"provider_readiness":return cee(e,r);case"provider_trust_apply":return dee(e,r);case"provider_trust_apply_all":return uee(e,r);default:return{content:[{type:"text",text:`Unknown tool: ${t}`}],isError:!0}}}var aw={};tt(aw,{getTools:()=>Mee,handleTool:()=>Lee});import{existsSync as xee,readFileSync as Eee}from"fs";var nw={};tt(nw,{formatHostAssetsSetupSummary:()=>sw,getTools:()=>kee,handleTool:()=>Iee});import{existsSync as jM,readFileSync as gee}from"fs";import{readFile as yee}from"fs/promises";import Vr,{dirname as LM}from"path";import{fileURLToPath as vee,pathToFileURL as bee}from"url";var _ee=Vr.join(".agestra","installs","host-assets.json"),ew=p.object({host:p.enum(["auto","codex"]).optional().default("auto").describe("Host asset family to inspect. `auto` uses the connected MCP host."),scope:p.enum(["project","user"]).optional().default("user").describe("Install/check project-local or user-level host assets.")});function xn(t,e){return{content:[{type:"text",text:t}],isError:e}}function wee(t){return Vr.join(t,_ee)}function zM(t){if(!jM(Vr.join(t,"agents"))||!jM(Vr.join(t,"package.json")))return!1;try{return JSON.parse(gee(Vr.join(t,"package.json"),"utf8")).name==="agestra"}catch{return!1}}function NM(t){let e=Vr.resolve(t);for(;;){if(zM(e))return e;let r=LM(e);if(r===e)return null;e=r}}function FM(){let t=process.env.AGESTRA_BASE_DIR?.trim();if(t){let r=Vr.resolve(t);if(zM(r))return r}let e=LM(vee(import.meta.url));return NM(e)??NM(process.cwd())??process.cwd()}async function tw(t){let e=Vr.join(t,"scripts","host-assets","codex-assets.mjs");return import(bee(e).href)}function qM(t){return Vr.resolve(t.workspaceBaseDir??process.cwd())}async function Gd(t,e){let r=FM(),s=await tw(r),n=Vr.join(r,"agents"),o=Vr.join(r,"skills"),i=s.resolveAgestraHome(),a=qM(e),c=await s.loadCodexRoleSpecsFromAgentsDir(n),d=await s.loadCodexSkillSpecsFromSkillsDir(o);if(c.length===0)throw new Error(`No Codex role prompts were found in ${n}.`);let u=s.buildCodexHostAssetFiles({roles:c,skills:d,scope:t,homeDir:i,repoRoot:a}),l=[],f=[],h=[],m=[];for(let g of u){let y;try{y=await yee(g.path,"utf8")}catch(v){if(v?.code==="ENOENT"){f.push(g);continue}throw v}y===g.content?l.push(g):y.includes(s.MANAGED_MARKER)?h.push(g):m.push(g)}return{host:"codex",scope:t,sourceRoot:r,agentsDir:n,skillsDir:o,targetDir:s.resolveCodexAgentsDir({scope:t,homeDir:i,repoRoot:a}),skillsTargetDir:s.resolveCodexSkillsDir({scope:t,homeDir:i,repoRoot:a}),manifestPath:wee(i),roles:c,skills:d,files:u,current:l,missing:f,stale:h,conflicts:m}}function See(t){return t?.toLowerCase().includes("codex")??!1}function Gf(t,e){return t==="codex"||See(e.sessionContext?.hostKind)?"codex":null}function rw(t){return["# Agestra Host Assets","",`Current host: ${t.sessionContext?.hostKind??"(unknown)"}`,"Status: unsupported","Automatic setup: not run","",'Agestra did not install anything automatically. Pass `host: "codex"` to inspect or install Codex assets explicitly.'].join(`
618
618
  `)}function Q_(t){return t.conflicts.length>0?"conflict":t.stale.length>0?"stale":t.missing.length===t.files.length?"not-installed":t.missing.length>0?"partial":"current"}function Y_(t,e){return e.length===0?[]:[`${t}:`,...e.map(r=>`- ${r.assetKind??"asset"}:${r.assetName??r.roleName}: ${r.path}`)]}function X_(t,e){let r=[`Host: ${t.host}`,`Scope: ${t.scope}`,`Status: ${Q_(t)}`,`Installed/current: ${t.current.length}/${t.files.length}`,`Source agents: ${t.agentsDir}`,`Source skills: ${t.skillsDir}`,`Target agents: ${t.targetDir}`,`Target skills: ${t.skillsTargetDir}`,`Manifest: ${t.manifestPath}`];return e?(r.push(""),t.conflicts.length>0?(r.push(...Y_("Unmanaged conflicts",t.conflicts)),r.push(""),r.push("Refusing to overwrite conflicts. Move or remove those files before installing."),r):(r.push(...Y_("Missing",t.missing)),t.missing.length>0&&t.stale.length>0&&r.push(""),r.push(...Y_("Stale",t.stale)),t.missing.length===0&&t.stale.length===0?r.push("No install action is needed."):r.push("Run `host_assets_install` to install or refresh these assets."),r)):r}async function sw(t){if(Gf("auto",t)!=="codex")return[`- Current host: ${t.sessionContext?.hostKind??"(unknown)"}`,"- Host-native asset check: unavailable for this host (the host_assets_* MCP tools currently manage Codex assets only)","- Automatic setup: not run"];let r=await Gd("user",t),s=await Gd("project",t);return["- Host: codex",`- User scope status: ${Q_(r)} (${r.current.length}/${r.files.length} current)`,`- User scope agent target: ${r.targetDir}`,`- User scope skill target: ${r.skillsTargetDir}`,`- Project scope status: ${Q_(s)} (${s.current.length}/${s.files.length} current)`,`- Project scope agent target: ${s.targetDir}`,`- Project scope skill target: ${s.skillsTargetDir}`,`- Manifest: ${r.manifestPath}`,"- Recommended setup scope: user (project scope is opt-in for per-repo assets)"]}function kee(){return[{name:"host_assets_status",title:"Read Host Asset Status",description:"Check whether Codex host-native Agestra custom agents and skills are installed and current. The host_assets_* MCP tools currently manage Codex assets only.",inputSchema:{type:"object",properties:{host:{type:"string",enum:["auto","codex"],description:"Host asset family to inspect."},scope:{type:"string",enum:["project","user"],description:"Project-local or user-level assets."}},required:[]}},{name:"host_assets_install",title:"Install Host Assets",description:"Explicitly install or refresh Codex host-native Agestra assets by writing managed custom agent TOML files and skills.",inputSchema:{type:"object",properties:{host:{type:"string",enum:["auto","codex"],description:"Host asset family to install."},scope:{type:"string",enum:["project","user"],description:"Project-local or user-level assets."}},required:[]}},{name:"host_assets_uninstall",title:"Uninstall Host Assets",description:"Remove managed Codex host-native Agestra assets tracked in the Agestra host asset manifest.",inputSchema:{type:"object",properties:{host:{type:"string",enum:["auto","codex"],description:"Host asset family to uninstall."},scope:{type:"string",enum:["project","user"],description:"Project-local or user-level assets."}},required:[]}}]}async function Ree(t,e){let r=ew.parse(t??{});if(Gf(r.host,e)!=="codex")return xn(rw(e));let n=await Gd(r.scope,e);return xn(["# Agestra Host Assets","",...X_(n,!0)].join(`
619
619
  `))}async function $ee(t,e){let r=ew.parse(t??{});if(Gf(r.host,e)!=="codex")return xn(rw(e),!0);let n=await Gd(r.scope,e);if(n.conflicts.length>0)return xn(["# Agestra Host Assets Install","",...X_(n,!0)].join(`