@cjhyy/code-shell 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/README.md +35 -2
  3. package/dist/anthropic-DJXVKFMJ.js +1 -0
  4. package/dist/arena/index.js +1 -1
  5. package/dist/arena-MRBATZFD.js +3 -0
  6. package/dist/{chunk-EU3J7TBP.js → chunk-5QIVXFCT.js} +1 -1
  7. package/dist/{chunk-XXCZE2U2.js → chunk-AFMP73YP.js} +1 -1
  8. package/dist/{chunk-L7B2ORID.js → chunk-D3TVASD2.js} +2 -2
  9. package/dist/chunk-DI26OUIU.js +2 -0
  10. package/dist/chunk-FZXY554D.js +2 -0
  11. package/dist/chunk-GGVAOPI7.js +1 -0
  12. package/dist/chunk-GKAQH2DG.js +2 -0
  13. package/dist/chunk-GYNO4R7R.js +2 -0
  14. package/dist/{chunk-RERBX75D.js → chunk-K4HILJ6G.js} +3 -3
  15. package/dist/{chunk-2EUIMKJA.js → chunk-OWBYLMDD.js} +1 -1
  16. package/dist/chunk-SKIX2M5Z.js +4 -0
  17. package/dist/chunk-SV7H4FKT.js +3 -0
  18. package/dist/{chunk-2GJ7H5NC.js → chunk-WONQHE4P.js} +40 -40
  19. package/dist/{chunk-DEYFK6FP.js → chunk-X2S7ASQ2.js} +1 -1
  20. package/dist/chunk-Z5HKHAO7.js +336 -0
  21. package/dist/cli/commands/builtin/plugin-commands-registration.d.ts +12 -0
  22. package/dist/cli/commands/builtin/plugin-handler.d.ts +6 -0
  23. package/dist/cli/commands/registry.d.ts +9 -2
  24. package/dist/cli/main.js +138 -122
  25. package/dist/client-base-GSFXPP2Y.js +1 -0
  26. package/dist/devtools-FBX4HVVY.js +1 -0
  27. package/dist/engine/engine.d.ts +29 -0
  28. package/dist/engine/turn-loop.d.ts +25 -0
  29. package/dist/hooks/events.d.ts +84 -5
  30. package/dist/hooks/inject.d.ts +19 -0
  31. package/dist/hooks/shell-runner.d.ts +45 -0
  32. package/dist/index.d.ts +3 -2
  33. package/dist/index.js +1 -1
  34. package/dist/llm/api-key-sanitize.d.ts +22 -0
  35. package/dist/llm/providers/openai.d.ts +23 -0
  36. package/dist/llm/retry.d.ts +12 -0
  37. package/dist/llm/stream-watchdog.d.ts +42 -0
  38. package/dist/logging/logger.d.ts +14 -0
  39. package/dist/manager-4XKLZHKE.js +1 -0
  40. package/dist/mcp-manager-3JGHEJO3.js +1 -0
  41. package/dist/openai-OQ6LLN5J.js +1 -0
  42. package/dist/{openrouter-models-GZVCRWD2.js → openrouter-models-ZT4R2AE3.js} +1 -1
  43. package/dist/openrouter-sync-ARMVWY7S.js +1 -0
  44. package/dist/plugin-handler-GJISMH5Q.js +11 -0
  45. package/dist/plugins/gitOps.d.ts +23 -0
  46. package/dist/plugins/installedPlugins.d.ts +15 -0
  47. package/dist/plugins/knownMarketplaces.d.ts +10 -0
  48. package/dist/plugins/loadPluginHooks.d.ts +52 -0
  49. package/dist/plugins/marketplaceManager.d.ts +49 -0
  50. package/dist/plugins/parseMarketplaceInput.d.ts +16 -0
  51. package/dist/plugins/pluginCommandHook.d.ts +54 -0
  52. package/dist/plugins/pluginCommandsLoader.d.ts +25 -0
  53. package/dist/plugins/pluginInstaller.d.ts +36 -0
  54. package/dist/plugins/schemas.d.ts +9 -0
  55. package/dist/plugins/types.d.ts +73 -2
  56. package/dist/plugins/varRewrite.d.ts +42 -0
  57. package/dist/product/index.js +1 -1
  58. package/dist/protocol/helpers.d.ts +42 -0
  59. package/dist/render/clearTerminal.d.ts +9 -3
  60. package/dist/render/components/App.d.ts +1 -0
  61. package/dist/render/components/Static.d.ts +23 -0
  62. package/dist/render/devtools.d.ts +8 -4
  63. package/dist/render/dom.d.ts +2 -1
  64. package/dist/render/frame.d.ts +1 -0
  65. package/dist/render/index.d.ts +10 -0
  66. package/dist/render/ink.d.ts +24 -2
  67. package/dist/render/log-update.d.ts +12 -1
  68. package/dist/render/selection.d.ts +1 -1
  69. package/dist/run/index.js +1 -1
  70. package/dist/services/index.d.ts +1 -0
  71. package/dist/services/memory-orchestrator.d.ts +39 -0
  72. package/dist/settings/schema.d.ts +93 -6
  73. package/dist/skills/frontmatter.d.ts +13 -0
  74. package/dist/skills/index.d.ts +4 -4
  75. package/dist/skills/scanner.d.ts +11 -21
  76. package/dist/tool-summary-HJX6RHG4.js +2 -0
  77. package/dist/tool-system/builtin/agent-notifications.d.ts +55 -0
  78. package/dist/tool-system/builtin/agent-registry.d.ts +35 -4
  79. package/dist/tool-system/builtin/agent-transcript-translator.d.ts +22 -0
  80. package/dist/tool-system/builtin/skill-prompt.d.ts +7 -0
  81. package/dist/tool-system/builtin/skill.d.ts +3 -1
  82. package/dist/tool-system/context.d.ts +23 -0
  83. package/dist/tool-system/executor.d.ts +1 -1
  84. package/dist/tool-system/permission.d.ts +1 -1
  85. package/dist/types.d.ts +35 -0
  86. package/dist/ui/components/AgentBlock.d.ts +5 -2
  87. package/dist/ui/components/AgentDock.d.ts +36 -0
  88. package/dist/ui/components/CommandInput.d.ts +12 -1
  89. package/dist/ui/components/MessageRow.d.ts +54 -0
  90. package/dist/ui/components/SpinnerWithVerb.d.ts +2 -1
  91. package/dist/ui/components/TextInput.d.ts +9 -1
  92. package/dist/ui/components/VirtualMessageList.d.ts +30 -11
  93. package/dist/ui/dev-seed.d.ts +1 -0
  94. package/dist/ui/fullscreen-mode.d.ts +9 -0
  95. package/dist/ui/hooks/useVirtualScroll.d.ts +101 -0
  96. package/dist/ui/perf-probes.d.ts +22 -0
  97. package/dist/ui/query-guard.d.ts +35 -0
  98. package/dist/ui/slice-anchor.d.ts +44 -0
  99. package/dist/ui/store.d.ts +26 -1
  100. package/package.json +5 -3
  101. package/dist/anthropic-OVRWAZRD.js +0 -1
  102. package/dist/arena-64T2EQD4.js +0 -3
  103. package/dist/chunk-A4M2Y42L.js +0 -2
  104. package/dist/chunk-DTPABBSV.js +0 -2
  105. package/dist/chunk-MGP35GKD.js +0 -254
  106. package/dist/chunk-Q3RSX66I.js +0 -1
  107. package/dist/chunk-VKKU4LOM.js +0 -3
  108. package/dist/chunk-ZSAONDT6.js +0 -2
  109. package/dist/client-base-F5FCRSB3.js +0 -1
  110. package/dist/devtools-SGDUOOM4.js +0 -1
  111. package/dist/manager-J6FXEUEK.js +0 -1
  112. package/dist/mcp-manager-27EVBKRT.js +0 -1
  113. package/dist/openai-3QEADSYL.js +0 -1
  114. package/dist/openrouter-sync-WG4AG5NC.js +0 -1
  115. package/dist/plugins/loader.d.ts +0 -72
  116. package/dist/skills/matcher.d.ts +0 -21
  117. package/dist/tool-summary-V2B3MD5N.js +0 -2
  118. package/skills-builtin/codeshell-help.md +0 -135
@@ -1,4 +1,4 @@
1
- import {c}from'./chunk-A4M2Y42L.js';import {b as b$1}from'./chunk-FU7AHZNN.js';import {b}from'./chunk-ZSAONDT6.js';import {h,a}from'./chunk-3QP5BQ3L.js';import {execFile,execFileSync}from'child_process';import {existsSync,statSync,readFileSync,readdirSync,mkdirSync,writeFileSync,renameSync}from'fs';import {readdir,stat}from'fs/promises';import {resolve,join,extname}from'path';import {promisify}from'util';import {createHash}from'crypto';import {homedir}from'os';import R from'chalk';h();var Se=new Map;function He(n,e){Se.set(n,e);}a(He,"registerProvider");async function F(n){let e=Se.get(n.provider);if(!e){if(n.provider==="anthropic"){let{AnthropicClient:t}=await import('./anthropic-OVRWAZRD.js');He("anthropic",t),e=t;}else if(n.provider==="openai"){let{OpenAIClient:t}=await import('./openai-3QEADSYL.js');He("openai",t),e=t;}}if(!e)throw new b$1(`Unknown LLM provider: ${n.provider}. Available: ${[...Se.keys()].join(", ")}`);return new e(n)}a(F,"createLLMClient");h();var Xe={review:{maxDiscussionRounds:3,convergenceThreshold:200},discussion:{maxDiscussionRounds:4,convergenceThreshold:300},planning:{maxDiscussionRounds:5,convergenceThreshold:400}},Qe={maxClaimsForReview:12,maxContestedClaimsForDebate:5,maxRequestedChecksPerClaimPerRound:2,maxReviewersPerClaim:2,maxRoadmapPhases:6,maxExpandedPhasesPerRun:6};function te(n){return typeof n.detailExpansionUserPrompt=="function"}a(te,"isStrategyPlanning");function U(n){return typeof n.verificationReviewUserPrompt=="function"}a(U,"isStrategyV2");h();h();function M(n){return typeof n=="string"?n:n==null?"":typeof n=="number"||typeof n=="boolean"?String(n):""}a(M,"asString");function K(n){return n?n.replace(/<\/?(?:system|assistant|user|system-reminder)[^>]*>/gi,"").replace(/^(?:IGNORE|DISREGARD|FORGET|OVERRIDE|SYSTEM|INSTRUCTION)[:\s].*/gim,"").slice(0,3e3):""}a(K,"sanitizeForPrompt");function H(n){let e=n.match(/```(?:json)?\s*\n([\s\S]*)\n\s*```/);if(e)return e[1].trim();let t=n.indexOf("{");if(t!==-1){let r=0,i=false,o=false;for(let s=t;s<n.length;s++){let c=n[s];if(o){o=false;continue}if(c==="\\"){o=true;continue}if(c==='"'){i=!i;continue}if(!i){if(c==="{")r++;else if(c==="}"&&(r--,r===0))return n.slice(t,s+1)}}return n.slice(t)}return n}a(H,"extractJSON");function tn(n){let e=n.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);if(e)return e[1].trim();let t=n.match(/\[[\s\S]*\]/);return t?t[0]:n}a(tn,"extractJSONArray");function se(n){let e=[];n.quickFacts.length>0&&e.push(`## Quick Facts
1
+ import {c}from'./chunk-GKAQH2DG.js';import {b}from'./chunk-FU7AHZNN.js';import {d}from'./chunk-DI26OUIU.js';import {h,a}from'./chunk-3QP5BQ3L.js';import {execFile,execFileSync}from'child_process';import {existsSync,statSync,readFileSync,readdirSync,mkdirSync,writeFileSync,renameSync}from'fs';import {readdir,stat}from'fs/promises';import {resolve,join,extname}from'path';import {promisify}from'util';import {createHash}from'crypto';import {homedir}from'os';import R from'chalk';h();var Se=new Map;function Xe(n,e){Se.set(n,e);}a(Xe,"registerProvider");async function F(n){let e=Se.get(n.provider);if(!e){if(n.provider==="anthropic"){let{AnthropicClient:t}=await import('./anthropic-DJXVKFMJ.js');Xe("anthropic",t),e=t;}else if(n.provider==="openai"){let{OpenAIClient:t}=await import('./openai-OQ6LLN5J.js');Xe("openai",t),e=t;}}if(!e)throw new b(`Unknown LLM provider: ${n.provider}. Available: ${[...Se.keys()].join(", ")}`);return new e(n)}a(F,"createLLMClient");h();var Qe={review:{maxDiscussionRounds:3,convergenceThreshold:200},discussion:{maxDiscussionRounds:4,convergenceThreshold:300},planning:{maxDiscussionRounds:5,convergenceThreshold:400}},Ze={maxClaimsForReview:12,maxContestedClaimsForDebate:5,maxRequestedChecksPerClaimPerRound:2,maxReviewersPerClaim:2,maxRoadmapPhases:6,maxExpandedPhasesPerRun:6};function te(n){return typeof n.detailExpansionUserPrompt=="function"}a(te,"isStrategyPlanning");function U(n){return typeof n.verificationReviewUserPrompt=="function"}a(U,"isStrategyV2");h();h();function M(n){return typeof n=="string"?n:n==null?"":typeof n=="number"||typeof n=="boolean"?String(n):""}a(M,"asString");function K(n){return n?n.replace(/<\/?(?:system|assistant|user|system-reminder)[^>]*>/gi,"").replace(/^(?:IGNORE|DISREGARD|FORGET|OVERRIDE|SYSTEM|INSTRUCTION)[:\s].*/gim,"").slice(0,3e3):""}a(K,"sanitizeForPrompt");function H(n){let e=n.match(/```(?:json)?\s*\n([\s\S]*)\n\s*```/);if(e)return e[1].trim();let t=n.indexOf("{");if(t!==-1){let r=0,i=false,o=false;for(let s=t;s<n.length;s++){let c=n[s];if(o){o=false;continue}if(c==="\\"){o=true;continue}if(c==='"'){i=!i;continue}if(!i){if(c==="{")r++;else if(c==="}"&&(r--,r===0))return n.slice(t,s+1)}}return n.slice(t)}return n}a(H,"extractJSON");function rn(n){let e=n.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);if(e)return e[1].trim();let t=n.match(/\[[\s\S]*\]/);return t?t[0]:n}a(rn,"extractJSONArray");function se(n){let e=[];n.quickFacts.length>0&&e.push(`## Quick Facts
2
2
  ${n.quickFacts.map(t=>`- ${t.label}: ${t.value}`).join(`
3
3
  `)}`);for(let t of n.artifacts){let r=t.ref?`${t.title} (${t.ref})`:t.title;e.push(`## ${t.kind.toUpperCase()}: ${r}
4
4
  \`\`\`
@@ -17,8 +17,8 @@ Findings:
17
17
  ${t}`}).join(`
18
18
 
19
19
  `)}a(E,"formatReports");function V(n){return n.length===0?"No peer reviews.":n.map(e=>`[${e.reviewer}] on ${e.findingId}: ${e.verdict}${e.reason?` \u2014 ${e.reason}`:""}`).join(`
20
- `)}a(V,"formatFindingReviews");function oe(n,e){if(!e||e.trim().length===0)return b.warn("arena.parse_report_empty",{participant:n}),{participant:n,contextSummary:"(no response)",findings:[]};let t=ct(n,e);if(t&&t.findings.length>0)return t;try{let r=H(e),i=JSON.parse(r),o=i.findings;!Array.isArray(o)&&i.contextSummary===void 0&&i.kind&&i.title&&(o=[i]);let s={participant:n,contextSummary:i.contextSummary??i.context_summary??"",findings:Array.isArray(o)?o.map(dt):[]};if(s.findings.length>0)return s}catch(r){b.warn("arena.parse_report_json_fail",{participant:n,error:r.message,textLength:e.length,text:e.slice(0,500)});}return t?(b.warn("arena.parse_report_no_findings",{participant:n,textPreview:e.slice(0,200)}),t):lt(n,e)}a(oe,"parseReport");function ct(n,e){let t=e.match(/<report\b[^>]*>([\s\S]*?)<\/report>/i);if(!t)return;let r=t[1],i=ie(re(r,"contextSummary")??""),o=re(r,"findings")??"",s=[],c=0;for(let m of o.matchAll(/<finding\b([^>]*)>([\s\S]*?)<\/finding>/gi)){let d=Ze(m[1]),l=m[2],p=ie(re(l,"title")??""),g=ie(re(l,"summary")??""),u=[];for(let $ of l.matchAll(/<evidence\b([^>]*)>([\s\S]*?)<\/evidence>/gi)){let b=Ze($[1]);u.push({type:b.type??"doc",ref:b.ref??"",note:ie($[2].trim())});}let h=re(l,"affectedFiles")??"",y=[];for(let $ of h.matchAll(/<file>([\s\S]*?)<\/file>/gi))y.push(ie($[1].trim()));let w=ie(re(l,"suggestedChange")??"").trim(),A=Number(d.confidence);s.push({id:d.id||`f${c+1}`,kind:rn(d.kind),title:p||"Untitled",summary:g,severity:d.severity||void 0,confidence:Number.isFinite(A)?A:.5,evidence:u,affectedFiles:y,suggestedChange:w||void 0}),c++;}return {participant:n,contextSummary:i,findings:s}}a(ct,"tryParseReportXml");function re(n,e){let t=new RegExp(`<${e}\\b[^>]*>([\\s\\S]*?)<\\/${e}>`,"i");return n.match(t)?.[1]}a(re,"extractTag");function Ze(n){let e={};for(let t of n.matchAll(/(\w+)\s*=\s*"([^"]*)"/g))e[t[1]]=t[2];return e}a(Ze,"parseAttrs");function ie(n){return n.replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g,"$1").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&").trim()}a(ie,"decodeXmlText");function dt(n,e){return {id:M(n.id)||`f${e+1}`,kind:rn(n.kind),title:M(n.title)||"Untitled",summary:M(n.summary),severity:n.severity||void 0,confidence:typeof n.confidence=="number"?n.confidence:.5,evidence:Array.isArray(n.evidence)?n.evidence.map(t=>({type:t.type??"doc",ref:t.ref??"",note:t.note??""})):[],affectedFiles:Array.isArray(n.affectedFiles)?n.affectedFiles:[],suggestedChange:n.suggestedChange||void 0}}a(dt,"parseFinding");function rn(n){return n==="strength"||n==="improvement"||n==="risk"||n==="question"?n:"improvement"}a(rn,"validateFindingKind");function lt(n,e){let t=e.split(/(?:^|\n)(?:#{1,3}\s+|\d+\.\s+|\*\*[^*]+\*\*\s*\n|---+\s*\n)/m).map(i=>i.trim()).filter(i=>i.length>20);if(t.length===0)return {participant:n,contextSummary:e.slice(0,200),findings:[{id:`${n}-f1`,kind:"improvement",title:"Analysis",summary:e.slice(0,3e3),confidence:.5,evidence:[],affectedFiles:[]}]};let r=t.slice(0,10).map((i,o)=>{let s=i.split(`
21
- `)[0].slice(0,100),c=i.length>s.length?i.slice(s.length).trim():i;return {id:`${n}-f${o+1}`,kind:pt(i),title:s.replace(/^[-*•]\s*/,"").replace(/\*\*/g,""),summary:c.slice(0,1e3),confidence:.5,evidence:[],affectedFiles:ut(i)}});return {participant:n,contextSummary:e.slice(0,200),findings:r}}a(lt,"extractFindingsFromFreeText");function pt(n){let e=n.toLowerCase();return /\b(risk|danger|vulnerab|security|breaking|regression|critical)\b/.test(e)?"risk":/\b(good|well|strength|clean|solid|nice|excellent|properly)\b/.test(e)?"strength":/\b(question|unclear|confirm|clarif|why|how come|wonder)\b/.test(e)?"question":"improvement"}a(pt,"classifyFindingKind");function ut(n){let e=n.match(/(?:^|\s)((?:src|lib|packages|app)\/[\w\-/.]+\.\w+)/gm);return e?[...new Set(e.map(t=>t.trim()))]:[]}a(ut,"extractFilePaths");function ae(n,e){try{let t=tn(e),r=JSON.parse(t);if(!Array.isArray(r)){let i=H(e),o=JSON.parse(i);return Array.isArray(o.reviews)?o.reviews.map(s=>en(n,s)):[]}return r.map(i=>en(n,i))}catch{return []}}a(ae,"parseReviews");function en(n,e){return {reviewer:n,findingId:e.findingId??e.finding_id??"",verdict:sn(e.verdict),reason:e.reason??"",extraEvidence:Array.isArray(e.extraEvidence)?e.extraEvidence:void 0}}a(en,"parseReview");function sn(n){return n==="agree"||n==="refine"||n==="disagree"||n==="needs_evidence"?n:"agree"}a(sn,"validateVerdict");function ce(n){try{let e=H(n),t=JSON.parse(e);if(typeof t!="object"||t===null)throw new Error("parsed JSON is not an object");return {summary:M(t.summary),subjectSummary:M(t.subjectSummary||t.changeSummary)||void 0,strengths:Re(t.strengths),improvements:Re(t.improvements),risks:Re(t.risks),openQuestions:Re(t.openQuestions),roadmap:mt(t.roadmap),nextActions:Array.isArray(t.nextActions)?t.nextActions.map(r=>({title:r.title??"",priority:on(r.priority),rationale:r.rationale??"",relatedFindings:Array.isArray(r.relatedFindings)?r.relatedFindings:[]})):[]}}catch{return {summary:n,strengths:[],improvements:[],risks:[],openQuestions:[],roadmap:[],nextActions:[]}}}a(ce,"parseConsensus");function Re(n){return Array.isArray(n)?n.map(e=>({title:M(e.title),summary:e.summary??"",support:Array.isArray(e.support)?e.support:[],challenge:Array.isArray(e.challenge)?e.challenge:[],confidence:typeof e.confidence=="number"?e.confidence:.5,evidenceRefs:Array.isArray(e.evidenceRefs)?e.evidenceRefs:[]})):[]}a(Re,"parseConsensusItems");function mt(n){return Array.isArray(n)?n.map(e=>({title:e.title??"",priority:on(e.priority),goal:e.goal??e.description??"",scope:N(e.scope),deliverables:N(e.deliverables),dependencies:N(e.dependencies),risks:N(e.risks),successCriteria:N(e.successCriteria),relatedFindings:N(e.relatedFindings)})):[]}a(mt,"parseRoadmapPhases");function on(n){return n==="high"||n==="medium"||n==="low"?n:"medium"}a(on,"validatePriority");function N(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"):[]}a(N,"toStringArray");function X(n){return n.length===0?"No claims to review.":n.map(e=>{let t=e.finding,r=e.evidenceRefs.length>0?`
20
+ `)}a(V,"formatFindingReviews");function oe(n,e){if(!e||e.trim().length===0)return d.warn("arena.parse_report_empty",{participant:n}),{participant:n,contextSummary:"(no response)",findings:[]};let t=ft(n,e);if(t&&t.findings.length>0)return t;try{let r=H(e),i=JSON.parse(r),o=i.findings;!Array.isArray(o)&&i.contextSummary===void 0&&i.kind&&i.title&&(o=[i]);let s={participant:n,contextSummary:i.contextSummary??i.context_summary??"",findings:Array.isArray(o)?o.map(ht):[]};if(s.findings.length>0)return s}catch(r){d.warn("arena.parse_report_json_fail",{participant:n,error:r.message,textLength:e.length,text:e.slice(0,500)});}return t?(d.warn("arena.parse_report_no_findings",{participant:n,textPreview:e.slice(0,200)}),t):yt(n,e)}a(oe,"parseReport");function ft(n,e){let t=e.match(/<report\b[^>]*>([\s\S]*?)<\/report>/i);if(!t)return;let r=t[1],i=ie(re(r,"contextSummary")??""),o=re(r,"findings")??"",s=[],c=0;for(let m of o.matchAll(/<finding\b([^>]*)>([\s\S]*?)<\/finding>/gi)){let d=en(m[1]),l=m[2],p=ie(re(l,"title")??""),g=ie(re(l,"summary")??""),u=[];for(let $ of l.matchAll(/<evidence\b([^>]*)>([\s\S]*?)<\/evidence>/gi)){let b=en($[1]);u.push({type:b.type??"doc",ref:b.ref??"",note:ie($[2].trim())});}let h=re(l,"affectedFiles")??"",y=[];for(let $ of h.matchAll(/<file>([\s\S]*?)<\/file>/gi))y.push(ie($[1].trim()));let w=ie(re(l,"suggestedChange")??"").trim(),A=Number(d.confidence);s.push({id:d.id||`f${c+1}`,kind:sn(d.kind),title:p||"Untitled",summary:g,severity:d.severity||void 0,confidence:Number.isFinite(A)?A:.5,evidence:u,affectedFiles:y,suggestedChange:w||void 0}),c++;}return {participant:n,contextSummary:i,findings:s}}a(ft,"tryParseReportXml");function re(n,e){let t=new RegExp(`<${e}\\b[^>]*>([\\s\\S]*?)<\\/${e}>`,"i");return n.match(t)?.[1]}a(re,"extractTag");function en(n){let e={};for(let t of n.matchAll(/(\w+)\s*=\s*"([^"]*)"/g))e[t[1]]=t[2];return e}a(en,"parseAttrs");function ie(n){return n.replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g,"$1").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&").trim()}a(ie,"decodeXmlText");function ht(n,e){return {id:M(n.id)||`f${e+1}`,kind:sn(n.kind),title:M(n.title)||"Untitled",summary:M(n.summary),severity:n.severity||void 0,confidence:typeof n.confidence=="number"?n.confidence:.5,evidence:Array.isArray(n.evidence)?n.evidence.map(t=>({type:t.type??"doc",ref:t.ref??"",note:t.note??""})):[],affectedFiles:Array.isArray(n.affectedFiles)?n.affectedFiles:[],suggestedChange:n.suggestedChange||void 0}}a(ht,"parseFinding");function sn(n){return n==="strength"||n==="improvement"||n==="risk"||n==="question"?n:"improvement"}a(sn,"validateFindingKind");function yt(n,e){let t=e.split(/(?:^|\n)(?:#{1,3}\s+|\d+\.\s+|\*\*[^*]+\*\*\s*\n|---+\s*\n)/m).map(i=>i.trim()).filter(i=>i.length>20);if(t.length===0)return {participant:n,contextSummary:e.slice(0,200),findings:[{id:`${n}-f1`,kind:"improvement",title:"Analysis",summary:e.slice(0,3e3),confidence:.5,evidence:[],affectedFiles:[]}]};let r=t.slice(0,10).map((i,o)=>{let s=i.split(`
21
+ `)[0].slice(0,100),c=i.length>s.length?i.slice(s.length).trim():i;return {id:`${n}-f${o+1}`,kind:vt(i),title:s.replace(/^[-*•]\s*/,"").replace(/\*\*/g,""),summary:c.slice(0,1e3),confidence:.5,evidence:[],affectedFiles:Rt(i)}});return {participant:n,contextSummary:e.slice(0,200),findings:r}}a(yt,"extractFindingsFromFreeText");function vt(n){let e=n.toLowerCase();return /\b(risk|danger|vulnerab|security|breaking|regression|critical)\b/.test(e)?"risk":/\b(good|well|strength|clean|solid|nice|excellent|properly)\b/.test(e)?"strength":/\b(question|unclear|confirm|clarif|why|how come|wonder)\b/.test(e)?"question":"improvement"}a(vt,"classifyFindingKind");function Rt(n){let e=n.match(/(?:^|\s)((?:src|lib|packages|app)\/[\w\-/.]+\.\w+)/gm);return e?[...new Set(e.map(t=>t.trim()))]:[]}a(Rt,"extractFilePaths");function ae(n,e){try{let t=rn(e),r=JSON.parse(t);if(!Array.isArray(r)){let i=H(e),o=JSON.parse(i);return Array.isArray(o.reviews)?o.reviews.map(s=>nn(n,s)):[]}return r.map(i=>nn(n,i))}catch{return []}}a(ae,"parseReviews");function nn(n,e){return {reviewer:n,findingId:e.findingId??e.finding_id??"",verdict:on(e.verdict),reason:e.reason??"",extraEvidence:Array.isArray(e.extraEvidence)?e.extraEvidence:void 0}}a(nn,"parseReview");function on(n){return n==="agree"||n==="refine"||n==="disagree"||n==="needs_evidence"?n:"agree"}a(on,"validateVerdict");function ce(n){try{let e=H(n),t=JSON.parse(e);if(typeof t!="object"||t===null)throw new Error("parsed JSON is not an object");return {summary:M(t.summary),subjectSummary:M(t.subjectSummary||t.changeSummary)||void 0,strengths:Re(t.strengths),improvements:Re(t.improvements),risks:Re(t.risks),openQuestions:Re(t.openQuestions),roadmap:wt(t.roadmap),nextActions:Array.isArray(t.nextActions)?t.nextActions.map(r=>({title:r.title??"",priority:an(r.priority),rationale:r.rationale??"",relatedFindings:Array.isArray(r.relatedFindings)?r.relatedFindings:[]})):[]}}catch{return {summary:n,strengths:[],improvements:[],risks:[],openQuestions:[],roadmap:[],nextActions:[]}}}a(ce,"parseConsensus");function Re(n){return Array.isArray(n)?n.map(e=>({title:M(e.title),summary:e.summary??"",support:Array.isArray(e.support)?e.support:[],challenge:Array.isArray(e.challenge)?e.challenge:[],confidence:typeof e.confidence=="number"?e.confidence:.5,evidenceRefs:Array.isArray(e.evidenceRefs)?e.evidenceRefs:[]})):[]}a(Re,"parseConsensusItems");function wt(n){return Array.isArray(n)?n.map(e=>({title:e.title??"",priority:an(e.priority),goal:e.goal??e.description??"",scope:N(e.scope),deliverables:N(e.deliverables),dependencies:N(e.dependencies),risks:N(e.risks),successCriteria:N(e.successCriteria),relatedFindings:N(e.relatedFindings)})):[]}a(wt,"parseRoadmapPhases");function an(n){return n==="high"||n==="medium"||n==="low"?n:"medium"}a(an,"validatePriority");function N(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"):[]}a(N,"toStringArray");function X(n){return n.length===0?"No claims to review.":n.map(e=>{let t=e.finding,r=e.evidenceRefs.length>0?`
22
22
  Evidence: ${e.evidenceRefs.join(", ")}`:"",i=e.evidencePacketIds.length>0?`
23
23
  Evidence packets: ${e.evidencePacketIds.join(", ")}`:"";return `- [${e.claimId}] (${t.kind}${t.severity?`, ${t.severity}`:""}, status: ${e.status})
24
24
  ${K(t.title)}
@@ -41,7 +41,7 @@ ${t}`}).join(`
41
41
  `):"No claims processed."}a(de,"formatClaimSummaryForConsensus");function I(n){let e=[];if(e.push(`Claims under review: ${n.relevantClaimIds.join(", ")}`),n.evidencePackets.length>0){e.push(`
42
42
  Evidence:`);for(let t of n.evidencePackets){e.push(` [${t.packetId}] ${K(t.title)} (${t.source}): ${K(t.summary)}`);for(let r of t.excerpts.slice(0,2))e.push(` > ${r.ref}: ${K(r.snippet)}`);}}if(n.recentChallenges.length>0){e.push(`
43
43
  Prior challenges:`);for(let t of n.recentChallenges)e.push(` [${t.reviewer}] on ${t.claimId}: ${t.verdict} \u2014 ${K(t.reason)}`);}return e.join(`
44
- `)}a(I,"formatDigestForPrompt");function Q(n,e){try{let t=tn(e),r=JSON.parse(t);if(!Array.isArray(r)){let i=H(e),o=JSON.parse(i);return Array.isArray(o.challenges)?o.challenges.map(s=>nn(n,s)):[]}return r.map(i=>nn(n,i))}catch{return []}}a(Q,"parseChallenges");function nn(n,e){return {reviewer:n,claimId:M(e.claimId??e.claim_id),verdict:sn(e.verdict),reason:M(e.reason),supportingEvidenceRefs:Array.isArray(e.supportingEvidenceRefs)?e.supportingEvidenceRefs:void 0,requestedChecks:Array.isArray(e.requestedChecks)?e.requestedChecks.map(t=>({requestId:t.requestId??`req-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,claimId:e.claimId??e.claim_id??"",requester:n,description:t.description??"",refs:Array.isArray(t.refs)?t.refs:void 0,priority:gt(t.priority)})):void 0}}a(nn,"parseChallenge");function gt(n){if(n==="high"||n==="medium"||n==="low")return n}a(gt,"validateCheckPriority");function z(n,e){try{let t=H(e),r=JSON.parse(t);return {participant:n,stance:ft(r.stance),summary:r.summary??r.argument??"",newEvidenceRefs:Array.isArray(r.newEvidenceRefs)?r.newEvidenceRefs:void 0}}catch{return {participant:n,stance:"uncertain",summary:e.slice(0,1e3)}}}a(z,"parseDebateTurn");function ft(n){return n==="support"||n==="oppose"||n==="narrow"||n==="uncertain"?n:"uncertain"}a(ft,"validateStance");function W(n,e){try{let t=H(e),r=JSON.parse(t);return {claimId:n,outcome:ht(r.outcome),rationale:M(r.rationale),finalSummary:M(r.finalSummary??r.summary),supportingEvidenceRefs:Array.isArray(r.supportingEvidenceRefs)?r.supportingEvidenceRefs:[]}}catch{return {claimId:n,outcome:"unresolved",rationale:"Failed to parse adjudication response",finalSummary:e.slice(0,500),supportingEvidenceRefs:[]}}}a(W,"parseAdjudication");function ht(n){return n==="accepted"||n==="accepted_with_revision"||n==="rejected"||n==="unresolved"?n:"unresolved"}a(ht,"validateAdjudicationOutcome");function an(n){try{let e=H(n),t=JSON.parse(e);if(typeof t!="object"||t===null)throw new Error("parsed JSON is not an object");return {phaseTitle:M(t.phaseTitle),objective:M(t.objective),targetFiles:N(t.targetFiles),codeChanges:N(t.codeChanges),interfaces:N(t.interfaces),migrationSteps:N(t.migrationSteps),validation:N(t.validation),effort:yt(t.effort),blockers:N(t.blockers),evidenceRefs:N(t.evidenceRefs)}}catch{return {phaseTitle:"",objective:n.slice(0,500),targetFiles:[],codeChanges:[],interfaces:[],migrationSteps:[],validation:[],effort:"medium",blockers:[],evidenceRefs:[]}}}a(an,"parseDetailExpansion");function yt(n){return n==="small"||n==="medium"||n==="large"?n:"medium"}a(yt,"validateEffort");var me=class{static{a(this,"ReviewStrategy");}researchSystemPrompt(e){return `You are ${e}, a reviewer in a multi-model review arena.
44
+ `)}a(I,"formatDigestForPrompt");function Q(n,e){try{let t=rn(e),r=JSON.parse(t);if(!Array.isArray(r)){let i=H(e),o=JSON.parse(i);return Array.isArray(o.challenges)?o.challenges.map(s=>tn(n,s)):[]}return r.map(i=>tn(n,i))}catch{return []}}a(Q,"parseChallenges");function tn(n,e){return {reviewer:n,claimId:M(e.claimId??e.claim_id),verdict:on(e.verdict),reason:M(e.reason),supportingEvidenceRefs:Array.isArray(e.supportingEvidenceRefs)?e.supportingEvidenceRefs:void 0,requestedChecks:Array.isArray(e.requestedChecks)?e.requestedChecks.map(t=>({requestId:t.requestId??`req-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,claimId:e.claimId??e.claim_id??"",requester:n,description:t.description??"",refs:Array.isArray(t.refs)?t.refs:void 0,priority:At(t.priority)})):void 0}}a(tn,"parseChallenge");function At(n){if(n==="high"||n==="medium"||n==="low")return n}a(At,"validateCheckPriority");function J(n,e){try{let t=H(e),r=JSON.parse(t);return {participant:n,stance:bt(r.stance),summary:r.summary??r.argument??"",newEvidenceRefs:Array.isArray(r.newEvidenceRefs)?r.newEvidenceRefs:void 0}}catch{return {participant:n,stance:"uncertain",summary:e.slice(0,1e3)}}}a(J,"parseDebateTurn");function bt(n){return n==="support"||n==="oppose"||n==="narrow"||n==="uncertain"?n:"uncertain"}a(bt,"validateStance");function W(n,e){try{let t=H(e),r=JSON.parse(t);return {claimId:n,outcome:Ct(r.outcome),rationale:M(r.rationale),finalSummary:M(r.finalSummary??r.summary),supportingEvidenceRefs:Array.isArray(r.supportingEvidenceRefs)?r.supportingEvidenceRefs:[]}}catch{return {claimId:n,outcome:"unresolved",rationale:"Failed to parse adjudication response",finalSummary:e.slice(0,500),supportingEvidenceRefs:[]}}}a(W,"parseAdjudication");function Ct(n){return n==="accepted"||n==="accepted_with_revision"||n==="rejected"||n==="unresolved"?n:"unresolved"}a(Ct,"validateAdjudicationOutcome");function cn(n){try{let e=H(n),t=JSON.parse(e);if(typeof t!="object"||t===null)throw new Error("parsed JSON is not an object");return {phaseTitle:M(t.phaseTitle),objective:M(t.objective),targetFiles:N(t.targetFiles),codeChanges:N(t.codeChanges),interfaces:N(t.interfaces),migrationSteps:N(t.migrationSteps),validation:N(t.validation),effort:Pt(t.effort),blockers:N(t.blockers),evidenceRefs:N(t.evidenceRefs)}}catch{return {phaseTitle:"",objective:n.slice(0,500),targetFiles:[],codeChanges:[],interfaces:[],migrationSteps:[],validation:[],effort:"medium",blockers:[],evidenceRefs:[]}}}a(cn,"parseDetailExpansion");function Pt(n){return n==="small"||n==="medium"||n==="large"?n:"medium"}a(Pt,"validateEffort");var me=class{static{a(this,"ReviewStrategy");}researchSystemPrompt(e){return `You are ${e}, a reviewer in a multi-model review arena.
45
45
 
46
46
  You may have access to read-only tools to fetch additional context. The base context is intentionally lean \u2014 use tools to inspect details as needed.
47
47
 
@@ -148,7 +148,7 @@ ${I(i)}
148
148
 
149
149
  State your position on this claim. Build on prior turns: cite specific evidence, acknowledge counter-arguments, and explain your reasoning in 150-300 words. Brevity here means missed nuance \u2014 depth wins.
150
150
  Respond ONLY with JSON:
151
- {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return z(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
151
+ {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return J(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
152
152
  ${B(s.participants)}
153
153
  ${s.resolved?"\u2192 Resolved":"\u2192 Unresolved"}`).join(`
154
154
 
@@ -277,7 +277,7 @@ ${I(i)}
277
277
 
278
278
  Engage thoughtfully. If the evidence supports the claim, narrow toward agreement. If not, explain why with evidence.
279
279
  Respond ONLY with JSON:
280
- {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return z(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
280
+ {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return J(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
281
281
  ${B(s.participants)}
282
282
  ${s.resolved?"\u2192 Resolved":"\u2192 Unresolved"}`).join(`
283
283
 
@@ -402,7 +402,7 @@ ${I(i)}
402
402
 
403
403
  Argue for or against this proposal. Focus on feasibility, risks, and better alternatives.
404
404
  Respond ONLY with JSON:
405
- {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return z(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
405
+ {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return J(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
406
406
  ${B(s.participants)}
407
407
  ${s.resolved?"\u2192 Resolved":"\u2192 Unresolved"}`).join(`
408
408
 
@@ -484,7 +484,7 @@ Answer these questions:
484
484
  4. What are the migration steps (in order)?
485
485
  5. How do we validate the changes?
486
486
  6. What is the effort estimate?
487
- 7. What are the blockers?`}parseDetailExpansionResponse(e){return an(e)}claimAwareConsensusUserPrompt(e,t,r,i){return `## Topic
487
+ 7. What are the blockers?`}parseDetailExpansionResponse(e){return cn(e)}claimAwareConsensusUserPrompt(e,t,r,i){return `## Topic
488
488
  ${e}
489
489
 
490
490
  ## Claim Verification Status
@@ -501,8 +501,8 @@ Requirements:
501
501
  - Verified claims should form the backbone of the roadmap.
502
502
  - Unresolved claims should appear as open questions or conditional phases.
503
503
  - Produce 3 to 6 roadmap phases with sequencing, dependencies, deliverables, and success criteria.
504
- - Use nextActions only for immediate follow-up work.`}};h();h();var ke={name:"engineering",label:"Engineering",participantRole:"a software engineer focused on code quality, correctness, and maintainability",reviewerRole:"an engineering peer reviewer evaluating technical rigor and code health",moderatorRole:"a tech lead synthesizing engineering perspectives into actionable conclusions",summaryLabel:"Engineering Assessment",criteria:["Code correctness and edge case handling","Error handling and resilience","Performance and scalability implications","API design and interface clarity","Test coverage and testability","Maintainability and readability","Security considerations","Backward compatibility"],preferredFindingKinds:["risk","improvement","strength","question"]};h();var xe={name:"product",label:"Product",participantRole:"a product analyst focused on user value, completeness, and edge cases",reviewerRole:"a product reviewer evaluating requirements coverage and user impact",moderatorRole:"a product lead synthesizing product perspectives into prioritized insights",summaryLabel:"Product Assessment",criteria:["Requirements completeness and coverage","User experience and usability","Edge cases and boundary conditions","Acceptance criteria clarity","Feature scope \u2014 too broad or too narrow","User journey coherence","Metric and success criteria definition","Stakeholder alignment"],preferredFindingKinds:["question","improvement","risk","strength"]};h();var $e={name:"architecture",label:"Architecture",participantRole:"a system architect focused on boundaries, modularity, and evolution paths",reviewerRole:"an architecture reviewer evaluating structural decisions and trade-offs",moderatorRole:"a chief architect synthesizing architectural perspectives into design guidance",summaryLabel:"Architecture Assessment",criteria:["Module boundaries and responsibility separation","Coupling and cohesion","Extensibility and evolution path","Dependency management","Data flow and state management","API surface area and abstraction levels","Migration and backward compatibility strategy","Operational concerns (monitoring, debugging, deployment)"],preferredFindingKinds:["improvement","risk","question","strength"]};h();var je={name:"general",label:"General",participantRole:"an analyst providing a broad, balanced perspective",reviewerRole:"a peer reviewer evaluating clarity, logic, and completeness",moderatorRole:"a neutral moderator synthesizing diverse perspectives into balanced conclusions",summaryLabel:"General Assessment",criteria:["Logical coherence and consistency","Completeness of analysis","Trade-off identification","Assumption clarity","Evidence quality","Actionability of recommendations"],preferredFindingKinds:["strength","risk","question","improvement"]};var cn={engineering:ke,product:xe,architecture:$e,general:je};function Ai(n){return cn[n]}a(Ai,"getLens");function dn(n){return n.map(e=>cn[e.name])}a(dn,"resolveLenses");function we(n,e){if(n.length===0)return "";let t=e==="participant"?"participantRole":e==="reviewer"?"reviewerRole":"moderatorRole",r=n.map(c=>c[t]),i=n.flatMap(c=>c.criteria),o=[...new Set(i)];return [n.length===1?`You are ${r[0]}.`:`You combine multiple perspectives: ${r.join("; ")}.`,"","Evaluation criteria (prioritized):",...o.map(c=>`- ${c}`)].join(`
505
- `)}a(we,"buildLensPrompt");var ln=["engineering","product","architecture","general"];h();h();function Te(n,e){let t=dn(e.lenses);if(t.length===0)return n;let r=we(t,"participant"),i=we(t,"reviewer"),o=we(t,"moderator"),s=_e(e,"participant"),c=_e(e,"reviewer"),m=_e(e,"moderator");return {researchSystemPrompt(d){return [n.researchSystemPrompt(d),"","\u2500\u2500 Analysis Perspective \u2500\u2500",r,"","\u2500\u2500 Scenario Support \u2500\u2500",s].join(`
504
+ - Use nextActions only for immediate follow-up work.`}};h();h();var ke={name:"engineering",label:"Engineering",participantRole:"a software engineer focused on code quality, correctness, and maintainability",reviewerRole:"an engineering peer reviewer evaluating technical rigor and code health",moderatorRole:"a tech lead synthesizing engineering perspectives into actionable conclusions",summaryLabel:"Engineering Assessment",criteria:["Code correctness and edge case handling","Error handling and resilience","Performance and scalability implications","API design and interface clarity","Test coverage and testability","Maintainability and readability","Security considerations","Backward compatibility"],preferredFindingKinds:["risk","improvement","strength","question"]};h();var xe={name:"product",label:"Product",participantRole:"a product analyst focused on user value, completeness, and edge cases",reviewerRole:"a product reviewer evaluating requirements coverage and user impact",moderatorRole:"a product lead synthesizing product perspectives into prioritized insights",summaryLabel:"Product Assessment",criteria:["Requirements completeness and coverage","User experience and usability","Edge cases and boundary conditions","Acceptance criteria clarity","Feature scope \u2014 too broad or too narrow","User journey coherence","Metric and success criteria definition","Stakeholder alignment"],preferredFindingKinds:["question","improvement","risk","strength"]};h();var $e={name:"architecture",label:"Architecture",participantRole:"a system architect focused on boundaries, modularity, and evolution paths",reviewerRole:"an architecture reviewer evaluating structural decisions and trade-offs",moderatorRole:"a chief architect synthesizing architectural perspectives into design guidance",summaryLabel:"Architecture Assessment",criteria:["Module boundaries and responsibility separation","Coupling and cohesion","Extensibility and evolution path","Dependency management","Data flow and state management","API surface area and abstraction levels","Migration and backward compatibility strategy","Operational concerns (monitoring, debugging, deployment)"],preferredFindingKinds:["improvement","risk","question","strength"]};h();var _e={name:"general",label:"General",participantRole:"an analyst providing a broad, balanced perspective",reviewerRole:"a peer reviewer evaluating clarity, logic, and completeness",moderatorRole:"a neutral moderator synthesizing diverse perspectives into balanced conclusions",summaryLabel:"General Assessment",criteria:["Logical coherence and consistency","Completeness of analysis","Trade-off identification","Assumption clarity","Evidence quality","Actionability of recommendations"],preferredFindingKinds:["strength","risk","question","improvement"]};var dn={engineering:ke,product:xe,architecture:$e,general:_e};function $i(n){return dn[n]}a($i,"getLens");function ln(n){return n.map(e=>dn[e.name])}a(ln,"resolveLenses");function we(n,e){if(n.length===0)return "";let t=e==="participant"?"participantRole":e==="reviewer"?"reviewerRole":"moderatorRole",r=n.map(c=>c[t]),i=n.flatMap(c=>c.criteria),o=[...new Set(i)];return [n.length===1?`You are ${r[0]}.`:`You combine multiple perspectives: ${r.join("; ")}.`,"","Evaluation criteria (prioritized):",...o.map(c=>`- ${c}`)].join(`
505
+ `)}a(we,"buildLensPrompt");var pn=["engineering","product","architecture","general"];h();h();function Te(n,e){let t=ln(e.lenses);if(t.length===0)return n;let r=we(t,"participant"),i=we(t,"reviewer"),o=we(t,"moderator"),s=je(e,"participant"),c=je(e,"reviewer"),m=je(e,"moderator");return {researchSystemPrompt(d){return [n.researchSystemPrompt(d),"","\u2500\u2500 Analysis Perspective \u2500\u2500",r,"","\u2500\u2500 Scenario Support \u2500\u2500",s].join(`
506
506
  `)},researchUserPrompt(d,l){return [Y(e),"",n.researchUserPrompt(d,l)].join(`
507
507
  `)},parseResearchResponse(d,l){return n.parseResearchResponse(d,l)},crossReviewSystemPrompt(d){return [n.crossReviewSystemPrompt(d),"","\u2500\u2500 Review Perspective \u2500\u2500",i,"","\u2500\u2500 Scenario Support \u2500\u2500",c].join(`
508
508
  `)},crossReviewUserPrompt(d,l,p){return [Y(e),"",n.crossReviewUserPrompt(d,l,p)].join(`
@@ -515,9 +515,9 @@ Requirements:
515
515
  `)}}:{},...te(n)?{mergeReviewUserPrompt(d,l,p,g){return [Y(e),"",n.mergeReviewUserPrompt(d,l,p,g)].join(`
516
516
  `)},parseMergeReviewResponse(d,l){return n.parseMergeReviewResponse(d,l)},detailExpansionSystemPrompt(){return [n.detailExpansionSystemPrompt(),"","\u2500\u2500 Moderator Perspective \u2500\u2500",o].join(`
517
517
  `)},detailExpansionUserPrompt(d,l,p){return [Y(e),"",n.detailExpansionUserPrompt(d,l,p)].join(`
518
- `)},parseDetailExpansionResponse(d){return n.parseDetailExpansionResponse(d)}}:{}}}a(Te,"withLens");function _e(n,e){let t=n.sources.map(s=>s.kind).join(", "),r=un(n.subject.targets),i=pn(n.outputShape.emphasize);return [`Subject: ${n.subject.kind} \u2014 ${n.subject.label}${r?` (${r})`:""}`,`Evidence sources: ${t||"none"}`,`Overview label: ${n.outputShape.overviewLabel}`,`Emphasize these finding types first: ${i}`,"Only draw conclusions from available evidence. When evidence is thin, narrow the claim or call it out explicitly.",...vt(n,e)].map(s=>`- ${s}`).join(`
519
- `)}a(_e,"buildPlanPrompt");function Y(n){let e=un(n.subject.targets),t=n.lenses.map(i=>i.name).join(", "),r=n.sources.map(i=>i.kind).join(", ");return ["## Arena Plan",`- Mode: ${n.mode}`,`- Subject: ${n.subject.kind} \u2014 ${n.subject.label}${e?` (${e})`:""}`,`- Lenses: ${t||"general"}`,`- Sources: ${r||"none"}`,`- Output focus: ${pn(n.outputShape.emphasize)}`,`- Overview label: ${n.outputShape.overviewLabel}`].join(`
520
- `)}a(Y,"formatPlanBrief");function vt(n,e){let t=[];switch(n.subject.kind){case "changes":t.push(e==="participant"?"Treat this as a change-focused analysis: inspect behavioral impact, regressions, interfaces, and compatibility.":e==="reviewer"?"Challenge findings that are not grounded in changed behavior, affected files, or nearby code paths.":"Summarize the concrete impact of the changes before giving judgment.");break;case "files":t.push(e==="participant"?"Stay anchored to the named files/modules and their immediate call sites instead of drifting into unrelated areas.":e==="reviewer"?"Prioritize corrections to claims that overgeneralize beyond the named files/modules.":"Keep the conclusion scoped to the named files/modules and their direct implications.");break;case "docs":t.push(e==="participant"?"Treat this as a document-centric scene: look for ambiguity, missing acceptance criteria, edge cases, and implementation gaps.":e==="reviewer"?"Challenge findings that skip over unclear requirements, contradictory wording, or unsupported feasibility assumptions.":"Synthesize the document review around completeness, feasibility, and decision-ready gaps.");break;case "topic":t.push(e==="participant"?"Treat this as a topic discussion: surface assumptions, trade-offs, and decision criteria instead of pretending there is hard repo evidence.":e==="reviewer"?"Push back on overconfident claims and preserve unresolved trade-offs as open questions.":"Preserve disagreement where needed and make assumptions explicit.");break;case "mixed":t.push(e==="participant"?"This is a mixed scene: reconcile code, docs, and topic-level evidence instead of analyzing each source in isolation.":e==="reviewer"?"Check whether claims actually connect the different evidence sources, rather than citing only one side.":"Unify the conclusion across repo facts, documents, and higher-level reasoning.");break}let r=new Set(n.sources.map(i=>i.kind));return r.has("docs")&&r.has("repo")?t.push(e==="moderator"?"If documents and repo evidence diverge, call out the mismatch explicitly instead of collapsing it into a single conclusion.":"Cross-check document claims against the current repo structure when possible."):r.has("web")?t.push(e==="moderator"?"Separate external references from local repo facts in the synthesis.":"Keep external research distinct from local evidence and label it clearly."):r.has("none")&&t.push("No external evidence is expected here; reason from the prompt and make assumptions visible."),n.mode==="planning"&&t.push(e==="moderator"?"When enough evidence exists, turn the conclusion into a staged roadmap with sequencing, dependencies, and success criteria.":"Prefer findings that help phase work, sequence dependencies, or expose migration/blocker risks."),t}a(vt,"buildScenarioNotes");function pn(n){return n.length>0?n.join(", "):"risk, improvement"}a(pn,"formatEmphasis");function un(n){return Array.isArray(n)&&n.length>0?n.join(", "):""}a(un,"formatTargets");var mn={review:a(()=>new me,"review"),discussion:a(()=>new ge,"discussion"),planning:a(()=>new fe,"planning")};function gn(n){return mn[n]()}a(gn,"getStrategy");function fn(n){let e=mn[n.mode]();return Te(e,n)}a(fn,"getStrategyForPlan");h();var Rt=`You are the planner for a multi-model collaborative analysis tool called Arena.
518
+ `)},parseDetailExpansionResponse(d){return n.parseDetailExpansionResponse(d)}}:{}}}a(Te,"withLens");function je(n,e){let t=n.sources.map(s=>s.kind).join(", "),r=mn(n.subject.targets),i=un(n.outputShape.emphasize);return [`Subject: ${n.subject.kind} \u2014 ${n.subject.label}${r?` (${r})`:""}`,`Evidence sources: ${t||"none"}`,`Overview label: ${n.outputShape.overviewLabel}`,`Emphasize these finding types first: ${i}`,"Only draw conclusions from available evidence. When evidence is thin, narrow the claim or call it out explicitly.",...St(n,e)].map(s=>`- ${s}`).join(`
519
+ `)}a(je,"buildPlanPrompt");function Y(n){let e=mn(n.subject.targets),t=n.lenses.map(i=>i.name).join(", "),r=n.sources.map(i=>i.kind).join(", ");return ["## Arena Plan",`- Mode: ${n.mode}`,`- Subject: ${n.subject.kind} \u2014 ${n.subject.label}${e?` (${e})`:""}`,`- Lenses: ${t||"general"}`,`- Sources: ${r||"none"}`,`- Output focus: ${un(n.outputShape.emphasize)}`,`- Overview label: ${n.outputShape.overviewLabel}`].join(`
520
+ `)}a(Y,"formatPlanBrief");function St(n,e){let t=[];switch(n.subject.kind){case "changes":t.push(e==="participant"?"Treat this as a change-focused analysis: inspect behavioral impact, regressions, interfaces, and compatibility.":e==="reviewer"?"Challenge findings that are not grounded in changed behavior, affected files, or nearby code paths.":"Summarize the concrete impact of the changes before giving judgment.");break;case "files":t.push(e==="participant"?"Stay anchored to the named files/modules and their immediate call sites instead of drifting into unrelated areas.":e==="reviewer"?"Prioritize corrections to claims that overgeneralize beyond the named files/modules.":"Keep the conclusion scoped to the named files/modules and their direct implications.");break;case "docs":t.push(e==="participant"?"Treat this as a document-centric scene: look for ambiguity, missing acceptance criteria, edge cases, and implementation gaps.":e==="reviewer"?"Challenge findings that skip over unclear requirements, contradictory wording, or unsupported feasibility assumptions.":"Synthesize the document review around completeness, feasibility, and decision-ready gaps.");break;case "topic":t.push(e==="participant"?"Treat this as a topic discussion: surface assumptions, trade-offs, and decision criteria instead of pretending there is hard repo evidence.":e==="reviewer"?"Push back on overconfident claims and preserve unresolved trade-offs as open questions.":"Preserve disagreement where needed and make assumptions explicit.");break;case "mixed":t.push(e==="participant"?"This is a mixed scene: reconcile code, docs, and topic-level evidence instead of analyzing each source in isolation.":e==="reviewer"?"Check whether claims actually connect the different evidence sources, rather than citing only one side.":"Unify the conclusion across repo facts, documents, and higher-level reasoning.");break}let r=new Set(n.sources.map(i=>i.kind));return r.has("docs")&&r.has("repo")?t.push(e==="moderator"?"If documents and repo evidence diverge, call out the mismatch explicitly instead of collapsing it into a single conclusion.":"Cross-check document claims against the current repo structure when possible."):r.has("web")?t.push(e==="moderator"?"Separate external references from local repo facts in the synthesis.":"Keep external research distinct from local evidence and label it clearly."):r.has("none")&&t.push("No external evidence is expected here; reason from the prompt and make assumptions visible."),n.mode==="planning"&&t.push(e==="moderator"?"When enough evidence exists, turn the conclusion into a staged roadmap with sequencing, dependencies, and success criteria.":"Prefer findings that help phase work, sequence dependencies, or expose migration/blocker risks."),t}a(St,"buildScenarioNotes");function un(n){return n.length>0?n.join(", "):"risk, improvement"}a(un,"formatEmphasis");function mn(n){return Array.isArray(n)&&n.length>0?n.join(", "):""}a(mn,"formatTargets");var gn={review:a(()=>new me,"review"),discussion:a(()=>new ge,"discussion"),planning:a(()=>new fe,"planning")};function fn(n){return gn[n]()}a(fn,"getStrategy");function hn(n){let e=gn[n.mode]();return Te(e,n)}a(hn,"getStrategyForPlan");h();var kt=`You are the planner for a multi-model collaborative analysis tool called Arena.
521
521
 
522
522
  Given a user's natural language request, produce an execution plan. You must determine:
523
523
 
@@ -555,39 +555,39 @@ Respond ONLY with JSON, no markdown fences:
555
555
  "outputShape": {"overviewLabel": "e.g. What Changed / Current Scope / Problem Framing", "emphasize": ["risk", "improvement"]},
556
556
  "confidence": "high|medium|low",
557
557
  "followUpQuestion": "question if confidence is low, or null"
558
- }`;async function hn(n,e,t,r){if(t?.mode&&t?.base)return At(n,t);try{r?.throwIfAborted();let o=await(await F({...e,enableStreaming:!1,maxTokens:1024})).createMessage({systemPrompt:Rt,messages:[{role:"user",content:`<user_request>
558
+ }`;async function yn(n,e,t,r){if(t?.mode&&t?.base)return $t(n,t);try{r?.throwIfAborted();let o=await(await F({...e,enableStreaming:!1,maxTokens:1024})).createMessage({systemPrompt:kt,messages:[{role:"user",content:`<user_request>
559
559
  ${n}
560
560
  </user_request>
561
561
 
562
- Analyze the user request above and output the arena plan as JSON.`}],maxTokens:1024,signal:r}),s=wt(o.text,n);return t?.mode&&(s.mode=t.mode),t?.base&&(s.sources=[{kind:"git",targets:[t.base,t.head??"HEAD"]}],s.subject={kind:"changes",label:`${t.base}...${t.head??"HEAD"}`,targets:[t.base,t.head??"HEAD"]}),b.info("arena.planner",{plan:s}),s}catch(i){return b.warn("arena.planner_fallback",{error:i.message}),yn(n,t)}}a(hn,"planArena");function wt(n,e){let t=n.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/),r=t?t[1].trim():n.match(/\{[\s\S]*\}/)?.[0]??n;try{let i=JSON.parse(r);return {mode:bt(i.mode),lenses:Pt(i.lenses),sources:St(i.sources),subject:kt(i.subject,e),outputShape:$t(i.outputShape,i.mode),confidence:Ct(i.confidence),followUpQuestion:i.followUpQuestion||void 0}}catch{return yn(e)}}a(wt,"parsePlanResponse");function At(n,e){return {mode:e.mode,lenses:[{name:"engineering",weight:1}],sources:[{kind:"git",targets:[e.base,e.head??"HEAD"]},{kind:"repo"}],subject:{kind:"changes",label:`${e.base}...${e.head??"HEAD"}`,targets:[e.base,e.head??"HEAD"]},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement"]},confidence:"high"}}a(At,"buildExplicitPlan");function yn(n,e){if(e?.base)return {mode:e.mode??"review",lenses:[{name:"engineering",weight:1}],sources:[{kind:"git"},{kind:"repo"}],subject:{kind:"changes",label:n,targets:[e.base,e.head??"HEAD"]},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement"]},confidence:"low"};let t=n.toLowerCase(),r=/\b(prd|doc|docs|spec|rfc|design doc|requirement|proposal)\b/i.test(n)||/(文档|需求|方案)/.test(n),i=/\b(roadmap|plan|planning|strategy|migration|refactor)\b/i.test(n)||/(演进|路线图|规划|重构)/.test(n),o=/\b(feasibility|feasible|can we|should we|trade-?off)\b/i.test(n)||/(可行|能不能|值不值得|取舍)/.test(n),s=/\b(review|pr|diff|patch|change)\b/i.test(n)||/(改动|评审|审查)/.test(n),c=/\b(repo|repository|codebase|module|architecture)\b/i.test(n)||/(代码库|仓库|模块|架构)/.test(n);return i?{mode:"planning",lenses:r?[{name:"architecture",weight:1},{name:"product",weight:.7}]:[{name:"architecture",weight:1},{name:"engineering",weight:.8}],sources:r?[{kind:"docs"},...c?[{kind:"repo"}]:[]]:[{kind:"repo"},{kind:"docs"}],subject:{kind:r?"mixed":"topic",label:n},outputShape:{overviewLabel:"Current Scope",emphasize:["improvement","risk","question"]},confidence:"low"}:r&&o?{mode:"discussion",lenses:[{name:"product",weight:1},{name:"engineering",weight:.8}],sources:c?[{kind:"docs"},{kind:"repo"}]:[{kind:"docs"}],subject:{kind:c?"mixed":"docs",label:n},outputShape:{overviewLabel:"Problem Framing",emphasize:["question","risk","improvement"]},confidence:"low"}:r?{mode:s?"review":"discussion",lenses:[{name:"product",weight:1},{name:"architecture",weight:.6}],sources:c?[{kind:"docs"},{kind:"repo"}]:[{kind:"docs"}],subject:{kind:c?"mixed":"docs",label:n},outputShape:{overviewLabel:s?"Current Scope":"Problem Framing",emphasize:["question","improvement","risk"]},confidence:"low"}:o?{mode:"discussion",lenses:c?[{name:"product",weight:1},{name:"engineering",weight:.8}]:[{name:"general",weight:1},{name:"product",weight:.6}],sources:c?[{kind:"repo"},{kind:"docs"}]:[{kind:"none"}],subject:{kind:"topic",label:n},outputShape:{overviewLabel:"Problem Framing",emphasize:["question","risk","improvement"]},confidence:"low"}:s||/\b(commit|branch|diff|patch|bug|fix|回归)\b/i.test(t)?{mode:"review",lenses:[{name:"engineering",weight:1}],sources:[{kind:"git"},{kind:"repo"}],subject:{kind:"changes",label:n},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement","question"]},confidence:"low"}:{mode:e?.mode??"review",lenses:[{name:c?"architecture":"general",weight:1}],sources:c?[{kind:"repo"},{kind:"docs"}]:[{kind:"none"}],subject:{kind:"topic",label:n},outputShape:{overviewLabel:c?"Current Scope":"Problem Framing",emphasize:c?["improvement","risk","question"]:["question","risk","improvement"]},confidence:"low"}}a(yn,"buildFallbackPlan");function bt(n){return n==="review"||n==="discussion"||n==="planning"?n:"review"}a(bt,"validateMode");function Ct(n){return n==="high"||n==="medium"||n==="low"?n:"medium"}a(Ct,"validateConfidence");function Pt(n){if(!Array.isArray(n)||n.length===0)return [{name:"general",weight:1}];let e=n.filter(t=>ln.includes(t?.name)).map(t=>({name:t.name,weight:typeof t.weight=="number"?t.weight:1}));return e.length>0?e:[{name:"general",weight:1}]}a(Pt,"parseLenses");function St(n){if(!Array.isArray(n)||n.length===0)return [{kind:"none"}];let e=["git","repo","docs","web","none"],t=n.filter(r=>e.includes(r?.kind)).map(r=>({kind:r.kind,targets:Array.isArray(r.targets)?r.targets:void 0}));return t.length>0?t:[{kind:"none"}]}a(St,"parseSources");function kt(n,e){if(!n||typeof n!="object")return {kind:"topic",label:e};let t=n;return {kind:["changes","files","docs","topic","mixed"].includes(t.kind)?t.kind:"topic",label:t.label??e,targets:Array.isArray(t.targets)?t.targets:void 0}}a(kt,"parseSubject");var xt=new Set(["strength","improvement","risk","question"]);function $t(n,e){if(n&&typeof n=="object"){let t=n;return {overviewLabel:t.overviewLabel??"Overview",emphasize:Array.isArray(t.emphasize)?t.emphasize.filter(r=>xt.has(r)):["risk","improvement"]}}switch(e){case "review":return {overviewLabel:"What Changed",emphasize:["risk","improvement"]};case "discussion":return {overviewLabel:"Problem Framing",emphasize:["strength","risk","question"]};case "planning":return {overviewLabel:"Current Scope",emphasize:["improvement","risk"]};default:return {overviewLabel:"Overview",emphasize:["risk","improvement"]}}}a($t,"parseOutputShape");h();h();var De=2e4,Ee=30,Oe={kind:"git",collect(n,e){let t=[],r=n.sources.find(w=>w.kind==="git")?.targets,i=vn(r?.[0]),o=vn(r?.[1])??"HEAD",s=!!i,c=J(["rev-parse","--abbrev-ref","HEAD"]);c&&t.push({id:"git-branch",kind:"doc",source:"git",title:"Current Branch",preview:c});let m=s?["log","--oneline",`${i}..${o}`,"--max-count=20"]:["log","--oneline","-10"],d=J(m);d&&t.push({id:"git-log",kind:"doc",source:"git",title:"Commit Log",preview:d});let l=s?["diff","--stat",`${i}...${o}`]:["diff","--stat","HEAD"],p=J(l);!p&&!s&&(p=J(["diff","--stat","--cached"])),p&&t.push({id:"git-diffstat",kind:"doc",source:"git",title:"Diff Stat",preview:p});let g=s?["diff","--name-status",`${i}...${o}`]:["diff","--name-status","HEAD"],u=J(g);if(!u&&!s&&(u=J(["diff","--name-status","--cached"])),u){let w=u.split(`
562
+ Analyze the user request above and output the arena plan as JSON.`}],maxTokens:1024,signal:r}),s=xt(o.text,n);return t?.mode&&(s.mode=t.mode),t?.base&&(s.sources=[{kind:"git",targets:[t.base,t.head??"HEAD"]}],s.subject={kind:"changes",label:`${t.base}...${t.head??"HEAD"}`,targets:[t.base,t.head??"HEAD"]}),d.info("arena.planner",{plan:s}),s}catch(i){return d.warn("arena.planner_fallback",{error:i.message}),vn(n,t)}}a(yn,"planArena");function xt(n,e){let t=n.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/),r=t?t[1].trim():n.match(/\{[\s\S]*\}/)?.[0]??n;try{let i=JSON.parse(r);return {mode:_t(i.mode),lenses:Tt(i.lenses),sources:Dt(i.sources),subject:Et(i.subject,e),outputShape:Lt(i.outputShape,i.mode),confidence:jt(i.confidence),followUpQuestion:i.followUpQuestion||void 0}}catch{return vn(e)}}a(xt,"parsePlanResponse");function $t(n,e){return {mode:e.mode,lenses:[{name:"engineering",weight:1}],sources:[{kind:"git",targets:[e.base,e.head??"HEAD"]},{kind:"repo"}],subject:{kind:"changes",label:`${e.base}...${e.head??"HEAD"}`,targets:[e.base,e.head??"HEAD"]},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement"]},confidence:"high"}}a($t,"buildExplicitPlan");function vn(n,e){if(e?.base)return {mode:e.mode??"review",lenses:[{name:"engineering",weight:1}],sources:[{kind:"git"},{kind:"repo"}],subject:{kind:"changes",label:n,targets:[e.base,e.head??"HEAD"]},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement"]},confidence:"low"};let t=n.toLowerCase(),r=/\b(prd|doc|docs|spec|rfc|design doc|requirement|proposal)\b/i.test(n)||/(文档|需求|方案)/.test(n),i=/\b(roadmap|plan|planning|strategy|migration|refactor)\b/i.test(n)||/(演进|路线图|规划|重构)/.test(n),o=/\b(feasibility|feasible|can we|should we|trade-?off)\b/i.test(n)||/(可行|能不能|值不值得|取舍)/.test(n),s=/\b(review|pr|diff|patch|change)\b/i.test(n)||/(改动|评审|审查)/.test(n),c=/\b(repo|repository|codebase|module|architecture)\b/i.test(n)||/(代码库|仓库|模块|架构)/.test(n);return i?{mode:"planning",lenses:r?[{name:"architecture",weight:1},{name:"product",weight:.7}]:[{name:"architecture",weight:1},{name:"engineering",weight:.8}],sources:r?[{kind:"docs"},...c?[{kind:"repo"}]:[]]:[{kind:"repo"},{kind:"docs"}],subject:{kind:r?"mixed":"topic",label:n},outputShape:{overviewLabel:"Current Scope",emphasize:["improvement","risk","question"]},confidence:"low"}:r&&o?{mode:"discussion",lenses:[{name:"product",weight:1},{name:"engineering",weight:.8}],sources:c?[{kind:"docs"},{kind:"repo"}]:[{kind:"docs"}],subject:{kind:c?"mixed":"docs",label:n},outputShape:{overviewLabel:"Problem Framing",emphasize:["question","risk","improvement"]},confidence:"low"}:r?{mode:s?"review":"discussion",lenses:[{name:"product",weight:1},{name:"architecture",weight:.6}],sources:c?[{kind:"docs"},{kind:"repo"}]:[{kind:"docs"}],subject:{kind:c?"mixed":"docs",label:n},outputShape:{overviewLabel:s?"Current Scope":"Problem Framing",emphasize:["question","improvement","risk"]},confidence:"low"}:o?{mode:"discussion",lenses:c?[{name:"product",weight:1},{name:"engineering",weight:.8}]:[{name:"general",weight:1},{name:"product",weight:.6}],sources:c?[{kind:"repo"},{kind:"docs"}]:[{kind:"none"}],subject:{kind:"topic",label:n},outputShape:{overviewLabel:"Problem Framing",emphasize:["question","risk","improvement"]},confidence:"low"}:s||/\b(commit|branch|diff|patch|bug|fix|回归)\b/i.test(t)?{mode:"review",lenses:[{name:"engineering",weight:1}],sources:[{kind:"git"},{kind:"repo"}],subject:{kind:"changes",label:n},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement","question"]},confidence:"low"}:{mode:e?.mode??"review",lenses:[{name:c?"architecture":"general",weight:1}],sources:c?[{kind:"repo"},{kind:"docs"}]:[{kind:"none"}],subject:{kind:"topic",label:n},outputShape:{overviewLabel:c?"Current Scope":"Problem Framing",emphasize:c?["improvement","risk","question"]:["question","risk","improvement"]},confidence:"low"}}a(vn,"buildFallbackPlan");function _t(n){return n==="review"||n==="discussion"||n==="planning"?n:"review"}a(_t,"validateMode");function jt(n){return n==="high"||n==="medium"||n==="low"?n:"medium"}a(jt,"validateConfidence");function Tt(n){if(!Array.isArray(n)||n.length===0)return [{name:"general",weight:1}];let e=n.filter(t=>pn.includes(t?.name)).map(t=>({name:t.name,weight:typeof t.weight=="number"?t.weight:1}));return e.length>0?e:[{name:"general",weight:1}]}a(Tt,"parseLenses");function Dt(n){if(!Array.isArray(n)||n.length===0)return [{kind:"none"}];let e=["git","repo","docs","web","none"],t=n.filter(r=>e.includes(r?.kind)).map(r=>({kind:r.kind,targets:Array.isArray(r.targets)?r.targets:void 0}));return t.length>0?t:[{kind:"none"}]}a(Dt,"parseSources");function Et(n,e){if(!n||typeof n!="object")return {kind:"topic",label:e};let t=n;return {kind:["changes","files","docs","topic","mixed"].includes(t.kind)?t.kind:"topic",label:t.label??e,targets:Array.isArray(t.targets)?t.targets:void 0}}a(Et,"parseSubject");var Ot=new Set(["strength","improvement","risk","question"]);function Lt(n,e){if(n&&typeof n=="object"){let t=n;return {overviewLabel:t.overviewLabel??"Overview",emphasize:Array.isArray(t.emphasize)?t.emphasize.filter(r=>Ot.has(r)):["risk","improvement"]}}switch(e){case "review":return {overviewLabel:"What Changed",emphasize:["risk","improvement"]};case "discussion":return {overviewLabel:"Problem Framing",emphasize:["strength","risk","question"]};case "planning":return {overviewLabel:"Current Scope",emphasize:["improvement","risk"]};default:return {overviewLabel:"Overview",emphasize:["risk","improvement"]}}}a(Lt,"parseOutputShape");h();h();var De=2e4,Ee=30,Oe={kind:"git",collect(n,e){let t=[],r=n.sources.find(w=>w.kind==="git")?.targets,i=Rn(r?.[0]),o=Rn(r?.[1])??"HEAD",s=!!i,c=z(["rev-parse","--abbrev-ref","HEAD"]);c&&t.push({id:"git-branch",kind:"doc",source:"git",title:"Current Branch",preview:c});let m=s?["log","--oneline",`${i}..${o}`,"--max-count=20"]:["log","--oneline","-10"],d$1=z(m);d$1&&t.push({id:"git-log",kind:"doc",source:"git",title:"Commit Log",preview:d$1});let l=s?["diff","--stat",`${i}...${o}`]:["diff","--stat","HEAD"],p=z(l);!p&&!s&&(p=z(["diff","--stat","--cached"])),p&&t.push({id:"git-diffstat",kind:"doc",source:"git",title:"Diff Stat",preview:p});let g=s?["diff","--name-status",`${i}...${o}`]:["diff","--name-status","HEAD"],u=z(g);if(!u&&!s&&(u=z(["diff","--name-status","--cached"])),u){let w=u.split(`
563
563
  `).filter(Boolean),A=w.slice(0,Ee);w.length>Ee&&A.push(`... and ${w.length-Ee} more files`),t.push({id:"git-changed-files",kind:"doc",source:"git",title:"Changed Files",preview:A.join(`
564
- `),metadata:{totalCount:w.length}});let $=w.map(j=>j.split(" ").slice(1).join(" ")).filter(Boolean),b=_t($);b.length>0&&t.push({id:"git-dir-clusters",kind:"doc",source:"git",title:"Changes by Directory",preview:b.slice(0,15).map(([j,C])=>` ${j}/ (${C} files)`).join(`
565
- `)});}let h=s?["diff",`${i}...${o}`]:["diff","HEAD"],y=J(h);if(!y&&!s&&(y=J(["diff","--cached"])),y){let w=y.length>De,A=w?y.slice(0,De).slice(0,y.slice(0,De).lastIndexOf(`
564
+ `),metadata:{totalCount:w.length}});let $=w.map(_=>_.split(" ").slice(1).join(" ")).filter(Boolean),b=It($);b.length>0&&t.push({id:"git-dir-clusters",kind:"doc",source:"git",title:"Changes by Directory",preview:b.slice(0,15).map(([_,C])=>` ${_}/ (${C} files)`).join(`
565
+ `)});}let h=s?["diff",`${i}...${o}`]:["diff","HEAD"],y=z(h);if(!y&&!s&&(y=z(["diff","--cached"])),y){let w=y.length>De,A=w?y.slice(0,De).slice(0,y.slice(0,De).lastIndexOf(`
566
566
  `)):y;t.push({id:"git-diff",kind:"diff",source:"git",title:"Diff",preview:A+(w?`
567
567
 
568
- ... TRUNCATED (${y.length} chars total). Use read_file to inspect specific files.`:""),metadata:{totalChars:y.length,truncated:w}});}if(!y&&!p){let w=J(["status","--short"]);w&&t.push({id:"git-status",kind:"doc",source:"git",title:"Git Status",preview:w});}return b.info("arena.provider.git",{artifactCount:t.length,hasCompare:s}),t}};function J(n){try{return execFileSync("git",n,{encoding:"utf-8",maxBuffer:1024*1024,timeout:1e4}).trim()}catch{return ""}}a(J,"git");function vn(n){if(!n)return;let e=n.replace(/\.{2,}/g,"");return e=e.replace(/[^a-zA-Z0-9/_\-~^.]/g,""),e||void 0}a(vn,"sanitizeRef");function _t(n){let e=new Map;for(let t of n){let r=t.split("/"),i=r.length>2?r.slice(0,2).join("/"):r[0];e.set(i,(e.get(i)??0)+1);}return [...e.entries()].sort((t,r)=>r[1]-t[1])}a(_t,"clusterByDirectory");h();var Rn=8e3,Lt=3e3,wn=400,xn=promisify(execFile),Fe={kind:"repo",async collect(n,e){let t=[],r=n.sources.find(s=>s.kind==="repo")?.targets??[],i=await An(".",2);i&&t.push({id:"repo-tree",kind:"tree",source:"repo",title:"Project Structure",preview:i});for(let s of r){if(!existsSync(s))continue;if(statSync(s).isDirectory()){let m=await An(s,3);m&&t.push({id:`repo-tree-${s}`,kind:"tree",source:"repo",title:`Directory: ${s}`,preview:m});for(let d of (await Ft(s)).slice(0,3)){let l=bn(d);l&&t.push({id:`repo-file-${d}`,kind:"file",source:"repo",title:d,ref:d,preview:Cn(l)});}}else {let m=bn(s);m&&t.push({id:`repo-file-${s}`,kind:"file",source:"repo",title:s,ref:s,preview:Cn(m)});}}if(r.length===0){let s=Ut(e).slice(0,5),c=await Promise.all(s.map(m=>It(m)));for(let m=0;m<s.length;m++){let d=s[m],l=c[m]??"";if(!l)continue;let p=l.split(`
569
- `).filter(Boolean).slice(0,10);for(let g of p)t.some(u=>u.ref===g)||t.push({id:`repo-grep-${d}-${g}`,kind:"grep",source:"repo",title:`Match: ${d} \u2192 ${g}`,ref:g,preview:g});}}if(!n.sources.some(s=>s.kind==="git")){let s=await Nt();s&&t.push({id:"repo-recent-activity",kind:"doc",source:"repo",title:"Recent Git Activity",preview:s});}return b.info("arena.provider.repo",{artifactCount:t.length}),t}};async function An(n,e){let t=[];return await $n(n,e,0,"",t,{n:0}),t.filter(Boolean).join(`
570
- `)}a(An,"buildTree");async function $n(n,e,t,r,i,o){if(t>=e||o.n>=wn)return;let s;try{s=(await readdir(n)).filter(c=>!c.startsWith(".")&&c!=="node_modules"&&c!=="dist"&&c!=="__pycache__");}catch{return}for(let c of s.slice(0,30)){if(o.n>=wn)return;o.n++;let m=join(n,c),d=false;try{d=(await stat(m)).isDirectory();}catch{continue}i.push(`${r}${d?"/":""} ${c}`),d&&t<e-1&&await $n(m,e,t+1,r+" ",i,o);}}a($n,"walkTree");async function Ft(n){let e=[];try{let t=await readdir(n),r=["index.ts","index.js","main.ts","main.js","mod.ts","__init__.py"];for(let i of r)t.includes(i)&&e.push(join(n,i));for(let i of t){let o=join(n,i);/\.(ts|js|tsx|jsx|py)$/.test(i)&&!e.includes(o)&&e.push(o);}}catch{}return e}a(Ft,"collectEntryFiles");function bn(n){try{return !existsSync(n)||statSync(n).size>5e5?null:readFileSync(n,"utf-8")}catch{return null}}a(bn,"safeReadFile");function Cn(n){if(n.length<=Rn)return n;let e=n.slice(0,Rn),t=e.lastIndexOf(`
568
+ ... TRUNCATED (${y.length} chars total). Use read_file to inspect specific files.`:""),metadata:{totalChars:y.length,truncated:w}});}if(!y&&!p){let w=z(["status","--short"]);w&&t.push({id:"git-status",kind:"doc",source:"git",title:"Git Status",preview:w});}return d.info("arena.provider.git",{artifactCount:t.length,hasCompare:s}),t}};function z(n){try{return execFileSync("git",n,{encoding:"utf-8",maxBuffer:1024*1024,timeout:1e4}).trim()}catch{return ""}}a(z,"git");function Rn(n){if(!n)return;let e=n.replace(/\.{2,}/g,"");return e=e.replace(/[^a-zA-Z0-9/_\-~^.]/g,""),e||void 0}a(Rn,"sanitizeRef");function It(n){let e=new Map;for(let t of n){let r=t.split("/"),i=r.length>2?r.slice(0,2).join("/"):r[0];e.set(i,(e.get(i)??0)+1);}return [...e.entries()].sort((t,r)=>r[1]-t[1])}a(It,"clusterByDirectory");h();var wn=8e3,qt=3e3,An=400,$n=promisify(execFile),Fe={kind:"repo",async collect(n,e){let t=[],r=n.sources.find(s=>s.kind==="repo")?.targets??[],i=await bn(".",2);i&&t.push({id:"repo-tree",kind:"tree",source:"repo",title:"Project Structure",preview:i});for(let s of r){if(!existsSync(s))continue;if(statSync(s).isDirectory()){let m=await bn(s,3);m&&t.push({id:`repo-tree-${s}`,kind:"tree",source:"repo",title:`Directory: ${s}`,preview:m});for(let d of (await Vt(s)).slice(0,3)){let l=Cn(d);l&&t.push({id:`repo-file-${d}`,kind:"file",source:"repo",title:d,ref:d,preview:Pn(l)});}}else {let m=Cn(s);m&&t.push({id:`repo-file-${s}`,kind:"file",source:"repo",title:s,ref:s,preview:Pn(m)});}}if(r.length===0){let s=zt(e).slice(0,5),c=await Promise.all(s.map(m=>Bt(m)));for(let m=0;m<s.length;m++){let d=s[m],l=c[m]??"";if(!l)continue;let p=l.split(`
569
+ `).filter(Boolean).slice(0,10);for(let g of p)t.some(u=>u.ref===g)||t.push({id:`repo-grep-${d}-${g}`,kind:"grep",source:"repo",title:`Match: ${d} \u2192 ${g}`,ref:g,preview:g});}}if(!n.sources.some(s=>s.kind==="git")){let s=await Yt();s&&t.push({id:"repo-recent-activity",kind:"doc",source:"repo",title:"Recent Git Activity",preview:s});}return d.info("arena.provider.repo",{artifactCount:t.length}),t}};async function bn(n,e){let t=[];return await _n(n,e,0,"",t,{n:0}),t.filter(Boolean).join(`
570
+ `)}a(bn,"buildTree");async function _n(n,e,t,r,i,o){if(t>=e||o.n>=An)return;let s;try{s=(await readdir(n)).filter(c=>!c.startsWith(".")&&c!=="node_modules"&&c!=="dist"&&c!=="__pycache__");}catch{return}for(let c of s.slice(0,30)){if(o.n>=An)return;o.n++;let m=join(n,c),d=false;try{d=(await stat(m)).isDirectory();}catch{continue}i.push(`${r}${d?"/":""} ${c}`),d&&t<e-1&&await _n(m,e,t+1,r+" ",i,o);}}a(_n,"walkTree");async function Vt(n){let e=[];try{let t=await readdir(n),r=["index.ts","index.js","main.ts","main.js","mod.ts","__init__.py"];for(let i of r)t.includes(i)&&e.push(join(n,i));for(let i of t){let o=join(n,i);/\.(ts|js|tsx|jsx|py)$/.test(i)&&!e.includes(o)&&e.push(o);}}catch{}return e}a(Vt,"collectEntryFiles");function Cn(n){try{return !existsSync(n)||statSync(n).size>5e5?null:readFileSync(n,"utf-8")}catch{return null}}a(Cn,"safeReadFile");function Pn(n){if(n.length<=wn)return n;let e=n.slice(0,wn),t=e.lastIndexOf(`
571
571
  `);return e.slice(0,t)+`
572
- ... (truncated, ${n.length} chars total)`}a(Cn,"truncate");async function It(n){try{let{stdout:e}=await xn("grep",["-rl","--include=*.ts","--include=*.js","--include=*.py","--include=*.md","-i",n,"."],{encoding:"utf-8",maxBuffer:1048576,timeout:Lt});return e.trim()}catch(e){let t=e;return t?.code===1||b.warn("arena.provider.grep_failed",{pattern:n,code:t?.code,killed:t?.killed,signal:t?.signal}),""}}a(It,"safeGrep");async function Nt(){try{let{stdout:n}=await xn("git",["log","--oneline","-10"],{encoding:"utf-8",maxBuffer:1048576,timeout:1e4});return n.trim()}catch{return ""}}a(Nt,"gitLog");function Ut(n){let e=new Set(["the","a","an","is","are","was","were","be","been","have","has","do","does","did","will","would","could","should","may","might","to","of","in","for","on","with","at","by","from","about","and","but","or","not","this","that","my","your","what","how","review","discuss","plan","help","please","look","check","\u4E00\u4E0B","\u770B\u770B","\u5E2E","\u6211","\u7684","\u662F\u5426","\u600E\u4E48","\u5982\u4F55","\u8BA8\u8BBA","\u89C4\u5212","\u5BA1\u67E5"]);return n.split(/[\s,;:]+/).map(t=>t.toLowerCase().replace(/[^a-z0-9_\-/]/g,"")).filter(t=>t.length>2&&!e.has(t))}a(Ut,"extractSearchHints");h();var jn=1e4,Bt=new Set([".md",".txt",".rst",".adoc",".org"]),Ie={kind:"docs",collect(n,e){let t=[],i=n.sources.find(o=>o.kind==="docs")?.targets??[];for(let o of i){let s=_n(o);s&&t.push({id:`doc-${o}`,kind:"doc",source:"docs",title:o,ref:o,preview:Tn(s)});}if(i.length===0){let o=["docs","doc","design","specs","proposals","."],s=new Set;for(let c of o){if(!existsSync(c))continue;let m=On(c,2);for(let d of m){if(s.has(d))continue;s.add(d);let l=d.toLowerCase();if(e.toLowerCase().split(/\s+/).filter(h=>h.length>2).some(h=>l.includes(h))||s.size<=5){let h=_n(d);h&&t.push({id:`doc-${d}`,kind:"doc",source:"docs",title:d,ref:d,preview:Tn(h)});}}}}return b.info("arena.provider.docs",{artifactCount:t.length}),t}};function On(n,e,t=0){if(t>=e)return [];let r=[];try{let i=readdirSync(n);for(let o of i){if(o.startsWith(".")||o==="node_modules")continue;let s=join(n,o),c=statSync(s);c.isFile()&&Bt.has(extname(o).toLowerCase())?r.push(s):c.isDirectory()&&t<e-1&&r.push(...On(s,e,t+1));}}catch{}return r}a(On,"findDocFiles");function _n(n){try{return !existsSync(n)||statSync(n).size>5e5?null:readFileSync(n,"utf-8")}catch{return null}}a(_n,"safeReadDoc");function Tn(n){if(n.length<=jn)return n;let e=n.slice(0,jn),t=e.lastIndexOf(`
572
+ ... (truncated, ${n.length} chars total)`}a(Pn,"truncate");async function Bt(n){try{let{stdout:e}=await $n("grep",["-rl","--include=*.ts","--include=*.js","--include=*.py","--include=*.md","-i",n,"."],{encoding:"utf-8",maxBuffer:1048576,timeout:qt});return e.trim()}catch(e){let t=e;return t?.code===1||d.warn("arena.provider.grep_failed",{pattern:n,code:t?.code,killed:t?.killed,signal:t?.signal}),""}}a(Bt,"safeGrep");async function Yt(){try{let{stdout:n}=await $n("git",["log","--oneline","-10"],{encoding:"utf-8",maxBuffer:1048576,timeout:1e4});return n.trim()}catch{return ""}}a(Yt,"gitLog");function zt(n){let e=new Set(["the","a","an","is","are","was","were","be","been","have","has","do","does","did","will","would","could","should","may","might","to","of","in","for","on","with","at","by","from","about","and","but","or","not","this","that","my","your","what","how","review","discuss","plan","help","please","look","check","\u4E00\u4E0B","\u770B\u770B","\u5E2E","\u6211","\u7684","\u662F\u5426","\u600E\u4E48","\u5982\u4F55","\u8BA8\u8BBA","\u89C4\u5212","\u5BA1\u67E5"]);return n.split(/[\s,;:]+/).map(t=>t.toLowerCase().replace(/[^a-z0-9_\-/]/g,"")).filter(t=>t.length>2&&!e.has(t))}a(zt,"extractSearchHints");h();var jn=1e4,Xt=new Set([".md",".txt",".rst",".adoc",".org"]),Ie={kind:"docs",collect(n,e){let t=[],i=n.sources.find(o=>o.kind==="docs")?.targets??[];for(let o of i){let s=Tn(o);s&&t.push({id:`doc-${o}`,kind:"doc",source:"docs",title:o,ref:o,preview:Dn(s)});}if(i.length===0){let o=["docs","doc","design","specs","proposals","."],s=new Set;for(let c of o){if(!existsSync(c))continue;let m=Ln(c,2);for(let d of m){if(s.has(d))continue;s.add(d);let l=d.toLowerCase();if(e.toLowerCase().split(/\s+/).filter(h=>h.length>2).some(h=>l.includes(h))||s.size<=5){let h=Tn(d);h&&t.push({id:`doc-${d}`,kind:"doc",source:"docs",title:d,ref:d,preview:Dn(h)});}}}}return d.info("arena.provider.docs",{artifactCount:t.length}),t}};function Ln(n,e,t=0){if(t>=e)return [];let r=[];try{let i=readdirSync(n);for(let o of i){if(o.startsWith(".")||o==="node_modules")continue;let s=join(n,o),c=statSync(s);c.isFile()&&Xt.has(extname(o).toLowerCase())?r.push(s):c.isDirectory()&&t<e-1&&r.push(...Ln(s,e,t+1));}}catch{}return r}a(Ln,"findDocFiles");function Tn(n){try{return !existsSync(n)||statSync(n).size>5e5?null:readFileSync(n,"utf-8")}catch{return null}}a(Tn,"safeReadDoc");function Dn(n){if(n.length<=jn)return n;let e=n.slice(0,jn),t=e.lastIndexOf(`
573
573
  `);return e.slice(0,t)+`
574
- ... (truncated, ${n.length} chars total)`}a(Tn,"truncate");h();var Ae={kind:"none",collect(n,e){return []}};var Yt={git:Oe,repo:Fe,docs:Ie,web:Ae,none:Ae},Ln=8e3;async function Fn(n,e,t={}){let r=[],i=[],o=new Set,{onProgress:s,signal:c}=t,m=[];for(let u of n.sources){if(o.has(u.kind))continue;o.add(u.kind);let h=Yt[u.kind];h&&(s?.({type:"evidence_started",source:u.kind}),m.push(Jt(h,n,e,c)));}let d=await Promise.all(m);for(let u of d)r.push(...u.artifacts),b.info("arena.evidence_collected",{source:u.kind,count:u.artifacts.length,durationMs:u.durationMs,timedOut:u.timedOut||void 0}),s?.({type:"evidence_collected",source:u.kind,count:u.artifacts.length,durationMs:u.durationMs,timedOut:u.timedOut});let l=r.find(u=>u.id==="git-branch");l&&i.push({label:"Branch",value:l.preview});let p=r.find(u=>u.id==="git-changed-files");p?.metadata?.totalCount&&i.push({label:"Changed Files",value:String(p.metadata.totalCount)});let g=r.filter(u=>u.source==="docs").length;return g>0&&i.push({label:"Documents",value:String(g)}),i.push({label:"Sources",value:[...o].join(", ")}),i.push({label:"Lenses",value:n.lenses.map(u=>u.name).join(", ")}),{artifacts:r,quickFacts:i}}a(Fn,"collectEvidence");async function Jt(n,e,t,r){let i=Date.now(),o=false,s,c,m=a(()=>{s&&(clearTimeout(s),s=void 0),c&&(r?.removeEventListener("abort",c),c=void 0);},"cleanup"),d=Promise.resolve().then(()=>n.collect(e,t)),l=new Promise(g=>{s=setTimeout(()=>{o=true,b.warn("arena.provider.timeout",{source:n.kind,ms:Ln}),g([]);},Ln),typeof s.unref=="function"&&s.unref(),r&&(c=a(()=>g([]),"abortHandler"),r.addEventListener("abort",c,{once:true}));}),p;try{p=await Promise.race([d,l]);}catch(g){b.warn("arena.provider.error",{source:n.kind,error:g.message}),p=[];}finally{m();}return {kind:n.kind,artifacts:p,durationMs:Date.now()-i,timedOut:o}}a(Jt,"runProviderWithTimeout");h();h();var In=15e3,he=3,Nn=resolve("."),le=[{name:"read_file",description:"Read a file from the repository. Use this when you need to see the full source of a file referenced in the context, or to check surrounding code (callers, type definitions, etc.).",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative file path from repo root"},offset:{type:"number",description:"Start line (1-based, optional)"},limit:{type:"number",description:"Max lines to read (optional, default 200)"}},required:["path"]}},{name:"grep_code",description:"Search for a pattern across the codebase. Use this to find callers, references, type definitions, or usages of symbols.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Regex pattern to search for"},glob:{type:"string",description:"File glob filter, e.g. '*.ts' (optional)"}},required:["pattern"]}},{name:"list_files",description:"List files in a directory. Use this to understand project structure around relevant files.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Directory path relative to repo root (default: '.')"}},required:[]}},{name:"git_show",description:"Show a git object (commit, file at a ref, etc.). Use for inspecting specific commits or viewing a file at a different branch/commit.",inputSchema:{type:"object",properties:{ref:{type:"string",description:"Git ref, e.g. 'HEAD~3', 'main:src/foo.ts', commit hash"}},required:["ref"]}},{name:"git_blame",description:"Show git blame for a file. Use to understand who changed what and when.",inputSchema:{type:"object",properties:{path:{type:"string",description:"File path"},lines:{type:"string",description:"Line range, e.g. '10,20' (optional)"}},required:["path"]}}];function be(n){try{switch(n.toolName){case "read_file":return Zt(n.args);case "grep_code":return er(n.args);case "list_files":return nr(n.args);case "git_show":return tr(n.args);case "git_blame":return rr(n.args);default:return `Unknown tool: ${n.toolName}`}}catch(e){return `Tool error: ${e.message}`}}a(be,"executeContextTool");function Ne(n){let e=resolve(n);return e===Nn||e.startsWith(Nn+"/")?e:null}a(Ne,"validatePath");function Zt(n){let e=n.path;if(!Ne(e))return `Error: path outside repository: ${e}`;if(!existsSync(e))return `Error: file not found: ${e}`;let r=readFileSync(e,"utf-8").split(`
574
+ ... (truncated, ${n.length} chars total)`}a(Dn,"truncate");h();var Ae={kind:"none",collect(n,e){return []}};var Qt={git:Oe,repo:Fe,docs:Ie,web:Ae,none:Ae},Fn=8e3;async function In(n,e,t={}){let r=[],i=[],o=new Set,{onProgress:s,signal:c}=t,m=[];for(let u of n.sources){if(o.has(u.kind))continue;o.add(u.kind);let h=Qt[u.kind];h&&(s?.({type:"evidence_started",source:u.kind}),m.push(Zt(h,n,e,c)));}let d$1=await Promise.all(m);for(let u of d$1)r.push(...u.artifacts),d.info("arena.evidence_collected",{source:u.kind,count:u.artifacts.length,durationMs:u.durationMs,timedOut:u.timedOut||void 0}),s?.({type:"evidence_collected",source:u.kind,count:u.artifacts.length,durationMs:u.durationMs,timedOut:u.timedOut});let l=r.find(u=>u.id==="git-branch");l&&i.push({label:"Branch",value:l.preview});let p=r.find(u=>u.id==="git-changed-files");p?.metadata?.totalCount&&i.push({label:"Changed Files",value:String(p.metadata.totalCount)});let g=r.filter(u=>u.source==="docs").length;return g>0&&i.push({label:"Documents",value:String(g)}),i.push({label:"Sources",value:[...o].join(", ")}),i.push({label:"Lenses",value:n.lenses.map(u=>u.name).join(", ")}),{artifacts:r,quickFacts:i}}a(In,"collectEvidence");async function Zt(n,e,t,r){let i=Date.now(),o=false,s,c,m=a(()=>{s&&(clearTimeout(s),s=void 0),c&&(r?.removeEventListener("abort",c),c=void 0);},"cleanup"),d$1=Promise.resolve().then(()=>n.collect(e,t)),l=new Promise(g=>{s=setTimeout(()=>{o=true,d.warn("arena.provider.timeout",{source:n.kind,ms:Fn}),g([]);},Fn),typeof s.unref=="function"&&s.unref(),r&&(c=a(()=>g([]),"abortHandler"),r.addEventListener("abort",c,{once:true}));}),p;try{p=await Promise.race([d$1,l]);}catch(g){d.warn("arena.provider.error",{source:n.kind,error:g.message}),p=[];}finally{m();}return {kind:n.kind,artifacts:p,durationMs:Date.now()-i,timedOut:o}}a(Zt,"runProviderWithTimeout");h();h();var Nn=15e3,he=3,Un=resolve("."),le=[{name:"read_file",description:"Read a file from the repository. Use this when you need to see the full source of a file referenced in the context, or to check surrounding code (callers, type definitions, etc.).",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative file path from repo root"},offset:{type:"number",description:"Start line (1-based, optional)"},limit:{type:"number",description:"Max lines to read (optional, default 200)"}},required:["path"]}},{name:"grep_code",description:"Search for a pattern across the codebase. Use this to find callers, references, type definitions, or usages of symbols.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Regex pattern to search for"},glob:{type:"string",description:"File glob filter, e.g. '*.ts' (optional)"}},required:["pattern"]}},{name:"list_files",description:"List files in a directory. Use this to understand project structure around relevant files.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Directory path relative to repo root (default: '.')"}},required:[]}},{name:"git_show",description:"Show a git object (commit, file at a ref, etc.). Use for inspecting specific commits or viewing a file at a different branch/commit.",inputSchema:{type:"object",properties:{ref:{type:"string",description:"Git ref, e.g. 'HEAD~3', 'main:src/foo.ts', commit hash"}},required:["ref"]}},{name:"git_blame",description:"Show git blame for a file. Use to understand who changed what and when.",inputSchema:{type:"object",properties:{path:{type:"string",description:"File path"},lines:{type:"string",description:"Line range, e.g. '10,20' (optional)"}},required:["path"]}}];function be(n){try{switch(n.toolName){case "read_file":return or(n.args);case "grep_code":return ar(n.args);case "list_files":return cr(n.args);case "git_show":return dr(n.args);case "git_blame":return lr(n.args);default:return `Unknown tool: ${n.toolName}`}}catch(e){return `Tool error: ${e.message}`}}a(be,"executeContextTool");function Ne(n){let e=resolve(n);return e===Un||e.startsWith(Un+"/")?e:null}a(Ne,"validatePath");function or(n){let e=n.path;if(!Ne(e))return `Error: path outside repository: ${e}`;if(!existsSync(e))return `Error: file not found: ${e}`;let r=readFileSync(e,"utf-8").split(`
575
575
  `),i=Math.max(0,(n.offset??1)-1),o=n.limit??200,c=r.slice(i,i+o).map((m,d)=>`${i+d+1} ${m}`).join(`
576
- `);return Mn(c)}a(Zt,"executeReadFile");function er(n){let e=n.pattern,t=n.glob,r=["-rn","-E","--"];return t&&r.splice(1,0,`--include=${t}`),r.push(e,"."),Ue("grep",r,80)||"No matches found."}a(er,"executeGrepCode");function nr(n){let e=n.path||".";if(!Ne(e))return `Error: path outside repository: ${e}`;try{let t=readdirSync(e),r=[];for(let i of t.slice(0,50)){let o=join(e,i);try{let s=statSync(o),c=s.isDirectory()?"d":"-",m=s.isDirectory()?"":` ${s.size}`;r.push(`${c} ${i}${m}`);}catch{r.push(`? ${i}`);}}return r.join(`
577
- `)||`Empty directory: ${e}`}catch{return `Directory not found: ${e}`}}a(nr,"executeListFiles");function tr(n){let e=ir(n.ref);if(!e)return "Error: invalid git ref";let t=Ue("git",["show","--",e],200);return Mn(t||`Could not resolve: ${e}`)}a(tr,"executeGitShow");function rr(n){let e=n.path;if(!Ne(e))return `Error: path outside repository: ${e}`;let t=n.lines,r=["blame"];return t&&/^\d+,\d+$/.test(t)&&r.push("-L",t),r.push("--",e),Ue("git",r,50)||`Could not blame: ${e}`}a(rr,"executeGitBlame");function ir(n){if(!n||n.length>200)return null;let e=n.replace(/[^a-zA-Z0-9/_\-~^.:]/g,"");return /\.\.\/|;\s|&&|\|\||`|\$\(/.test(e)?null:e||null}a(ir,"sanitizeGitRef");function Ue(n,e,t){try{let r=execFileSync(n,e,{encoding:"utf-8",maxBuffer:524288,timeout:1e4}).trim();if(t){let i=r.split(`
576
+ `);return Kn(c)}a(or,"executeReadFile");function ar(n){let e=n.pattern,t=n.glob,r=["-rn","-E","--"];return t&&r.splice(1,0,`--include=${t}`),r.push(e,"."),Ue("grep",r,80)||"No matches found."}a(ar,"executeGrepCode");function cr(n){let e=n.path||".";if(!Ne(e))return `Error: path outside repository: ${e}`;try{let t=readdirSync(e),r=[];for(let i of t.slice(0,50)){let o=join(e,i);try{let s=statSync(o),c=s.isDirectory()?"d":"-",m=s.isDirectory()?"":` ${s.size}`;r.push(`${c} ${i}${m}`);}catch{r.push(`? ${i}`);}}return r.join(`
577
+ `)||`Empty directory: ${e}`}catch{return `Directory not found: ${e}`}}a(cr,"executeListFiles");function dr(n){let e=pr(n.ref);if(!e)return "Error: invalid git ref";let t=Ue("git",["show","--",e],200);return Kn(t||`Could not resolve: ${e}`)}a(dr,"executeGitShow");function lr(n){let e=n.path;if(!Ne(e))return `Error: path outside repository: ${e}`;let t=n.lines,r=["blame"];return t&&/^\d+,\d+$/.test(t)&&r.push("-L",t),r.push("--",e),Ue("git",r,50)||`Could not blame: ${e}`}a(lr,"executeGitBlame");function pr(n){if(!n||n.length>200)return null;let e=n.replace(/[^a-zA-Z0-9/_\-~^.:]/g,"");return /\.\.\/|;\s|&&|\|\||`|\$\(/.test(e)?null:e||null}a(pr,"sanitizeGitRef");function Ue(n,e,t){try{let r=execFileSync(n,e,{encoding:"utf-8",maxBuffer:524288,timeout:1e4}).trim();if(t){let i=r.split(`
578
578
  `);if(i.length>t)return i.slice(0,t).join(`
579
579
  `)+`
580
- ... (${i.length-t} more lines)`}return r}catch{return ""}}a(Ue,"execFileSafe");function Mn(n){return n.length<=In?n:n.slice(0,In)+`
581
- ... (truncated)`}a(Mn,"truncateResult");var Me={repo_readonly:{name:"repo_readonly",toolNames:["read_file","grep_code","list_files"]},git:{name:"git",toolNames:["read_file","grep_code","list_files","git_show","git_blame"]},docs:{name:"docs",toolNames:["read_file","list_files"]},no_tools:{name:"no_tools",toolNames:[]}},Kn={git:"git",repo:"repo_readonly",docs:"docs",web:"no_tools",none:"no_tools"};function qn(n){let e=new Set;for(let t of n.sources){let r=t.toolPack??Kn[t.kind]??"no_tools",i=Me[r]??Me.no_tools;for(let o of i.toolNames)e.add(o);}return e.size===0?[]:le.filter(t=>e.has(t.name))}a(qn,"selectTools");function Ns(n){return n.sources.some(e=>{let t=Kn[e.kind],r=Me[t];return r&&r.toolNames.length>0})}a(Ns,"hasTools");h();async function Js(n){return (await Ke(n)).map(t=>t.report)}a(Js,"runParticipantResearch");async function Ke(n){let{participants:e,strategy:t,topic:r,baseContext:i,enableContextTools:o,contextTools:s,signal:c,onProgress:m}=n,d=o?s??le:void 0,l=e.map(async p=>{m?.({type:"research_start",participant:p.name});let g=await F({...p.llm,enableStreaming:false}),u=[{role:"user",content:t.researchUserPrompt(r,i)}],h="",y=0,w=[],A=[],$=30;for(let P=0;P<=he;P++){if(y=P,u.length>=$){b.warn("arena.research_message_limit",{participant:p.name,messageCount:u.length,round:P});break}let x=await g.createMessage({systemPrompt:t.researchSystemPrompt(p.name),messages:u,tools:d,signal:c}),q=(x.toolCalls??[]).map(O=>O.toolName),D=x.toolCalls&&x.toolCalls.length>0;if(b.info("arena.research_round",{participant:p.name,round:P,toolCount:x.toolCalls?.length??0,toolNames:q,textLen:x.text?.length??0,stopReason:x.stopReason??"unknown"}),!D){h=x.text;break}m?.({type:"context_lookup",participant:p.name,tools:x.toolCalls.map(O=>`${O.toolName}(${JSON.stringify(O.args)})`)});let _=[];x.text&&_.push({type:"text",text:x.text});for(let O of x.toolCalls)_.push({type:"tool_use",id:O.id,name:O.toolName,input:O.args});u.push({role:"assistant",content:_});let L=[];for(let O of x.toolCalls){let ne=be(O),We={round:P,toolName:O.toolName,args:O.args,resultRef:Vn(O),keptAsEvidence:ne.length>50&&!ne.startsWith("Error:")&&!ne.startsWith("Tool error:")&&!ne.startsWith("Unknown tool:")};if(w.push(We),We.keptAsEvidence){let at=cr(p.name,O,ne,ar(O.toolName));A.push(at);}L.push({type:"tool_result",tool_use_id:O.id,content:ne});}let T=he-P,ue=T<=0;if(ue||T===1){let O=ue?"STOP. You have used your tool budget. Your NEXT response MUST be the findings JSON. Do NOT call any more tools \u2014 any further tool_use will be discarded.":"FINAL ROUND. Use the tool results below plus any prior context to output the findings JSON in your NEXT response. Do not call more tools.";L.unshift({type:"text",text:`[arena-research:${p.name}] ${O}`});}u.push({role:"user",content:L});}if(!h){b.warn("arena.research_force_conclude",{participant:p.name,totalRounds:y,messageCount:u.length});let P=await g.createMessage({systemPrompt:t.researchSystemPrompt(p.name),messages:[...u,{role:"user",content:`You have gathered enough context. Based on ALL the tool results above, output your findings NOW.
580
+ ... (${i.length-t} more lines)`}return r}catch{return ""}}a(Ue,"execFileSafe");function Kn(n){return n.length<=Nn?n:n.slice(0,Nn)+`
581
+ ... (truncated)`}a(Kn,"truncateResult");var Me={repo_readonly:{name:"repo_readonly",toolNames:["read_file","grep_code","list_files"]},git:{name:"git",toolNames:["read_file","grep_code","list_files","git_show","git_blame"]},docs:{name:"docs",toolNames:["read_file","list_files"]},no_tools:{name:"no_tools",toolNames:[]}},qn={git:"git",repo:"repo_readonly",docs:"docs",web:"no_tools",none:"no_tools"};function Vn(n){let e=new Set;for(let t of n.sources){let r=t.toolPack??qn[t.kind]??"no_tools",i=Me[r]??Me.no_tools;for(let o of i.toolNames)e.add(o);}return e.size===0?[]:le.filter(t=>e.has(t.name))}a(Vn,"selectTools");function Ys(n){return n.sources.some(e=>{let t=qn[e.kind],r=Me[t];return r&&r.toolNames.length>0})}a(Ys,"hasTools");h();async function Zs(n){return (await Ke(n)).map(t=>t.report)}a(Zs,"runParticipantResearch");async function Ke(n){let{participants:e,strategy:t,topic:r,baseContext:i,enableContextTools:o,contextTools:s,signal:c,onProgress:m}=n,d$1=o?s??le:void 0,l=e.map(async p=>{m?.({type:"research_start",participant:p.name});let g=await F({...p.llm,enableStreaming:false}),u=[{role:"user",content:t.researchUserPrompt(r,i)}],h="",y=0,w=[],A=[],$=30;for(let P=0;P<=he;P++){if(y=P,u.length>=$){d.warn("arena.research_message_limit",{participant:p.name,messageCount:u.length,round:P});break}let x=await g.createMessage({systemPrompt:t.researchSystemPrompt(p.name),messages:u,tools:d$1,signal:c}),q=(x.toolCalls??[]).map(O=>O.toolName),D=x.toolCalls&&x.toolCalls.length>0;if(d.info("arena.research_round",{participant:p.name,round:P,toolCount:x.toolCalls?.length??0,toolNames:q,textLen:x.text?.length??0,stopReason:x.stopReason??"unknown"}),!D){h=x.text;break}m?.({type:"context_lookup",participant:p.name,tools:x.toolCalls.map(O=>`${O.toolName}(${JSON.stringify(O.args)})`)});let j=[];x.text&&j.push({type:"text",text:x.text});for(let O of x.toolCalls)j.push({type:"tool_use",id:O.id,name:O.toolName,input:O.args});u.push({role:"assistant",content:j});let L=[];for(let O of x.toolCalls){let ne=be(O),Ge={round:P,toolName:O.toolName,args:O.args,resultRef:Bn(O),keptAsEvidence:ne.length>50&&!ne.startsWith("Error:")&&!ne.startsWith("Tool error:")&&!ne.startsWith("Unknown tool:")};if(w.push(Ge),Ge.keptAsEvidence){let gt=fr(p.name,O,ne,gr(O.toolName));A.push(gt);}L.push({type:"tool_result",tool_use_id:O.id,content:ne});}let T=he-P,ue=T<=0;if(ue||T===1){let O=ue?"STOP. You have used your tool budget. Your NEXT response MUST be the findings JSON. Do NOT call any more tools \u2014 any further tool_use will be discarded.":"FINAL ROUND. Use the tool results below plus any prior context to output the findings JSON in your NEXT response. Do not call more tools.";L.unshift({type:"text",text:`[arena-research:${p.name}] ${O}`});}u.push({role:"user",content:L});}if(!h){d.warn("arena.research_force_conclude",{participant:p.name,totalRounds:y,messageCount:u.length});let P=await g.createMessage({systemPrompt:t.researchSystemPrompt(p.name),messages:[...u,{role:"user",content:`You have gathered enough context. Based on ALL the tool results above, output your findings NOW.
582
582
 
583
- Respond ONLY with the <report> XML element specified in the system prompt \u2014 output your highest-confidence findings (typically 5-15 for a substantive topic; each <summary> should be 80+ words with concrete evidence). Do NOT request any more tools. No prose outside the XML.`}]});b.info("arena.research_force_conclude_response",{participant:p.name,textLen:P.text?.length??0,stopReason:P.stopReason??"unknown"}),h=P.text;}if(b.info("arena.research_raw_response",{participant:p.name,textLength:h.length,text:h}),!h||h.trim().length===0){b.warn("arena.research_failed",{participant:p.name,totalRounds:y,messageCount:u.length});let P={participant:p.name,contextSummary:`(research failed: model returned empty response after ${y} tool rounds)`,findings:[]},x={participant:p.name,contextSummary:P.contextSummary,findings:[],toolTrace:w,evidencePackets:A,findingEvidenceLinks:[]};return m?.({type:"research_done",participant:p.name,report:P}),{report:P,dossier:x}}let b$1=t.parseResearchResponse(p.name,h),j=lr(b$1,A),C={participant:p.name,contextSummary:b$1.contextSummary,findings:b$1.findings,toolTrace:w,evidencePackets:A,findingEvidenceLinks:j};return m?.({type:"research_done",participant:p.name,report:b$1}),{report:b$1,dossier:C}});return Promise.all(l)}a(Ke,"runParticipantResearchWithDossiers");function Vn(n){return n.toolName==="read_file"&&n.args.path?`file:${n.args.path}`:n.toolName==="grep_code"&&n.args.pattern?`grep:${n.args.pattern}`:n.toolName==="list_files"&&n.args.path?`dir:${n.args.path}`:n.toolName==="git_show"&&n.args.ref?`git:${n.args.ref}`:n.toolName==="git_blame"&&n.args.path?`blame:${n.args.path}`:`${n.toolName}:${JSON.stringify(n.args).slice(0,60)}`}a(Vn,"buildResultRef");function or(n,e,t,r){return `pkt-${createHash("sha256").update(`${n}:${e}:${t}:${r.slice(0,200)}`).digest("hex").slice(0,12)}`}a(or,"generatePacketId");function ar(n){switch(n){case "git_show":case "git_blame":return "git";case "read_file":case "grep_code":case "list_files":return "repo";default:return "repo"}}a(ar,"inferSourceKind");function cr(n,e,t,r){let i=Vn(e),o=t.slice(0,500);return {packetId:or(n,r,i,o),participant:n,source:r,title:`${e.toolName}: ${dr(e.args)}`,refs:[i],summary:t.slice(0,200),excerpts:[{ref:i,snippet:o,note:`Result of ${e.toolName} call`}]}}a(cr,"buildEvidencePacketFromTool");function dr(n){let e=[];for(let[t,r]of Object.entries(n))typeof r=="string"?e.push(r.slice(0,60)):e.push(`${t}=${JSON.stringify(r)}`);return e.join(", ").slice(0,100)}a(dr,"formatToolArgs");function lr(n,e){let t=[];for(let r of n.findings){let i=[];for(let o of r.evidence){let s=`${o.type}:${o.ref}`;for(let c of e)c.refs.some(d=>!!(d===s||o.ref&&d.includes(o.ref)))&&!i.includes(c.packetId)&&i.push(c.packetId);}i.length>0&&t.push({findingId:r.id,evidencePacketIds:i});}return t}a(lr,"buildFindingEvidenceLinks");h();function Bn(n){let{dossiers:e,ledger:t,onProgress:r}=n,i=[];for(let o of e){let s=new Map;for(let c of o.findingEvidenceLinks)s.set(c.findingId,c.evidencePacketIds);for(let c of o.findings){let m=`${o.participant}:${c.id}`,d=s.get(c.id)??[],l=c.evidence.map(g=>`${g.type}:${g.ref}`),p={claimId:m,owner:o.participant,finding:c,evidenceRefs:l,evidencePacketIds:d,status:"proposed",challenges:[],debateRounds:[]};i.push(p),t.appendClaim(p);}}return r?.({type:"claims_registered",claimCount:i.length}),i}a(Bn,"registerClaims");function Yn(n,e){let t={high:0,medium:1,low:2};return [...n].sort((i,o)=>{let s=t[i.finding.severity??"medium"]??1,c=t[o.finding.severity??"medium"]??1;return s!==c?s-c:o.finding.confidence-i.finding.confidence}).slice(0,e)}a(Yn,"selectClaimsForReview");h();function G(n,e){let{round:t,relevantClaimIds:r}=e,i=new Set(r),o=n.getSnapshot(),s=new Set;for(let g of r){let u=n.getClaimById(g);if(u)for(let h of u.evidencePacketIds)s.add(h);}let c=[];for(let g of s){let u=n.getPacketById(g);u&&c.push(u);}let m=[];for(let g of o.dossiers)for(let u of g.toolTrace)u.keptAsEvidence&&m.push({participant:g.participant,toolName:u.toolName,ref:u.resultRef});let d=o.challenges.filter(g=>i.has(g.claimId)),l=o.requestedChecks.filter(g=>i.has(g.claimId)),p=o.adjudications.filter(g=>i.has(g.claimId));return {round:t,relevantClaimIds:r,evidencePackets:c,toolTraceSummary:m,recentChallenges:d,requestedChecks:l,priorAdjudications:p}}a(G,"buildDigest");function Z(n){return n?n.replace(/<\/?(?:system|assistant|user|system-reminder)[^>]*>/gi,"").replace(/^(?:IGNORE|DISREGARD|FORGET|OVERRIDE|SYSTEM|INSTRUCTION)[:\s].*/gim,"").replace(/\n{3,}/g,`
583
+ Respond ONLY with the <report> XML element specified in the system prompt \u2014 output your highest-confidence findings (typically 5-15 for a substantive topic; each <summary> should be 80+ words with concrete evidence). Do NOT request any more tools. No prose outside the XML.`}]});d.info("arena.research_force_conclude_response",{participant:p.name,textLen:P.text?.length??0,stopReason:P.stopReason??"unknown"}),h=P.text;}if(d.info("arena.research_raw_response",{participant:p.name,textLength:h.length,text:h}),!h||h.trim().length===0){d.warn("arena.research_failed",{participant:p.name,totalRounds:y,messageCount:u.length});let P={participant:p.name,contextSummary:`(research failed: model returned empty response after ${y} tool rounds)`,findings:[]},x={participant:p.name,contextSummary:P.contextSummary,findings:[],toolTrace:w,evidencePackets:A,findingEvidenceLinks:[]};return m?.({type:"research_done",participant:p.name,report:P}),{report:P,dossier:x}}let b=t.parseResearchResponse(p.name,h),_=yr(b,A),C={participant:p.name,contextSummary:b.contextSummary,findings:b.findings,toolTrace:w,evidencePackets:A,findingEvidenceLinks:_};return m?.({type:"research_done",participant:p.name,report:b}),{report:b,dossier:C}});return Promise.all(l)}a(Ke,"runParticipantResearchWithDossiers");function Bn(n){return n.toolName==="read_file"&&n.args.path?`file:${n.args.path}`:n.toolName==="grep_code"&&n.args.pattern?`grep:${n.args.pattern}`:n.toolName==="list_files"&&n.args.path?`dir:${n.args.path}`:n.toolName==="git_show"&&n.args.ref?`git:${n.args.ref}`:n.toolName==="git_blame"&&n.args.path?`blame:${n.args.path}`:`${n.toolName}:${JSON.stringify(n.args).slice(0,60)}`}a(Bn,"buildResultRef");function mr(n,e,t,r){return `pkt-${createHash("sha256").update(`${n}:${e}:${t}:${r.slice(0,200)}`).digest("hex").slice(0,12)}`}a(mr,"generatePacketId");function gr(n){switch(n){case "git_show":case "git_blame":return "git";case "read_file":case "grep_code":case "list_files":return "repo";default:return "repo"}}a(gr,"inferSourceKind");function fr(n,e,t,r){let i=Bn(e),o=t.slice(0,500);return {packetId:mr(n,r,i,o),participant:n,source:r,title:`${e.toolName}: ${hr(e.args)}`,refs:[i],summary:t.slice(0,200),excerpts:[{ref:i,snippet:o,note:`Result of ${e.toolName} call`}]}}a(fr,"buildEvidencePacketFromTool");function hr(n){let e=[];for(let[t,r]of Object.entries(n))typeof r=="string"?e.push(r.slice(0,60)):e.push(`${t}=${JSON.stringify(r)}`);return e.join(", ").slice(0,100)}a(hr,"formatToolArgs");function yr(n,e){let t=[];for(let r of n.findings){let i=[];for(let o of r.evidence){let s=`${o.type}:${o.ref}`;for(let c of e)c.refs.some(d=>!!(d===s||o.ref&&d.includes(o.ref)))&&!i.includes(c.packetId)&&i.push(c.packetId);}i.length>0&&t.push({findingId:r.id,evidencePacketIds:i});}return t}a(yr,"buildFindingEvidenceLinks");h();function Yn(n){let{dossiers:e,ledger:t,onProgress:r}=n,i=[];for(let o of e){let s=new Map;for(let c of o.findingEvidenceLinks)s.set(c.findingId,c.evidencePacketIds);for(let c of o.findings){let m=`${o.participant}:${c.id}`,d=s.get(c.id)??[],l=c.evidence.map(g=>`${g.type}:${g.ref}`),p={claimId:m,owner:o.participant,finding:c,evidenceRefs:l,evidencePacketIds:d,status:"proposed",challenges:[],debateRounds:[]};i.push(p),t.appendClaim(p);}}return r?.({type:"claims_registered",claimCount:i.length}),i}a(Yn,"registerClaims");function zn(n,e){let t={high:0,medium:1,low:2};return [...n].sort((i,o)=>{let s=t[i.finding.severity??"medium"]??1,c=t[o.finding.severity??"medium"]??1;return s!==c?s-c:o.finding.confidence-i.finding.confidence}).slice(0,e)}a(zn,"selectClaimsForReview");h();function G(n,e){let{round:t,relevantClaimIds:r}=e,i=new Set(r),o=n.getSnapshot(),s=new Set;for(let g of r){let u=n.getClaimById(g);if(u)for(let h of u.evidencePacketIds)s.add(h);}let c=[];for(let g of s){let u=n.getPacketById(g);u&&c.push(u);}let m=[];for(let g of o.dossiers)for(let u of g.toolTrace)u.keptAsEvidence&&m.push({participant:g.participant,toolName:u.toolName,ref:u.resultRef});let d=o.challenges.filter(g=>i.has(g.claimId)),l=o.requestedChecks.filter(g=>i.has(g.claimId)),p=o.adjudications.filter(g=>i.has(g.claimId));return {round:t,relevantClaimIds:r,evidencePackets:c,toolTraceSummary:m,recentChallenges:d,requestedChecks:l,priorAdjudications:p}}a(G,"buildDigest");function Z(n){return n?n.replace(/<\/?(?:system|assistant|user|system-reminder)[^>]*>/gi,"").replace(/^(?:IGNORE|DISREGARD|FORGET|OVERRIDE|SYSTEM|INSTRUCTION)[:\s].*/gim,"").replace(/\n{3,}/g,`
584
584
 
585
- `).slice(0,2e3):""}a(Z,"sanitize");function Zs(n){let e=[];if(e.push(`## Round ${n.round} Research Digest`),e.push(`Claims under consideration: ${n.relevantClaimIds.join(", ")}`),n.evidencePackets.length>0){e.push(`
585
+ `).slice(0,2e3):""}a(Z,"sanitize");function oo(n){let e=[];if(e.push(`## Round ${n.round} Research Digest`),e.push(`Claims under consideration: ${n.relevantClaimIds.join(", ")}`),n.evidencePackets.length>0){e.push(`
586
586
  ### Evidence`);for(let t of n.evidencePackets){e.push(`- [${t.packetId}] ${Z(t.title)} (${t.source})`),e.push(` ${Z(t.summary)}`);for(let r of t.excerpts.slice(0,3))e.push(` > ${r.ref}: ${Z(r.snippet)}`),r.note&&e.push(` Note: ${Z(r.note)}`);}}if(n.recentChallenges.length>0){e.push(`
587
587
  ### Challenges`);for(let t of n.recentChallenges)e.push(`- [${t.reviewer}] on ${t.claimId}: ${t.verdict} \u2014 ${Z(t.reason)}`);}if(n.requestedChecks.length>0){e.push(`
588
588
  ### Requested Checks`);for(let t of n.requestedChecks){let r=t.priority?` (${t.priority})`:"";e.push(`- [${t.requestId}]${r}: ${Z(t.description)}`);}}if(n.priorAdjudications.length>0){e.push(`
589
589
  ### Prior Adjudications`);for(let t of n.priorAdjudications)e.push(`- ${t.claimId}: ${t.outcome} \u2014 ${Z(t.rationale)}`);}return e.join(`
590
- `)}a(Zs,"formatDigest");h();var qe={proposed:["under_review"],under_review:["verified","contested","rejected"],contested:["under_review","unresolved","verified","rejected"],verified:[],rejected:[],unresolved:[]};function pe(n,e){return qe[n.status].includes(e)?(n.status=e,true):false}a(pe,"transitionClaim");function pr(n,e,t){if(e.length===0)return n.status;let r=e.map(i=>i.verdict);return r.includes("disagree")||r.includes("needs_evidence")||t?"contested":r.includes("agree")?"verified":n.status}a(pr,"resolveClaimStatus");function Jn(n){return pe(n,"under_review")}a(Jn,"markUnderReview");function zn(n,e,t){let r=pr(n,e,t);pe(n,r);}a(zn,"applyReviewResult");function Ve(n){return pe(n,"unresolved")}a(Ve,"markUnresolved");function ro(n){return qe[n.status].length===0}a(ro,"isTerminal");function io(n){return qe[n.status]}a(io,"validTransitions");h();async function fo(n){let{participants:e,strategy:t,topic:r,reports:i,signal:o,onProgress:s}=n;s?.({type:"cross_review_start",round:1});let c=[],m=e.map(async l=>{let p=i.find(A=>A.participant===l.name),g=i.filter(A=>A.participant!==l.name);if(g.length===0)return [];if(!p)return [];let u=await F({...l.llm,enableStreaming:false}),h=t.crossReviewSystemPrompt(l.name),y=t.crossReviewUserPrompt(r,p,g),w=await u.createMessage({systemPrompt:h,messages:[{role:"user",content:y}],signal:o});if(b.info("arena.cross_review_raw_response",{participant:l.name,text:w.text,stopReason:w.stopReason}),w.stopReason==="length"){b.warn("arena.cross_review_truncated",{participant:l.name});let A=await u.createMessage({systemPrompt:h,messages:[{role:"user",content:y},{role:"assistant",content:w.text},{role:"user",content:"Your previous response was truncated. Please output the COMPLETE review JSON, using shorter comments. Respond ONLY with JSON."}],signal:o});b.info("arena.cross_review_retry",{participant:l.name,stopReason:A.stopReason}),w=A;}return t.parseCrossReviewResponse(l.name,w.text)}),d=await Promise.all(m);for(let l of d)c.push(...l);return s?.({type:"cross_review_done",reviews:c}),c}a(fo,"runCrossReview");async function Be(n){let{participants:e,strategy:t,topic:r,reports:i,ledger:o,limits:s,mode:c,signal:m,onProgress:d}=n,l=o.getAllClaims(),p=Yn(l,s.maxClaimsForReview);for(let b of p)Jn(b);let g=p.map(b=>b.claimId),u=G(o,{round:1,relevantClaimIds:g}),h=c==="planning"&&te(t);d?.(h?{type:"planning_merge_review_start"}:{type:"verification_start"});let y=U(t),w=[],A=[],$=e.map(async b$1=>{let j=i.find(D=>D.participant===b$1.name),C=i.filter(D=>D.participant!==b$1.name);if(!j||C.length===0)return;let P=p.filter(D=>D.owner!==b$1.name);if(P.length===0)return;let x=await F({...b$1.llm,enableStreaming:false}),q=t.crossReviewSystemPrompt(b$1.name);if(y){let D=h?t.mergeReviewUserPrompt(r,j,P,u):t.verificationReviewUserPrompt(r,j,P,u),_=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});b.info("arena.verification_review_raw",{participant:b$1.name,stopReason:_.stopReason}),_.stopReason==="length"&&(_=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D},{role:"assistant",content:_.text},{role:"user",content:"Truncated. Output the COMPLETE JSON array, shorter comments. JSON only."}],signal:m}));let L=h?t.parseMergeReviewResponse(b$1.name,_.text):t.parseVerificationReviewResponse(b$1.name,_.text);for(let T of L)A.push(T),o.appendChallenge(T);for(let T of L)w.push({reviewer:T.reviewer,findingId:T.claimId,verdict:T.verdict,reason:T.reason,extraEvidence:T.supportingEvidenceRefs});}else {let D=t.crossReviewUserPrompt(r,j,C),_=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});_.stopReason==="length"&&(_=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D},{role:"assistant",content:_.text},{role:"user",content:"Truncated. Output COMPLETE review JSON. Shorter comments. JSON only."}],signal:m}));let L=t.parseCrossReviewResponse(b$1.name,_.text);w.push(...L);for(let T of L){let ue=p.find(ee=>ee.finding.id===T.findingId||ee.claimId===T.findingId);if(ue){let ee={reviewer:T.reviewer,claimId:ue.claimId,verdict:T.verdict,reason:T.reason,supportingEvidenceRefs:T.extraEvidence};A.push(ee),o.appendChallenge(ee);}}}});await Promise.all($);for(let b of p){let j=o.getChallengesForClaim(b.claimId),C=o.getPendingChecksForClaim(b.claimId).length>0;zn(b,j,C);}return b.info("arena.verification_done",{reviewCount:w.length,challengeCount:A.length,claimStatuses:Object.fromEntries(p.map(b=>[b.claimId,b.status]))}),d?.(h?{type:"planning_merge_review_done",mergeCount:A.length}:{type:"verification_done",challengeCount:A.length}),d?.({type:"cross_review_done",reviews:w}),{reviews:w,challenges:A}}a(Be,"runVerificationReview");h();async function Wn(n){let{participants:e,strategy:t,topic:r,ledger:i,limits:o,maxRounds:s,signal:c,onProgress:m}=n,d=i.getClaimsByStatus("contested").slice(0,o.maxContestedClaimsForDebate);if(d.length===0)return b.info("arena.debate_skip",{reason:"no contested claims"}),[];b.info("arena.debate_start",{contestedCount:d.length,maxRounds:s});let l=[],p=U(t);for(let g of d){c?.throwIfAborted();let u=await ur({claim:g,participants:e,strategy:t,v2:p,topic:r,ledger:i,maxRounds:s,signal:c,onProgress:m});l.push(...u),g.debateRounds.push(...u);}return l}a(Wn,"runDebateRounds");async function ur(n){let{claim:e,participants:t,strategy:r,v2:i,topic:o,ledger:s,maxRounds:c,signal:m,onProgress:d}=n,l=t.find(y=>y.name===e.owner),p=mr(e,t);if(!l||!p)return b.warn("arena.debate_skip_claim",{claimId:e.claimId,reason:"cannot identify debaters"}),[];let g=[l,p],u=[],h=[];for(let y=1;y<=c;y++){m?.throwIfAborted(),d?.({type:"debate_round_start",round:y,claims:[e.claimId]});let w=G(s,{round:y,relevantClaimIds:[e.claimId]}),A=g.map(async P=>{let x=await F({...P.llm,enableStreaming:false}),q=r.crossReviewSystemPrompt(P.name),D;i?D=r.debateTurnUserPrompt(o,e,h,w):D=gr(o,e,h);let _=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});return b.info("arena.debate_turn",{participant:P.name,claimId:e.claimId,round:y,stopReason:_.stopReason}),i?r.parseDebateTurnResponse(P.name,_.text):z(P.name,_.text)}),$=await Promise.all(A);h.push(...$);let b$1=$.every(P=>P.stance==="support"||P.stance==="narrow"),j=b$1?`Converged in round ${y}: ${$.map(P=>`${P.participant}=${P.stance}`).join(", ")}`:void 0,C={round:y,claimId:e.claimId,participants:$,resolved:b$1,resolutionNote:j};if(u.push(C),d?.({type:"debate_round_done",round:y,resolved:b$1?1:0}),b$1){b.info("arena.debate_converged",{claimId:e.claimId,round:y});break}}return u}a(ur,"debateClaim");function mr(n,e){let t=n.challenges.find(o=>o.verdict==="disagree"),r=n.challenges.find(o=>o.verdict==="needs_evidence"),i=t??r??n.challenges[0];if(i)return e.find(o=>o.name===i.reviewer)}a(mr,"findPrimaryChallenger");function gr(n,e,t){let r=t.length>0?t.map(i=>`[${i.participant}] ${i.stance}: ${i.summary}`).join(`
590
+ `)}a(oo,"formatDigest");h();var qe={proposed:["under_review"],under_review:["verified","contested","rejected"],contested:["under_review","unresolved","verified","rejected"],verified:[],rejected:[],unresolved:[]};function pe(n,e){return qe[n.status].includes(e)?(n.status=e,true):false}a(pe,"transitionClaim");function vr(n,e,t){if(e.length===0)return n.status;let r=e.map(i=>i.verdict);return r.includes("disagree")||r.includes("needs_evidence")||t?"contested":r.includes("agree")?"verified":n.status}a(vr,"resolveClaimStatus");function Jn(n){return pe(n,"under_review")}a(Jn,"markUnderReview");function Wn(n,e,t){let r=vr(n,e,t);pe(n,r);}a(Wn,"applyReviewResult");function Ve(n){return pe(n,"unresolved")}a(Ve,"markUnresolved");function po(n){return qe[n.status].length===0}a(po,"isTerminal");function uo(n){return qe[n.status]}a(uo,"validTransitions");h();async function bo(n){let{participants:e,strategy:t,topic:r,reports:i,signal:o,onProgress:s}=n;s?.({type:"cross_review_start",round:1});let c=[],m=e.map(async l=>{let p=i.find(A=>A.participant===l.name),g=i.filter(A=>A.participant!==l.name);if(g.length===0)return [];if(!p)return [];let u=await F({...l.llm,enableStreaming:false}),h=t.crossReviewSystemPrompt(l.name),y=t.crossReviewUserPrompt(r,p,g),w=await u.createMessage({systemPrompt:h,messages:[{role:"user",content:y}],signal:o});if(d.info("arena.cross_review_raw_response",{participant:l.name,text:w.text,stopReason:w.stopReason}),w.stopReason==="length"){d.warn("arena.cross_review_truncated",{participant:l.name});let A=await u.createMessage({systemPrompt:h,messages:[{role:"user",content:y},{role:"assistant",content:w.text},{role:"user",content:"Your previous response was truncated. Please output the COMPLETE review JSON, using shorter comments. Respond ONLY with JSON."}],signal:o});d.info("arena.cross_review_retry",{participant:l.name,stopReason:A.stopReason}),w=A;}return t.parseCrossReviewResponse(l.name,w.text)}),d$1=await Promise.all(m);for(let l of d$1)c.push(...l);return s?.({type:"cross_review_done",reviews:c}),c}a(bo,"runCrossReview");async function Be(n){let{participants:e,strategy:t,topic:r,reports:i,ledger:o,limits:s,mode:c,signal:m,onProgress:d$1}=n,l=o.getAllClaims(),p=zn(l,s.maxClaimsForReview);for(let b of p)Jn(b);let g=p.map(b=>b.claimId),u=G(o,{round:1,relevantClaimIds:g}),h=c==="planning"&&te(t);d$1?.(h?{type:"planning_merge_review_start"}:{type:"verification_start"});let y=U(t),w=[],A=[],$=e.map(async b=>{let _=i.find(D=>D.participant===b.name),C=i.filter(D=>D.participant!==b.name);if(!_||C.length===0)return;let P=p.filter(D=>D.owner!==b.name);if(P.length===0)return;let x=await F({...b.llm,enableStreaming:false}),q=t.crossReviewSystemPrompt(b.name);if(y){let D=h?t.mergeReviewUserPrompt(r,_,P,u):t.verificationReviewUserPrompt(r,_,P,u),j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});d.info("arena.verification_review_raw",{participant:b.name,stopReason:j.stopReason}),j.stopReason==="length"&&(j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D},{role:"assistant",content:j.text},{role:"user",content:"Truncated. Output the COMPLETE JSON array, shorter comments. JSON only."}],signal:m}));let L=h?t.parseMergeReviewResponse(b.name,j.text):t.parseVerificationReviewResponse(b.name,j.text);for(let T of L)A.push(T),o.appendChallenge(T);for(let T of L)w.push({reviewer:T.reviewer,findingId:T.claimId,verdict:T.verdict,reason:T.reason,extraEvidence:T.supportingEvidenceRefs});}else {let D=t.crossReviewUserPrompt(r,_,C),j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});j.stopReason==="length"&&(j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D},{role:"assistant",content:j.text},{role:"user",content:"Truncated. Output COMPLETE review JSON. Shorter comments. JSON only."}],signal:m}));let L=t.parseCrossReviewResponse(b.name,j.text);w.push(...L);for(let T of L){let ue=p.find(ee=>ee.finding.id===T.findingId||ee.claimId===T.findingId);if(ue){let ee={reviewer:T.reviewer,claimId:ue.claimId,verdict:T.verdict,reason:T.reason,supportingEvidenceRefs:T.extraEvidence};A.push(ee),o.appendChallenge(ee);}}}});await Promise.all($);for(let b of p){let _=o.getChallengesForClaim(b.claimId),C=o.getPendingChecksForClaim(b.claimId).length>0;Wn(b,_,C);}return d.info("arena.verification_done",{reviewCount:w.length,challengeCount:A.length,claimStatuses:Object.fromEntries(p.map(b=>[b.claimId,b.status]))}),d$1?.(h?{type:"planning_merge_review_done",mergeCount:A.length}:{type:"verification_done",challengeCount:A.length}),d$1?.({type:"cross_review_done",reviews:w}),{reviews:w,challenges:A}}a(Be,"runVerificationReview");h();async function Gn(n){let{participants:e,strategy:t,topic:r,ledger:i,limits:o,maxRounds:s,signal:c,onProgress:m}=n,d$1=i.getClaimsByStatus("contested").slice(0,o.maxContestedClaimsForDebate);if(d$1.length===0)return d.info("arena.debate_skip",{reason:"no contested claims"}),[];d.info("arena.debate_start",{contestedCount:d$1.length,maxRounds:s});let l=[],p=U(t);for(let g of d$1){c?.throwIfAborted();let u=await Rr({claim:g,participants:e,strategy:t,v2:p,topic:r,ledger:i,maxRounds:s,signal:c,onProgress:m});l.push(...u),g.debateRounds.push(...u);}return l}a(Gn,"runDebateRounds");async function Rr(n){let{claim:e,participants:t,strategy:r,v2:i,topic:o,ledger:s,maxRounds:c,signal:m,onProgress:d$1}=n,l=t.find(y=>y.name===e.owner),p=wr(e,t);if(!l||!p)return d.warn("arena.debate_skip_claim",{claimId:e.claimId,reason:"cannot identify debaters"}),[];let g=[l,p],u=[],h=[];for(let y=1;y<=c;y++){m?.throwIfAborted(),d$1?.({type:"debate_round_start",round:y,claims:[e.claimId]});let w=G(s,{round:y,relevantClaimIds:[e.claimId]}),A=g.map(async P=>{let x=await F({...P.llm,enableStreaming:false}),q=r.crossReviewSystemPrompt(P.name),D;i?D=r.debateTurnUserPrompt(o,e,h,w):D=Ar(o,e,h);let j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});return d.info("arena.debate_turn",{participant:P.name,claimId:e.claimId,round:y,stopReason:j.stopReason}),i?r.parseDebateTurnResponse(P.name,j.text):J(P.name,j.text)}),$=await Promise.all(A);h.push(...$);let b=$.every(P=>P.stance==="support"||P.stance==="narrow"),_=b?`Converged in round ${y}: ${$.map(P=>`${P.participant}=${P.stance}`).join(", ")}`:void 0,C={round:y,claimId:e.claimId,participants:$,resolved:b,resolutionNote:_};if(u.push(C),d$1?.({type:"debate_round_done",round:y,resolved:b?1:0}),b){d.info("arena.debate_converged",{claimId:e.claimId,round:y});break}}return u}a(Rr,"debateClaim");function wr(n,e){let t=n.challenges.find(o=>o.verdict==="disagree"),r=n.challenges.find(o=>o.verdict==="needs_evidence"),i=t??r??n.challenges[0];if(i)return e.find(o=>o.name===i.reviewer)}a(wr,"findPrimaryChallenger");function Ar(n,e,t){let r=t.length>0?t.map(i=>`[${i.participant}] ${i.stance}: ${i.summary}`).join(`
591
591
  `):"No prior turns.";return `## Topic: ${n}
592
592
 
593
593
  ## Contested Claim
@@ -599,7 +599,7 @@ ${r}
599
599
 
600
600
  State your position on this claim. Build on prior turns: cite specific evidence, acknowledge counter-arguments, and explain your reasoning in 150-300 words. Brevity here means missed nuance \u2014 depth wins.
601
601
  Respond ONLY with JSON:
602
- {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}a(gr,"buildFallbackDebatePrompt");h();async function Gn(n){let{concluder:e,strategy:t,topic:r,ledger:i,signal:o,onProgress:s}=n,c=[],m=U(t),d=i.getClaimsByStatus("contested"),l=i.getClaimsByStatus("verified");if(d.length===0&&l.length===0)return b.info("arena.adjudication_skip",{reason:"no claims to adjudicate"}),[];b.info("arena.adjudication_start",{contested:d.length,verified:l.length});let p=await F({...e.llm,enableStreaming:false});for(let y of d){o?.throwIfAborted();let w=G(i,{round:0,relevantClaimIds:[y.claimId]}),A=t.consensusSystemPrompt(),$;m?$=t.adjudicationUserPrompt(r,y,y.debateRounds,w):$=hr(r,y);let b$1=await p.createMessage({systemPrompt:A,messages:[{role:"user",content:$}],signal:o});b.info("arena.adjudication_response",{claimId:y.claimId,stopReason:b$1.stopReason});let j;m?(j=t.parseAdjudicationResponse(b$1.text),j.claimId=y.claimId):j=W(y.claimId,b$1.text),i.appendAdjudication(j),c.push(j),fr(y,j);}for(let y of l){let w={claimId:y.claimId,outcome:"accepted",rationale:"Verified by peer review without contest",finalSummary:y.finding.summary,supportingEvidenceRefs:y.evidenceRefs};i.appendAdjudication(w),c.push(w);}let g=i.getClaimsByStatus("proposed","under_review");for(let y of g)Ve(y);let u=c.filter(y=>y.outcome==="accepted"||y.outcome==="accepted_with_revision").length,h=i.getClaimsByStatus("unresolved").length;return b.info("arena.adjudication_done",{total:c.length,accepted:u,unresolved:h}),s?.({type:"adjudication_done",accepted:u,unresolved:h}),c}a(Gn,"runAdjudication");function fr(n,e){switch(e.outcome){case "accepted":case "accepted_with_revision":pe(n,"verified");break;case "rejected":pe(n,"rejected");break;case "unresolved":Ve(n);break}}a(fr,"applyAdjudicationOutcome");function hr(n,e){let t=e.challenges.length>0?e.challenges.map(i=>`[${i.reviewer}] ${i.verdict}: ${i.reason}`).join(`
602
+ {"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}a(Ar,"buildFallbackDebatePrompt");h();async function Hn(n){let{concluder:e,strategy:t,topic:r,ledger:i,signal:o,onProgress:s}=n,c=[],m=U(t),d$1=i.getClaimsByStatus("contested"),l=i.getClaimsByStatus("verified");if(d$1.length===0&&l.length===0)return d.info("arena.adjudication_skip",{reason:"no claims to adjudicate"}),[];d.info("arena.adjudication_start",{contested:d$1.length,verified:l.length});let p=await F({...e.llm,enableStreaming:false});for(let y of d$1){o?.throwIfAborted();let w=G(i,{round:0,relevantClaimIds:[y.claimId]}),A=t.consensusSystemPrompt(),$;m?$=t.adjudicationUserPrompt(r,y,y.debateRounds,w):$=Cr(r,y);let b=await p.createMessage({systemPrompt:A,messages:[{role:"user",content:$}],signal:o});d.info("arena.adjudication_response",{claimId:y.claimId,stopReason:b.stopReason});let _;m?(_=t.parseAdjudicationResponse(b.text),_.claimId=y.claimId):_=W(y.claimId,b.text),i.appendAdjudication(_),c.push(_),br(y,_);}for(let y of l){let w={claimId:y.claimId,outcome:"accepted",rationale:"Verified by peer review without contest",finalSummary:y.finding.summary,supportingEvidenceRefs:y.evidenceRefs};i.appendAdjudication(w),c.push(w);}let g=i.getClaimsByStatus("proposed","under_review");for(let y of g)Ve(y);let u=c.filter(y=>y.outcome==="accepted"||y.outcome==="accepted_with_revision").length,h=i.getClaimsByStatus("unresolved").length;return d.info("arena.adjudication_done",{total:c.length,accepted:u,unresolved:h}),s?.({type:"adjudication_done",accepted:u,unresolved:h}),c}a(Hn,"runAdjudication");function br(n,e){switch(e.outcome){case "accepted":case "accepted_with_revision":pe(n,"verified");break;case "rejected":pe(n,"rejected");break;case "unresolved":Ve(n);break}}a(br,"applyAdjudicationOutcome");function Cr(n,e){let t=e.challenges.length>0?e.challenges.map(i=>`[${i.reviewer}] ${i.verdict}: ${i.reason}`).join(`
603
603
  `):"No challenges.",r=e.debateRounds.length>0?e.debateRounds.map(i=>`Round ${i.round}:
604
604
  `+i.participants.map(o=>` [${o.participant}] ${o.stance}: ${o.summary}`).join(`
605
605
  `)+`
@@ -620,22 +620,22 @@ ${r}
620
620
 
621
621
  As moderator, adjudicate this claim based on all available evidence.
622
622
  Respond ONLY with JSON:
623
- {"outcome": "accepted|accepted_with_revision|rejected|unresolved", "rationale": "...", "finalSummary": "revised claim summary if needed", "supportingEvidenceRefs": ["..."]}`}a(hr,"buildFallbackAdjudicationPrompt");h();async function Ye(n){let{concluder:e,strategy:t,topic:r,reports:i,reviews:o,claimSummary:s,signal:c,onProgress:m}=n;m?.({type:"consensus_start"});let d=await F({...e.llm,enableStreaming:false}),l=t.consensusSystemPrompt(),p;U(t)&&s?(p=t.claimAwareConsensusUserPrompt(r,i,o,s),b.info("arena.consensus_claim_aware",{verified:s.verified.length,unresolved:s.unresolved.length,contested:s.contested.length,rejected:s.rejected.length})):p=t.consensusUserPrompt(r,i,o);let u=await d.createMessage({systemPrompt:l,messages:[{role:"user",content:p}],signal:c});if(b.info("arena.consensus_raw_response",{text:u.text,stopReason:u.stopReason}),u.stopReason==="length"){b.warn("arena.consensus_truncated",{textLen:u.text?.length??0,maxTokens:e.llm.maxTokens});let y=await d.createMessage({systemPrompt:l,messages:[{role:"user",content:p},{role:"assistant",content:u.text},{role:"user",content:"Your previous response was truncated. Please output a COMPLETE but more concise version of the consensus JSON. Keep all sections but use shorter summaries. Respond ONLY with the complete JSON object."}],signal:c});b.info("arena.consensus_retry_response",{textLen:y.text?.length??0,stopReason:y.stopReason}),y.stopReason==="length"&&b.warn("arena.consensus_still_truncated",{textLen:y.text?.length??0});let w=t.parseConsensusResponse(y.text);return m?.({type:"consensus_done",consensus:w}),w}let h=t.parseConsensusResponse(u.text);return m?.({type:"consensus_done",consensus:h}),h}a(Ye,"buildConsensus");h();var yr=50,vr=200,Rr=100,Ce=class{static{a(this,"ArenaLedger");}ledger;index;constructor(){this.ledger={dossiers:[],evidencePackets:[],toolTraces:[],claims:[],challenges:[],requestedChecks:[],adjudications:[]},this.index={claimsById:new Map,packetsById:new Map,requestsById:new Map};}checkGrowth(){let e=this.ledger.claims.length,t=this.ledger.evidencePackets.length,r=this.ledger.challenges.length;(e===yr||t===vr||r===Rr)&&b.warn("arena.ledger_growth",{claims:e,packets:t,challenges:r,toolTraces:this.ledger.toolTraces.length});}appendDossier(e){this.ledger.dossiers.push(e);for(let t of e.evidencePackets)this.appendEvidencePacket(t);for(let t of e.toolTrace)this.ledger.toolTraces.push(t);}appendEvidencePacket(e){this.index.packetsById.has(e.packetId)||(this.ledger.evidencePackets.push(e),this.index.packetsById.set(e.packetId,e));}appendClaim(e){this.ledger.claims.push(e),this.index.claimsById.set(e.claimId,e),this.checkGrowth();}appendChallenge(e){this.ledger.challenges.push(e);let t=this.index.claimsById.get(e.claimId);if(t&&t.challenges.push(e),this.checkGrowth(),e.requestedChecks)for(let r of e.requestedChecks)this.appendRequestedCheck(r);}appendRequestedCheck(e){this.index.requestsById.has(e.requestId)||(this.ledger.requestedChecks.push(e),this.index.requestsById.set(e.requestId,e));}appendAdjudication(e){this.ledger.adjudications.push(e);let t=this.index.claimsById.get(e.claimId);t&&(t.adjudication=e);}getSnapshot(){return this.ledger}getClaimById(e){return this.index.claimsById.get(e)}getPacketById(e){return this.index.packetsById.get(e)}getAllClaims(){return this.ledger.claims}getClaimsByStatus(...e){let t=new Set(e);return this.ledger.claims.filter(r=>t.has(r.status))}getClaimsByOwner(e){return this.ledger.claims.filter(t=>t.owner===e)}getChallengesForClaim(e){return this.ledger.challenges.filter(t=>t.claimId===e)}getPendingChecks(){return this.ledger.requestedChecks}getPendingChecksForClaim(e){return this.ledger.requestedChecks.filter(t=>t.claimId===e)}getPacketsForClaim(e){let t=this.index.claimsById.get(e);return t?t.evidencePacketIds.map(r=>this.index.packetsById.get(r)).filter(r=>r!==void 0):[]}getDossiers(){return this.ledger.dossiers}getDossierByParticipant(e){let t=this.ledger.dossiers.filter(r=>r.participant===e);return t[t.length-1]}};h();h();var wr=3;async function Hn(n){let{concluder:e,strategy:t,topic:r,phases:i,ledger:o,limits:s,signal:c,onProgress:m}=n,d=n.enableContextTools!==false?n.contextTools??le:void 0,l=i.slice(0,s.maxExpandedPhasesPerRun);m?.({type:"roadmap_expansion_start",phaseCount:l.length}),b.info("arena.detail_expansion_start",{phaseCount:l.length});let p=[],g=await F({...e.llm,enableStreaming:false}),u=t.detailExpansionSystemPrompt();for(let h of l){c?.throwIfAborted();let y=h.relatedFindings??[],w=G(o,{round:1,relevantClaimIds:y}),$=[{role:"user",content:t.detailExpansionUserPrompt(r,h,w)}],b$1="",j=d?Math.min(wr,he):0;for(let P=0;P<=j;P++){let x=await g.createMessage({systemPrompt:u,messages:$,tools:d,signal:c}),q=x.toolCalls&&x.toolCalls.length>0;if(b.info("arena.detail_expansion_round",{phase:h.title,round:P,toolCount:x.toolCalls?.length??0,stopReason:x.stopReason}),!q){b$1=x.text;break}let D=[];x.text&&D.push({type:"text",text:x.text});for(let L of x.toolCalls)D.push({type:"tool_use",id:L.id,name:L.toolName,input:L.args});$.push({role:"assistant",content:D});let _=[];for(let L of x.toolCalls){let T=be(L);_.push({type:"tool_result",tool_use_id:L.id,content:T.slice(0,15e3)});}$.push({role:"user",content:_}),P===j&&(b$1=x.text);}b$1||(b$1=""),b.info("arena.detail_expansion_phase",{phase:h.title,textLen:b$1.length});let C=t.parseDetailExpansionResponse(b$1);C.phaseTitle||(C.phaseTitle=h.title),C.targetFiles.length===0&&C.codeChanges.length===0&&b.warn("arena.detail_expansion_sparse",{phase:h.title,objective:C.objective.slice(0,200)}),p.push(C);}return b.info("arena.detail_expansion_done",{detailCount:p.length}),m?.({type:"roadmap_expansion_done",detailCount:p.length}),p}a(Hn,"runDetailExpansion");h();function Ar(n){return n.replace(/[\x00-\x7F]/g,"").length/Math.max(n.length,1)<.15?"":/[\u4e00-\u9fff\u3400-\u4dbf]/.test(n)?"IMPORTANT: The user's query is in Chinese. You MUST respond in Chinese (\u4E2D\u6587). All text output \u2014 summaries, findings, titles, descriptions, rationale \u2014 must be written in Chinese. JSON field values must be in Chinese.":/[\u3040-\u309f\u30a0-\u30ff]/.test(n)?"IMPORTANT: The user's query is in Japanese. You MUST respond in Japanese (\u65E5\u672C\u8A9E). All text output must be in Japanese. JSON field values must be in Japanese.":/[\uac00-\ud7af]/.test(n)?"IMPORTANT: The user's query is in Korean. You MUST respond in Korean (\uD55C\uAD6D\uC5B4). All text output must be in Korean. JSON field values must be in Korean.":/[\u0400-\u04ff]/.test(n)?"IMPORTANT: The user's query is in Russian. You MUST respond in Russian (\u0440\u0443\u0441\u0441\u043A\u0438\u0439). All text output must be in Russian. JSON field values must be in Russian.":/[\u0600-\u06ff]/.test(n)?"IMPORTANT: The user's query is in Arabic. You MUST respond in Arabic (\u0627\u0644\u0639\u0631\u0628\u064A\u0629). All text output must be in Arabic. JSON field values must be in Arabic.":"IMPORTANT: Respond in the same language as the user's query. All text output \u2014 summaries, findings, titles, descriptions \u2014 must match the query language."}a(Ar,"detectLanguageInstruction");function Xn(n,e){let t=Ar(e);return t?{researchSystemPrompt(r){return `${t}
623
+ {"outcome": "accepted|accepted_with_revision|rejected|unresolved", "rationale": "...", "finalSummary": "revised claim summary if needed", "supportingEvidenceRefs": ["..."]}`}a(Cr,"buildFallbackAdjudicationPrompt");h();async function Ye(n){let{concluder:e,strategy:t,topic:r,reports:i,reviews:o,claimSummary:s,signal:c,onProgress:m}=n;m?.({type:"consensus_start"});let d$1=await F({...e.llm,enableStreaming:false}),l=t.consensusSystemPrompt(),p;U(t)&&s?(p=t.claimAwareConsensusUserPrompt(r,i,o,s),d.info("arena.consensus_claim_aware",{verified:s.verified.length,unresolved:s.unresolved.length,contested:s.contested.length,rejected:s.rejected.length})):p=t.consensusUserPrompt(r,i,o);let u=await d$1.createMessage({systemPrompt:l,messages:[{role:"user",content:p}],signal:c});if(d.info("arena.consensus_raw_response",{text:u.text,stopReason:u.stopReason}),u.stopReason==="length"){d.warn("arena.consensus_truncated",{textLen:u.text?.length??0,maxTokens:e.llm.maxTokens});let y=await d$1.createMessage({systemPrompt:l,messages:[{role:"user",content:p},{role:"assistant",content:u.text},{role:"user",content:"Your previous response was truncated. Please output a COMPLETE but more concise version of the consensus JSON. Keep all sections but use shorter summaries. Respond ONLY with the complete JSON object."}],signal:c});d.info("arena.consensus_retry_response",{textLen:y.text?.length??0,stopReason:y.stopReason}),y.stopReason==="length"&&d.warn("arena.consensus_still_truncated",{textLen:y.text?.length??0});let w=t.parseConsensusResponse(y.text);return m?.({type:"consensus_done",consensus:w}),w}let h=t.parseConsensusResponse(u.text);return m?.({type:"consensus_done",consensus:h}),h}a(Ye,"buildConsensus");h();var Pr=50,Sr=200,kr=100,Ce=class{static{a(this,"ArenaLedger");}ledger;index;constructor(){this.ledger={dossiers:[],evidencePackets:[],toolTraces:[],claims:[],challenges:[],requestedChecks:[],adjudications:[]},this.index={claimsById:new Map,packetsById:new Map,requestsById:new Map};}checkGrowth(){let e=this.ledger.claims.length,t=this.ledger.evidencePackets.length,r=this.ledger.challenges.length;(e===Pr||t===Sr||r===kr)&&d.warn("arena.ledger_growth",{claims:e,packets:t,challenges:r,toolTraces:this.ledger.toolTraces.length});}appendDossier(e){this.ledger.dossiers.push(e);for(let t of e.evidencePackets)this.appendEvidencePacket(t);for(let t of e.toolTrace)this.ledger.toolTraces.push(t);}appendEvidencePacket(e){this.index.packetsById.has(e.packetId)||(this.ledger.evidencePackets.push(e),this.index.packetsById.set(e.packetId,e));}appendClaim(e){this.ledger.claims.push(e),this.index.claimsById.set(e.claimId,e),this.checkGrowth();}appendChallenge(e){this.ledger.challenges.push(e);let t=this.index.claimsById.get(e.claimId);if(t&&t.challenges.push(e),this.checkGrowth(),e.requestedChecks)for(let r of e.requestedChecks)this.appendRequestedCheck(r);}appendRequestedCheck(e){this.index.requestsById.has(e.requestId)||(this.ledger.requestedChecks.push(e),this.index.requestsById.set(e.requestId,e));}appendAdjudication(e){this.ledger.adjudications.push(e);let t=this.index.claimsById.get(e.claimId);t&&(t.adjudication=e);}getSnapshot(){return this.ledger}getClaimById(e){return this.index.claimsById.get(e)}getPacketById(e){return this.index.packetsById.get(e)}getAllClaims(){return this.ledger.claims}getClaimsByStatus(...e){let t=new Set(e);return this.ledger.claims.filter(r=>t.has(r.status))}getClaimsByOwner(e){return this.ledger.claims.filter(t=>t.owner===e)}getChallengesForClaim(e){return this.ledger.challenges.filter(t=>t.claimId===e)}getPendingChecks(){return this.ledger.requestedChecks}getPendingChecksForClaim(e){return this.ledger.requestedChecks.filter(t=>t.claimId===e)}getPacketsForClaim(e){let t=this.index.claimsById.get(e);return t?t.evidencePacketIds.map(r=>this.index.packetsById.get(r)).filter(r=>r!==void 0):[]}getDossiers(){return this.ledger.dossiers}getDossierByParticipant(e){let t=this.ledger.dossiers.filter(r=>r.participant===e);return t[t.length-1]}};h();h();var xr=3;async function Xn(n){let{concluder:e,strategy:t,topic:r,phases:i,ledger:o,limits:s,signal:c,onProgress:m}=n,d$1=n.enableContextTools!==false?n.contextTools??le:void 0,l=i.slice(0,s.maxExpandedPhasesPerRun);m?.({type:"roadmap_expansion_start",phaseCount:l.length}),d.info("arena.detail_expansion_start",{phaseCount:l.length});let p=[],g=await F({...e.llm,enableStreaming:false}),u=t.detailExpansionSystemPrompt();for(let h of l){c?.throwIfAborted();let y=h.relatedFindings??[],w=G(o,{round:1,relevantClaimIds:y}),$=[{role:"user",content:t.detailExpansionUserPrompt(r,h,w)}],b="",_=d$1?Math.min(xr,he):0;for(let P=0;P<=_;P++){let x=await g.createMessage({systemPrompt:u,messages:$,tools:d$1,signal:c}),q=x.toolCalls&&x.toolCalls.length>0;if(d.info("arena.detail_expansion_round",{phase:h.title,round:P,toolCount:x.toolCalls?.length??0,stopReason:x.stopReason}),!q){b=x.text;break}let D=[];x.text&&D.push({type:"text",text:x.text});for(let L of x.toolCalls)D.push({type:"tool_use",id:L.id,name:L.toolName,input:L.args});$.push({role:"assistant",content:D});let j=[];for(let L of x.toolCalls){let T=be(L);j.push({type:"tool_result",tool_use_id:L.id,content:T.slice(0,15e3)});}$.push({role:"user",content:j}),P===_&&(b=x.text);}b||(b=""),d.info("arena.detail_expansion_phase",{phase:h.title,textLen:b.length});let C=t.parseDetailExpansionResponse(b);C.phaseTitle||(C.phaseTitle=h.title),C.targetFiles.length===0&&C.codeChanges.length===0&&d.warn("arena.detail_expansion_sparse",{phase:h.title,objective:C.objective.slice(0,200)}),p.push(C);}return d.info("arena.detail_expansion_done",{detailCount:p.length}),m?.({type:"roadmap_expansion_done",detailCount:p.length}),p}a(Xn,"runDetailExpansion");h();function $r(n){return n.replace(/[\x00-\x7F]/g,"").length/Math.max(n.length,1)<.15?"":/[\u4e00-\u9fff\u3400-\u4dbf]/.test(n)?"IMPORTANT: The user's query is in Chinese. You MUST respond in Chinese (\u4E2D\u6587). All text output \u2014 summaries, findings, titles, descriptions, rationale \u2014 must be written in Chinese. JSON field values must be in Chinese.":/[\u3040-\u309f\u30a0-\u30ff]/.test(n)?"IMPORTANT: The user's query is in Japanese. You MUST respond in Japanese (\u65E5\u672C\u8A9E). All text output must be in Japanese. JSON field values must be in Japanese.":/[\uac00-\ud7af]/.test(n)?"IMPORTANT: The user's query is in Korean. You MUST respond in Korean (\uD55C\uAD6D\uC5B4). All text output must be in Korean. JSON field values must be in Korean.":/[\u0400-\u04ff]/.test(n)?"IMPORTANT: The user's query is in Russian. You MUST respond in Russian (\u0440\u0443\u0441\u0441\u043A\u0438\u0439). All text output must be in Russian. JSON field values must be in Russian.":/[\u0600-\u06ff]/.test(n)?"IMPORTANT: The user's query is in Arabic. You MUST respond in Arabic (\u0627\u0644\u0639\u0631\u0628\u064A\u0629). All text output must be in Arabic. JSON field values must be in Arabic.":"IMPORTANT: Respond in the same language as the user's query. All text output \u2014 summaries, findings, titles, descriptions \u2014 must match the query language."}a($r,"detectLanguageInstruction");function Qn(n,e){let t=$r(e);return t?{researchSystemPrompt(r){return `${t}
624
624
 
625
625
  ${n.researchSystemPrompt(r)}`},researchUserPrompt(r,i){return n.researchUserPrompt(r,i)},parseResearchResponse(r,i){return n.parseResearchResponse(r,i)},crossReviewSystemPrompt(r){return `${t}
626
626
 
627
627
  ${n.crossReviewSystemPrompt(r)}`},crossReviewUserPrompt(r,i,o){return n.crossReviewUserPrompt(r,i,o)},parseCrossReviewResponse(r,i){return n.parseCrossReviewResponse(r,i)},consensusSystemPrompt(){return `${t}
628
628
 
629
- ${n.consensusSystemPrompt()}`},consensusUserPrompt(r,i,o){return n.consensusUserPrompt(r,i,o)},parseConsensusResponse(r){return n.parseConsensusResponse(r)},preferredFindingKinds(){return n.preferredFindingKinds()},...U(n)?{verificationReviewUserPrompt(r,i,o,s){return n.verificationReviewUserPrompt(r,i,o,s)},parseVerificationReviewResponse(r,i){return n.parseVerificationReviewResponse(r,i)},debateTurnUserPrompt(r,i,o,s){return n.debateTurnUserPrompt(r,i,o,s)},parseDebateTurnResponse(r,i){return n.parseDebateTurnResponse(r,i)},adjudicationUserPrompt(r,i,o,s){return n.adjudicationUserPrompt(r,i,o,s)},parseAdjudicationResponse(r){return n.parseAdjudicationResponse(r)},claimAwareConsensusUserPrompt(r,i,o,s){return n.claimAwareConsensusUserPrompt(r,i,o,s)}}:{}}:n}a(Xn,"withLanguage");var Qn=class{static{a(this,"Arena");}config;strategy;limits;constructor(e){if(e.participants.length<2)throw new Error("Arena requires at least 2 participants");let t=e.mode??"review",r=Xe[t];this.config={mode:t,maxDiscussionRounds:e.maxDiscussionRounds??r.maxDiscussionRounds,...e},this.limits=e.executionLimits??Qe,this.strategy=e.strategy??gn(t);}async run(e,t){let r=this.config.participants.map(C=>C.name),i=this.config.signal;b.info("arena.start",{mode:this.config.mode,participants:r}),i?.throwIfAborted();let o=this.config.participants[0].llm,s=await hn(e,o,t,i);this.config.onProgress?.({type:"plan_resolved",plan:s}),b.info("arena.plan",{mode:s.mode,lenses:s.lenses.map(C=>C.name),sources:s.sources.map(C=>C.kind),subject:s.subject.label,confidence:s.confidence}),!t?.mode&&s.mode!==this.config.mode&&(this.config.mode=s.mode),i?.throwIfAborted();let c=this.config.onProgress,{artifacts:m,quickFacts:d}=await Fn(s,e,{signal:i,onProgress:a(C=>{C.type==="evidence_started"?c?.({type:"evidence_started",source:C.source}):c?.({type:"evidence_source_done",source:C.source,count:C.count??0,durationMs:C.durationMs??0,timedOut:C.timedOut??false});},"onProgress")});c?.({type:"evidence_collected",artifacts:m}),b.info("arena.evidence",{artifactCount:m.length,sources:s.sources.map(C=>C.kind)});let l={plan:s,artifacts:m,quickFacts:d};this.strategy=this.config.strategy??fn(s),this.strategy=Xn(this.strategy,e);let p=this.config.enableContextTools!==false?qn(s):void 0;i?.throwIfAborted(),b.info("arena.research_phase",{participants:r});let g=await Ke({participants:this.config.participants,strategy:this.strategy,topic:e,baseContext:l,enableContextTools:this.config.enableContextTools??true,contextTools:p,signal:i,onProgress:this.config.onProgress}),u=g.map(C=>C.report),h=g.map(C=>C.dossier);i?.throwIfAborted();let y=new Ce;for(let C of h)y.appendDossier(C);let w=Bn({dossiers:h,ledger:y,onProgress:this.config.onProgress});b.info("arena.claims_registered",{claimCount:w.length,byOwner:Object.fromEntries(r.map(C=>[C,w.filter(P=>P.owner===C).length]))}),i?.throwIfAborted();let A=this.config.concluder??r[0],$=this.config.participants.find(C=>C.name===A);!$&&this.config.concluder&&b.warn("arena.concluder_not_found",{requested:this.config.concluder,fallback:this.config.participants[0].name});let b$1=$??this.config.participants[0],j=this.config.enableContextTools!==false;return this.config.mode==="planning"?this.runPlanningPath({topic:e,participantNames:r,plan:s,baseContext:l,reports:u,dossiers:h,ledger:y,concluder:b$1,contextTools:p,enableContextTools:j,signal:i}):this.runReviewDiscussionPath({topic:e,participantNames:r,plan:s,baseContext:l,reports:u,dossiers:h,ledger:y,concluder:b$1,signal:i})}async runPlanningPath(e){let{topic:t,participantNames:r,plan:i,baseContext:o,reports:s,dossiers:c,ledger:m,concluder:d,contextTools:l,enableContextTools:p,signal:g}=e;b.info("arena.planning_merge_review_phase");let{reviews:u}=await Be({participants:this.config.participants,strategy:this.strategy,topic:t,reports:s,ledger:m,limits:this.limits,mode:"planning",signal:g,onProgress:this.config.onProgress});g?.throwIfAborted();let h=m.getAllClaims(),y={verified:h.filter(A=>A.status==="verified"),contested:h.filter(A=>A.status==="contested"),unresolved:h.filter(A=>A.status==="unresolved"),rejected:h.filter(A=>A.status==="rejected")};b.info("arena.planning_consensus_phase",{concluder:d.name});let w=await Ye({concluder:d,strategy:this.strategy,topic:t,reports:s,reviews:u,claimSummary:y,signal:g,onProgress:this.config.onProgress});if(g?.throwIfAborted(),w.roadmap.length>0&&te(this.strategy)){b.info("arena.detail_expansion_phase",{phaseCount:w.roadmap.length});try{let A=await Hn({concluder:d,strategy:this.strategy,topic:t,phases:w.roadmap,ledger:m,limits:this.limits,enableContextTools:p,contextTools:l,signal:g,onProgress:this.config.onProgress});w.roadmapDetails=A;}catch(A){b.warn("arena.detail_expansion_failed",{error:A.message,phaseCount:w.roadmap.length});}}return {topic:t,mode:this.config.mode,participants:r,plan:i,baseContext:o,reports:s,dossiers:c,claims:h,reviews:u,consensus:w}}async runReviewDiscussionPath(e){let{topic:t,participantNames:r,plan:i,baseContext:o,reports:s,dossiers:c,ledger:m,concluder:d,signal:l}=e;b.info("arena.verification_review_phase");let{reviews:p}=await Be({participants:this.config.participants,strategy:this.strategy,topic:t,reports:s,ledger:m,limits:this.limits,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted(),b.info("arena.debate_phase");let g=await Wn({participants:this.config.participants,strategy:this.strategy,topic:t,ledger:m,limits:this.limits,maxRounds:this.config.maxDiscussionRounds,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted(),b.info("arena.adjudication_phase",{concluder:d.name});let u=await Gn({concluder:d,strategy:this.strategy,topic:t,ledger:m,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted();let h=m.getAllClaims(),y={verified:h.filter(A=>A.status==="verified"),contested:h.filter(A=>A.status==="contested"),unresolved:h.filter(A=>A.status==="unresolved"),rejected:h.filter(A=>A.status==="rejected")};b.info("arena.consensus_phase",{concluder:d.name,verified:y.verified.length,unresolved:y.unresolved.length});let w=await Ye({concluder:d,strategy:this.strategy,topic:t,reports:s,reviews:p,claimSummary:y,signal:l,onProgress:this.config.onProgress});return {topic:t,mode:this.config.mode,participants:r,plan:i,baseContext:o,reports:s,dossiers:c,claims:h,reviews:p,debateRounds:g,adjudications:u,consensus:w}}};h();var ye=[{id:"openrouter",name:"OpenRouter (\u63A8\u8350 \u2014 \u652F\u6301\u6240\u6709\u6A21\u578B)",envKey:"OPENROUTER_API_KEY",provider:"openai",baseUrl:"https://openrouter.ai/api/v1",keyUrl:"https://openrouter.ai/keys",keyPrefix:"sk-or-",models:["anthropic/claude-sonnet-4.6","anthropic/claude-opus-4.7","anthropic/claude-haiku-4.5","openai/gpt-5","openai/gpt-5-mini","openai/gpt-4o","openai/o4-mini","openai/o3","google/gemini-2.5-pro","google/gemini-2.5-flash","deepseek/deepseek-chat","deepseek/deepseek-reasoner","qwen/qwen3-coder","meta-llama/llama-4-maverick"]},{id:"anthropic",name:"Anthropic (\u76F4\u8FDE Claude API)",envKey:"ANTHROPIC_API_KEY",provider:"anthropic",baseUrl:"https://api.anthropic.com",keyUrl:"https://console.anthropic.com/settings/keys",keyPrefix:"sk-ant-",models:["claude-sonnet-4-6","claude-opus-4-7","claude-haiku-4-5"]},{id:"openai",name:"OpenAI",envKey:"OPENAI_API_KEY",provider:"openai",baseUrl:"https://api.openai.com/v1",keyUrl:"https://platform.openai.com/api-keys",keyPrefix:"sk-",models:["gpt-5","gpt-5-mini","gpt-5-nano","gpt-4o","o4-mini","o3"]},{id:"deepseek",name:"DeepSeek (\u5B98\u65B9\u76F4\u8FDE)",envKey:"DEEPSEEK_API_KEY",provider:"openai",baseUrl:"https://api.deepseek.com/v1",keyUrl:"https://platform.deepseek.com/api_keys",keyPrefix:"sk-",models:["deepseek-v4-pro","deepseek-v4-flash","deepseek-chat"]},{id:"zai",name:"Z.AI (GLM \u5B98\u65B9)",envKey:"ZAI_API_KEY",provider:"openai",baseUrl:"https://api.z.ai/api/paas/v4",keyUrl:"https://z.ai/manage-apikey/apikey-list",keyPrefix:"",models:["glm-5.1","glm-4.6","glm-4.5-air"]},{id:"gemini",name:"Google Gemini (\u5B98\u65B9\u76F4\u8FDE)",envKey:"GEMINI_API_KEY",provider:"openai",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai",keyUrl:"https://aistudio.google.com/apikey",keyPrefix:"",models:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.0-flash"]},{id:"ollama",name:"Ollama (\u672C\u5730\uFF0C\u65E0\u9700 Key)",envKey:"",provider:"openai",baseUrl:"http://localhost:11434/v1",keyUrl:"https://ollama.com/library",keyPrefix:"",models:["llama3.1","qwen2.5-coder","deepseek-r1","mistral","gemma3"],noKey:true},{id:"custom",name:"\u81EA\u5B9A\u4E49 (\u4EFB\u4F55 OpenAI \u517C\u5BB9 API)",envKey:"",provider:"openai",baseUrl:"",keyUrl:"",keyPrefix:"",models:[]}],Pr=[{prefix:"anthropic/",take:4},{prefix:"openai/",take:5},{prefix:"google/",take:3},{prefix:"deepseek/",take:3},{prefix:"x-ai/",take:2},{prefix:"qwen/",take:2},{prefix:"meta-llama/",take:2},{prefix:"mistralai/",take:1}];function Sr(n){let e=c();if(e.length===0)return n;let t=/(?:-guard|-embedding|-rerank|-vision-only|:free)/i,r=[];for(let{prefix:i,take:o}of Pr){let s=e.filter(c=>c.id.startsWith(i)).filter(c=>!t.test(c.id)&&!c.id.includes("-preview")).slice(0,o);r.push(...s.map(c=>c.id));}return r.length>0?r:n}a(Sr,"buildOpenRouterModelList");function kr(n){return n.id==="openrouter"?Sr(n.models):n.models}a(kr,"resolveProviderModels");function Sa(){let n=[];for(let e of ye){if(!e.envKey)continue;let t=process.env[e.envKey];t&&t.trim()&&n.push({provider:e,envKey:e.envKey,apiKey:t.trim()});}return n}a(Sa,"detectEnvKeys");function ka(n,e){for(let t of ye)if(t.keyPrefix&&n.startsWith(t.keyPrefix))return t;if(e){for(let t of ye)if(t.baseUrl&&e.startsWith(t.baseUrl))return t}for(let t of ye){if(!t.envKey)continue;let r=process.env[t.envKey];if(r&&r.trim()===n)return t}}a(ka,"detectProviderFromApiKey");function xa(n,e){if(n)return n;if(e)return e;for(let t of ye){if(!t.envKey)continue;let r=process.env[t.envKey];if(r&&r.trim())return r.trim()}}a(xa,"resolveApiKey");var Zn={"anthropic/claude-opus-4.7":32e3,"anthropic/claude-opus-4-7":32e3,"claude-opus-4-7":32e3,"anthropic/claude-sonnet-4.6":16e3,"anthropic/claude-sonnet-4-6":16e3,"claude-sonnet-4-6":16e3,"anthropic/claude-haiku-4.5":8192,"anthropic/claude-haiku-4-5":8192,"claude-haiku-4-5":8192,"openai/gpt-5":32e3,"openai/gpt-5-mini":32e3,"openai/gpt-5-nano":16e3,"gpt-5":32e3,"gpt-5-mini":32e3,"gpt-5-nano":16e3,"openai/gpt-4o":16384,"gpt-4o":16384,"openai/o4-mini":1e5,"o4-mini":1e5,"openai/o3":1e5,o3:1e5,"google/gemini-2.5-pro":65536,"google/gemini-2.5-flash":65536,"gemini-2.5-pro":65536,"gemini-2.5-flash":65536,"gemini-2.0-flash":8192,"deepseek/deepseek-v3.2":8192,"deepseek/deepseek-r1":8192,"deepseek-v4-flash":8192,"deepseek-v4-pro":65536,"deepseek-chat":8192,"qwen/qwen3-coder":16384,"meta-llama/llama-4-maverick":32e3},et={"deepseek-v4-pro":1e6,"deepseek-v4-flash":1e6,"deepseek-chat":1e6,"deepseek/deepseek-chat":1e6,"deepseek/deepseek-v4-pro":1e6,"deepseek/deepseek-v4-flash":1e6};function ze(n){if(Zn[n])return Zn[n];if(n.includes("/")){let e=c().find(t=>t.id===n);if(e&&e.maxOutputTokens>0)return e.maxOutputTokens}}a(ze,"resolveMaxOutput");function xr(n){if(et[n])return et[n];if(n.includes("/")){let e=c().find(t=>t.id===n);if(e&&e.contextLength>0)return e.contextLength}}a(xr,"resolveContextWindow");function $r(n,e,t=[]){let r=e.lastIndexOf("/"),i=r>=0?e.slice(r+1):e,o=n.toLowerCase(),s=i.toLowerCase().startsWith(`${o}-`)?i:`${o}-${i}`,c=new Set(t);if(!c.has(s))return s;for(let m=2;;m++){let d=`${s}-${m}`;if(!c.has(d))return d}}a($r,"deriveModelPoolKey");function $a(n,e){let t=kr(n),r=[];return t.map(i=>{let o=$r(n.id,i,r);return r.push(o),{key:o,label:jr(i),provider:n.provider,model:i,baseUrl:n.baseUrl,apiKey:e,maxOutputTokens:ze(i),maxContextTokens:xr(i)}})}a($a,"buildModelPool");function jr(n){let e=n.lastIndexOf("/"),t=e>=0?n.slice(e+1):n,r=t.split("-");if(r[0]==="claude"){let i=r[1]??"";return `Claude ${i.charAt(0).toUpperCase()+i.slice(1)}`}return t.startsWith("gpt-")?`GPT-${r.slice(1).join("-")}`:t.startsWith("gemini-")?`Gemini ${r.slice(1).join("-")}`:t.charAt(0).toUpperCase()+t.slice(1)}a(jr,"modelDisplayName");function ja(n){let e=join(homedir(),".code-shell"),t=join(e,"settings.json");mkdirSync(e,{recursive:true});let r={};if(existsSync(t))try{r=JSON.parse(readFileSync(t,"utf-8"));}catch{}let i=Array.isArray(r.providers)?r.providers:[],o=i;n.addedProvider&&(i.some(g=>g?.key===n.addedProvider.key)||(o=[...i,n.addedProvider]));let s=Array.isArray(r.models)?r.models:[],c=new Set(s.map(p=>p?.key)),m=n.addedModels.filter(p=>!c.has(p.key)),d={...r,activeKey:n.activeKey,model:{...typeof r.model=="object"&&r.model?r.model:{},provider:n.activeMirror.provider,name:n.activeMirror.model,apiKey:n.activeMirror.apiKey,baseUrl:n.activeMirror.baseUrl},providers:o,models:[...s,...m]},l=`${t}.${process.pid}.tmp`;writeFileSync(l,JSON.stringify(d,null,2)+`
629
+ ${n.consensusSystemPrompt()}`},consensusUserPrompt(r,i,o){return n.consensusUserPrompt(r,i,o)},parseConsensusResponse(r){return n.parseConsensusResponse(r)},preferredFindingKinds(){return n.preferredFindingKinds()},...U(n)?{verificationReviewUserPrompt(r,i,o,s){return n.verificationReviewUserPrompt(r,i,o,s)},parseVerificationReviewResponse(r,i){return n.parseVerificationReviewResponse(r,i)},debateTurnUserPrompt(r,i,o,s){return n.debateTurnUserPrompt(r,i,o,s)},parseDebateTurnResponse(r,i){return n.parseDebateTurnResponse(r,i)},adjudicationUserPrompt(r,i,o,s){return n.adjudicationUserPrompt(r,i,o,s)},parseAdjudicationResponse(r){return n.parseAdjudicationResponse(r)},claimAwareConsensusUserPrompt(r,i,o,s){return n.claimAwareConsensusUserPrompt(r,i,o,s)}}:{}}:n}a(Qn,"withLanguage");var Zn=class{static{a(this,"Arena");}config;strategy;limits;constructor(e){if(e.participants.length<2)throw new Error("Arena requires at least 2 participants");let t=e.mode??"review",r=Qe[t];this.config={mode:t,maxDiscussionRounds:e.maxDiscussionRounds??r.maxDiscussionRounds,...e},this.limits=e.executionLimits??Ze,this.strategy=e.strategy??fn(t);}async run(e,t){let r=this.config.participants.map(C=>C.name),i=this.config.signal;d.info("arena.start",{mode:this.config.mode,participants:r}),i?.throwIfAborted();let o=this.config.participants[0].llm,s=await yn(e,o,t,i);this.config.onProgress?.({type:"plan_resolved",plan:s}),d.info("arena.plan",{mode:s.mode,lenses:s.lenses.map(C=>C.name),sources:s.sources.map(C=>C.kind),subject:s.subject.label,confidence:s.confidence}),!t?.mode&&s.mode!==this.config.mode&&(this.config.mode=s.mode),i?.throwIfAborted();let c=this.config.onProgress,{artifacts:m,quickFacts:d$1}=await In(s,e,{signal:i,onProgress:a(C=>{C.type==="evidence_started"?c?.({type:"evidence_started",source:C.source}):c?.({type:"evidence_source_done",source:C.source,count:C.count??0,durationMs:C.durationMs??0,timedOut:C.timedOut??false});},"onProgress")});c?.({type:"evidence_collected",artifacts:m}),d.info("arena.evidence",{artifactCount:m.length,sources:s.sources.map(C=>C.kind)});let l={plan:s,artifacts:m,quickFacts:d$1};this.strategy=this.config.strategy??hn(s),this.strategy=Qn(this.strategy,e);let p=this.config.enableContextTools!==false?Vn(s):void 0;i?.throwIfAborted(),d.info("arena.research_phase",{participants:r});let g=await Ke({participants:this.config.participants,strategy:this.strategy,topic:e,baseContext:l,enableContextTools:this.config.enableContextTools??true,contextTools:p,signal:i,onProgress:this.config.onProgress}),u=g.map(C=>C.report),h=g.map(C=>C.dossier);i?.throwIfAborted();let y=new Ce;for(let C of h)y.appendDossier(C);let w=Yn({dossiers:h,ledger:y,onProgress:this.config.onProgress});d.info("arena.claims_registered",{claimCount:w.length,byOwner:Object.fromEntries(r.map(C=>[C,w.filter(P=>P.owner===C).length]))}),i?.throwIfAborted();let A=this.config.concluder??r[0],$=this.config.participants.find(C=>C.name===A);!$&&this.config.concluder&&d.warn("arena.concluder_not_found",{requested:this.config.concluder,fallback:this.config.participants[0].name});let b=$??this.config.participants[0],_=this.config.enableContextTools!==false;return this.config.mode==="planning"?this.runPlanningPath({topic:e,participantNames:r,plan:s,baseContext:l,reports:u,dossiers:h,ledger:y,concluder:b,contextTools:p,enableContextTools:_,signal:i}):this.runReviewDiscussionPath({topic:e,participantNames:r,plan:s,baseContext:l,reports:u,dossiers:h,ledger:y,concluder:b,signal:i})}async runPlanningPath(e){let{topic:t,participantNames:r,plan:i,baseContext:o,reports:s,dossiers:c,ledger:m,concluder:d$1,contextTools:l,enableContextTools:p,signal:g}=e;d.info("arena.planning_merge_review_phase");let{reviews:u}=await Be({participants:this.config.participants,strategy:this.strategy,topic:t,reports:s,ledger:m,limits:this.limits,mode:"planning",signal:g,onProgress:this.config.onProgress});g?.throwIfAborted();let h=m.getAllClaims(),y={verified:h.filter(A=>A.status==="verified"),contested:h.filter(A=>A.status==="contested"),unresolved:h.filter(A=>A.status==="unresolved"),rejected:h.filter(A=>A.status==="rejected")};d.info("arena.planning_consensus_phase",{concluder:d$1.name});let w=await Ye({concluder:d$1,strategy:this.strategy,topic:t,reports:s,reviews:u,claimSummary:y,signal:g,onProgress:this.config.onProgress});if(g?.throwIfAborted(),w.roadmap.length>0&&te(this.strategy)){d.info("arena.detail_expansion_phase",{phaseCount:w.roadmap.length});try{let A=await Xn({concluder:d$1,strategy:this.strategy,topic:t,phases:w.roadmap,ledger:m,limits:this.limits,enableContextTools:p,contextTools:l,signal:g,onProgress:this.config.onProgress});w.roadmapDetails=A;}catch(A){d.warn("arena.detail_expansion_failed",{error:A.message,phaseCount:w.roadmap.length});}}return {topic:t,mode:this.config.mode,participants:r,plan:i,baseContext:o,reports:s,dossiers:c,claims:h,reviews:u,consensus:w}}async runReviewDiscussionPath(e){let{topic:t,participantNames:r,plan:i,baseContext:o,reports:s,dossiers:c,ledger:m,concluder:d$1,signal:l}=e;d.info("arena.verification_review_phase");let{reviews:p}=await Be({participants:this.config.participants,strategy:this.strategy,topic:t,reports:s,ledger:m,limits:this.limits,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted(),d.info("arena.debate_phase");let g=await Gn({participants:this.config.participants,strategy:this.strategy,topic:t,ledger:m,limits:this.limits,maxRounds:this.config.maxDiscussionRounds,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted(),d.info("arena.adjudication_phase",{concluder:d$1.name});let u=await Hn({concluder:d$1,strategy:this.strategy,topic:t,ledger:m,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted();let h=m.getAllClaims(),y={verified:h.filter(A=>A.status==="verified"),contested:h.filter(A=>A.status==="contested"),unresolved:h.filter(A=>A.status==="unresolved"),rejected:h.filter(A=>A.status==="rejected")};d.info("arena.consensus_phase",{concluder:d$1.name,verified:y.verified.length,unresolved:y.unresolved.length});let w=await Ye({concluder:d$1,strategy:this.strategy,topic:t,reports:s,reviews:p,claimSummary:y,signal:l,onProgress:this.config.onProgress});return {topic:t,mode:this.config.mode,participants:r,plan:i,baseContext:o,reports:s,dossiers:c,claims:h,reviews:p,debateRounds:g,adjudications:u,consensus:w}}};h();h();var et=/^\x1b\[200~/,nt=/\x1b\[201~$/,tt=/[​-‍⁠]/g,rt=/ /g,it=/[‘’“”]/g,st=/[\x00-\x1F\x7F-\x9F]/g;function ze(n){let e=[],t=n;(et.test(t)||nt.test(t))&&(t=t.replace(et,"").replace(nt,""),e.push("\u5DF2\u5265\u79BB\u7EC8\u7AEF\u7C98\u8D34\u5305\u88F9\u7B26")),/[\r\n]/.test(t)&&(t=t.replace(/[\r\n]+/g,""),e.push("\u5DF2\u79FB\u9664\u6362\u884C\u7B26")),tt.test(t)&&(t=t.replace(tt,""),e.push("\u5DF2\u79FB\u9664\u96F6\u5BBD\u5B57\u7B26")),rt.test(t)&&(t=t.replace(rt,""),e.push("\u5DF2\u79FB\u9664\u5168\u89D2\u7A7A\u683C")),it.test(t)&&(t=t.replace(it,""),e.push("\u5DF2\u79FB\u9664\u4E2D\u6587/\u667A\u80FD\u5F15\u53F7")),st.test(t)&&(t=t.replace(st,""),e.push("\u5DF2\u79FB\u9664\u63A7\u5236\u5B57\u7B26"));let r=t.trim();return r!==t&&(t=r),{value:t,changed:t!==n,warnings:e}}a(ze,"sanitizeApiKey");function $a(n){for(let e=0;e<n.length;e++){let t=n.charCodeAt(e);if(t<32||t>126)return true}return false}a($a,"hasNonAsciiPrintable");var ye=[{id:"openrouter",name:"OpenRouter (\u63A8\u8350 \u2014 \u652F\u6301\u6240\u6709\u6A21\u578B)",envKey:"OPENROUTER_API_KEY",provider:"openai",baseUrl:"https://openrouter.ai/api/v1",keyUrl:"https://openrouter.ai/keys",keyPrefix:"sk-or-",models:["anthropic/claude-sonnet-4.6","anthropic/claude-opus-4.7","anthropic/claude-haiku-4.5","openai/gpt-5","openai/gpt-5-mini","openai/gpt-4o","openai/o4-mini","openai/o3","google/gemini-2.5-pro","google/gemini-2.5-flash","deepseek/deepseek-chat","deepseek/deepseek-reasoner","qwen/qwen3-coder","meta-llama/llama-4-maverick"]},{id:"anthropic",name:"Anthropic (\u76F4\u8FDE Claude API)",envKey:"ANTHROPIC_API_KEY",provider:"anthropic",baseUrl:"https://api.anthropic.com",keyUrl:"https://console.anthropic.com/settings/keys",keyPrefix:"sk-ant-",models:["claude-sonnet-4-6","claude-opus-4-7","claude-haiku-4-5"]},{id:"openai",name:"OpenAI",envKey:"OPENAI_API_KEY",provider:"openai",baseUrl:"https://api.openai.com/v1",keyUrl:"https://platform.openai.com/api-keys",keyPrefix:"sk-",models:["gpt-5","gpt-5-mini","gpt-5-nano","gpt-4o","o4-mini","o3"]},{id:"deepseek",name:"DeepSeek (\u5B98\u65B9\u76F4\u8FDE)",envKey:"DEEPSEEK_API_KEY",provider:"openai",baseUrl:"https://api.deepseek.com/v1",keyUrl:"https://platform.deepseek.com/api_keys",keyPrefix:"sk-",models:["deepseek-v4-pro","deepseek-v4-flash","deepseek-chat"]},{id:"zai",name:"Z.AI (GLM \u5B98\u65B9)",envKey:"ZAI_API_KEY",provider:"openai",baseUrl:"https://api.z.ai/api/paas/v4",keyUrl:"https://z.ai/manage-apikey/apikey-list",keyPrefix:"",models:["glm-5.1","glm-4.6","glm-4.5-air"]},{id:"gemini",name:"Google Gemini (\u5B98\u65B9\u76F4\u8FDE)",envKey:"GEMINI_API_KEY",provider:"openai",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai",keyUrl:"https://aistudio.google.com/apikey",keyPrefix:"",models:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.0-flash"]},{id:"ollama",name:"Ollama (\u672C\u5730\uFF0C\u65E0\u9700 Key)",envKey:"",provider:"openai",baseUrl:"http://localhost:11434/v1",keyUrl:"https://ollama.com/library",keyPrefix:"",models:["llama3.1","qwen2.5-coder","deepseek-r1","mistral","gemma3"],noKey:true},{id:"custom",name:"\u81EA\u5B9A\u4E49 (\u4EFB\u4F55 OpenAI \u517C\u5BB9 API)",envKey:"",provider:"openai",baseUrl:"",keyUrl:"",keyPrefix:"",models:[]}],Tr=[{prefix:"anthropic/",take:4},{prefix:"openai/",take:5},{prefix:"google/",take:3},{prefix:"deepseek/",take:3},{prefix:"x-ai/",take:2},{prefix:"qwen/",take:2},{prefix:"meta-llama/",take:2},{prefix:"mistralai/",take:1}];function Dr(n){let e=c();if(e.length===0)return n;let t=/(?:-guard|-embedding|-rerank|-vision-only|:free)/i,r=[];for(let{prefix:i,take:o}of Tr){let s=e.filter(c=>c.id.startsWith(i)).filter(c=>!t.test(c.id)&&!c.id.includes("-preview")).slice(0,o);r.push(...s.map(c=>c.id));}return r.length>0?r:n}a(Dr,"buildOpenRouterModelList");function Er(n){return n.id==="openrouter"?Dr(n.models):n.models}a(Er,"resolveProviderModels");function Ia(){let n=[];for(let e of ye){if(!e.envKey)continue;let t=process.env[e.envKey];if(!t)continue;let r=ze(t).value;r&&n.push({provider:e,envKey:e.envKey,apiKey:r});}return n}a(Ia,"detectEnvKeys");function Na(n,e){for(let t of ye)if(t.keyPrefix&&n.startsWith(t.keyPrefix))return t;if(e){for(let t of ye)if(t.baseUrl&&e.startsWith(t.baseUrl))return t}for(let t of ye){if(!t.envKey)continue;let r=process.env[t.envKey];if(r&&ze(r).value===n)return t}}a(Na,"detectProviderFromApiKey");function Ua(n,e){if(n)return n;if(e)return e;for(let t of ye){if(!t.envKey)continue;let r=process.env[t.envKey];if(r&&r.trim())return r.trim()}}a(Ua,"resolveApiKey");var ot={"anthropic/claude-opus-4.7":32e3,"anthropic/claude-opus-4-7":32e3,"claude-opus-4-7":32e3,"anthropic/claude-sonnet-4.6":16e3,"anthropic/claude-sonnet-4-6":16e3,"claude-sonnet-4-6":16e3,"anthropic/claude-haiku-4.5":8192,"anthropic/claude-haiku-4-5":8192,"claude-haiku-4-5":8192,"openai/gpt-5":32e3,"openai/gpt-5-mini":32e3,"openai/gpt-5-nano":16e3,"gpt-5":32e3,"gpt-5-mini":32e3,"gpt-5-nano":16e3,"openai/gpt-4o":16384,"gpt-4o":16384,"openai/o4-mini":1e5,"o4-mini":1e5,"openai/o3":1e5,o3:1e5,"google/gemini-2.5-pro":65536,"google/gemini-2.5-flash":65536,"gemini-2.5-pro":65536,"gemini-2.5-flash":65536,"gemini-2.0-flash":8192,"deepseek/deepseek-v3.2":8192,"deepseek/deepseek-r1":8192,"deepseek-v4-flash":8192,"deepseek-v4-pro":65536,"deepseek-chat":8192,"qwen/qwen3-coder":16384,"meta-llama/llama-4-maverick":32e3},at={"deepseek-v4-pro":1e6,"deepseek-v4-flash":1e6,"deepseek-chat":1e6,"deepseek/deepseek-chat":1e6,"deepseek/deepseek-v4-pro":1e6,"deepseek/deepseek-v4-flash":1e6};function We(n){if(ot[n])return ot[n];if(n.includes("/")){let e=c().find(t=>t.id===n);if(e&&e.maxOutputTokens>0)return e.maxOutputTokens}}a(We,"resolveMaxOutput");function Or(n){if(at[n])return at[n];if(n.includes("/")){let e=c().find(t=>t.id===n);if(e&&e.contextLength>0)return e.contextLength}}a(Or,"resolveContextWindow");function Lr(n,e,t=[]){let r=e.lastIndexOf("/"),i=r>=0?e.slice(r+1):e,o=n.toLowerCase(),s=i.toLowerCase().startsWith(`${o}-`)?i:`${o}-${i}`,c=new Set(t);if(!c.has(s))return s;for(let m=2;;m++){let d=`${s}-${m}`;if(!c.has(d))return d}}a(Lr,"deriveModelPoolKey");function Ma(n,e){let t=Er(n),r=[];return t.map(i=>{let o=Lr(n.id,i,r);return r.push(o),{key:o,label:Fr(i),provider:n.provider,model:i,baseUrl:n.baseUrl,apiKey:e,maxOutputTokens:We(i),maxContextTokens:Or(i)}})}a(Ma,"buildModelPool");function Fr(n){let e=n.lastIndexOf("/"),t=e>=0?n.slice(e+1):n,r=t.split("-");if(r[0]==="claude"){let i=r[1]??"";return `Claude ${i.charAt(0).toUpperCase()+i.slice(1)}`}return t.startsWith("gpt-")?`GPT-${r.slice(1).join("-")}`:t.startsWith("gemini-")?`Gemini ${r.slice(1).join("-")}`:t.charAt(0).toUpperCase()+t.slice(1)}a(Fr,"modelDisplayName");function Ka(n){let e=join(homedir(),".code-shell"),t=join(e,"settings.json");mkdirSync(e,{recursive:true});let r={};if(existsSync(t))try{r=JSON.parse(readFileSync(t,"utf-8"));}catch{}let i=Array.isArray(r.providers)?r.providers:[],o=i;n.addedProvider&&(i.some(g=>g?.key===n.addedProvider.key)||(o=[...i,n.addedProvider]));let s=Array.isArray(r.models)?r.models:[],c=new Set(s.map(p=>p?.key)),m=n.addedModels.filter(p=>!c.has(p.key)),d={...r,activeKey:n.activeKey,model:{...typeof r.model=="object"&&r.model?r.model:{},provider:n.activeMirror.provider,name:n.activeMirror.model,apiKey:n.activeMirror.apiKey,baseUrl:n.activeMirror.baseUrl},providers:o,models:[...s,...m]},l=`${t}.${process.pid}.tmp`;writeFileSync(l,JSON.stringify(d,null,2)+`
630
630
  `,"utf-8");try{renameSync(l,t);}catch{writeFileSync(t,JSON.stringify(d,null,2)+`
631
- `,"utf-8");}}a(ja,"appendOnboardingResult");function _a(n){let e=join(homedir(),".code-shell"),t=join(e,"settings.json"),r={};if(existsSync(t))try{r=JSON.parse(readFileSync(t,"utf-8"));}catch{}let i={...r,arena:{participants:n}};writeFileSync(t,JSON.stringify(i,null,2)+`
632
- `,"utf-8");}a(_a,"saveArenaSettingsByKeys");h();var it={claude:{provider:"openai",model:"anthropic/claude-opus-4.6",maxOutputTokens:32e3},"claude-sonnet":{provider:"openai",model:"anthropic/claude-sonnet-4.6",maxOutputTokens:16e3},"claude-haiku":{provider:"openai",model:"anthropic/claude-haiku-4.5",maxOutputTokens:8192},gpt:{provider:"openai",model:"openai/gpt-5.4",maxOutputTokens:32e3},gpt4o:{provider:"openai",model:"openai/gpt-4o",maxOutputTokens:16384},o4:{provider:"openai",model:"openai/o4-mini",maxOutputTokens:1e5},o3:{provider:"openai",model:"openai/o3",maxOutputTokens:1e5},deepseek:{provider:"openai",model:"deepseek/deepseek-v3.2",maxOutputTokens:8192},"deepseek-r1":{provider:"openai",model:"deepseek/deepseek-r1",maxOutputTokens:8192},gemini:{provider:"openai",model:"google/gemini-3.1-pro-preview",maxOutputTokens:65536},"gemini-2.5":{provider:"openai",model:"google/gemini-2.5-pro",maxOutputTokens:65536},"gemini-flash":{provider:"openai",model:"google/gemini-3-flash-preview",maxOutputTokens:65536},qwen:{provider:"openai",model:"qwen/qwen3-235b-a22b",maxOutputTokens:8192},"qwen-coder":{provider:"openai",model:"qwen/qwen3-coder",maxOutputTokens:16384},llama:{provider:"openai",model:"meta-llama/llama-4-maverick",maxOutputTokens:32e3},devstral:{provider:"openai",model:"mistralai/devstral-medium",maxOutputTokens:24e3}};function La(n){let e=it[n];if(e)return e.maxOutputTokens;let t=Object.values(it).find(r=>r.model===n);return t?t.maxOutputTokens:ze(n)??8192}a(La,"getMaxOutputTokens");h();function _r(n){let e=n.mode.charAt(0).toUpperCase()+n.mode.slice(1),t=[];t.push(""),t.push(R.bold(` \u2550\u2550\u2550 ${e} Conclusion \u2550\u2550\u2550`)),t.push(""),n.consensus.summary&&(t.push(` ${n.consensus.summary}`),t.push("")),n.mode==="planning"&&(t.push(...st(n.consensus.roadmap)),n.consensus.roadmapDetails&&n.consensus.roadmapDetails.length>0&&t.push(...Er(n.consensus.roadmapDetails)));for(let i of Or(n))t.push(...Tr(i.title,i.items,i.color,i.icon));if(n.mode!=="planning"&&t.push(...st(n.consensus.roadmap)),n.consensus.nextActions.length>0){t.push(R.bold.white(`
633
- Next Actions:`));for(let i of n.consensus.nextActions){let o=i.priority==="high"?R.red("HIGH"):i.priority==="medium"?R.yellow("MED"):R.dim("LOW");t.push(` ${R.white("\u2192")} [${o}${R.white("]")} ${i.title}`),i.rationale&&t.push(R.dim(` ${i.rationale}`));}}t.push("");let r=n.plan?` | Lenses: ${n.plan.lenses.map(i=>i.name).join(", ")} | Sources: ${n.plan.sources.map(i=>i.kind).join(", ")}`:"";return t.push(R.dim(` Mode: ${e} | Findings: ${Dr(n)} | Models: ${n.participants.join(", ")}`+r)),t.push(""),t.join(`
634
- `)}a(_r,"formatArenaResult");function Ma(n){console.log(_r(n));}a(Ma,"printArenaResult");function Tr(n,e,t,r){if(e.length===0)return [];let i=[];i.push(t(`
635
- ${n}:`));for(let o of e)i.push(t(` ${r} ${o.title}`)),o.summary&&i.push(R.dim(` ${o.summary}`)),o.challenge.length>0&&i.push(R.dim(` Challenged by: ${o.challenge.join(", ")}`));return i}a(Tr,"formatConsensusSection");function Dr(n){return n.reports.reduce((e,t)=>e+t.findings.length,0)}a(Dr,"countFindings");function st(n){if(n.length===0)return [];let e=[];e.push(R.bold.white(`
636
- Roadmap:`));for(let[t,r]of n.entries()){let i=r.priority==="high"?R.red("HIGH"):r.priority==="medium"?R.yellow("MED"):R.dim("LOW");e.push(` ${R.white("\u2192")} Phase ${t+1}: ${r.title} [${i}${R.white("]")}`),r.goal&&e.push(R.dim(` Goal: ${r.goal}`)),r.scope.length>0&&e.push(R.dim(` Scope: ${r.scope.join("; ")}`)),r.deliverables.length>0&&e.push(R.dim(` Deliverables: ${r.deliverables.join("; ")}`)),r.dependencies.length>0&&e.push(R.dim(` Dependencies: ${r.dependencies.join("; ")}`)),r.risks.length>0&&e.push(R.dim(` Risks: ${r.risks.join("; ")}`)),r.successCriteria.length>0&&e.push(R.dim(` Success: ${r.successCriteria.join("; ")}`));}return e}a(st,"formatRoadmapSection");function Er(n){let e=[];e.push(R.bold.white(`
631
+ `,"utf-8");}}a(Ka,"appendOnboardingResult");function qa(n){let e=join(homedir(),".code-shell"),t=join(e,"settings.json"),r={};if(existsSync(t))try{r=JSON.parse(readFileSync(t,"utf-8"));}catch{}let i={...r,arena:{participants:n}};writeFileSync(t,JSON.stringify(i,null,2)+`
632
+ `,"utf-8");}a(qa,"saveArenaSettingsByKeys");h();var pt={claude:{provider:"openai",model:"anthropic/claude-opus-4.6",maxOutputTokens:32e3},"claude-sonnet":{provider:"openai",model:"anthropic/claude-sonnet-4.6",maxOutputTokens:16e3},"claude-haiku":{provider:"openai",model:"anthropic/claude-haiku-4.5",maxOutputTokens:8192},gpt:{provider:"openai",model:"openai/gpt-5.4",maxOutputTokens:32e3},gpt4o:{provider:"openai",model:"openai/gpt-4o",maxOutputTokens:16384},o4:{provider:"openai",model:"openai/o4-mini",maxOutputTokens:1e5},o3:{provider:"openai",model:"openai/o3",maxOutputTokens:1e5},deepseek:{provider:"openai",model:"deepseek/deepseek-v3.2",maxOutputTokens:8192},"deepseek-r1":{provider:"openai",model:"deepseek/deepseek-r1",maxOutputTokens:8192},gemini:{provider:"openai",model:"google/gemini-3.1-pro-preview",maxOutputTokens:65536},"gemini-2.5":{provider:"openai",model:"google/gemini-2.5-pro",maxOutputTokens:65536},"gemini-flash":{provider:"openai",model:"google/gemini-3-flash-preview",maxOutputTokens:65536},qwen:{provider:"openai",model:"qwen/qwen3-235b-a22b",maxOutputTokens:8192},"qwen-coder":{provider:"openai",model:"qwen/qwen3-coder",maxOutputTokens:16384},llama:{provider:"openai",model:"meta-llama/llama-4-maverick",maxOutputTokens:32e3},devstral:{provider:"openai",model:"mistralai/devstral-medium",maxOutputTokens:24e3}};function Ja(n){let e=pt[n];if(e)return e.maxOutputTokens;let t=Object.values(pt).find(r=>r.model===n);return t?t.maxOutputTokens:We(n)??8192}a(Ja,"getMaxOutputTokens");h();function Ir(n){let e=n.mode.charAt(0).toUpperCase()+n.mode.slice(1),t=[];t.push(""),t.push(R.bold(` \u2550\u2550\u2550 ${e} Conclusion \u2550\u2550\u2550`)),t.push(""),n.consensus.summary&&(t.push(` ${n.consensus.summary}`),t.push("")),n.mode==="planning"&&(t.push(...ut(n.consensus.roadmap)),n.consensus.roadmapDetails&&n.consensus.roadmapDetails.length>0&&t.push(...Mr(n.consensus.roadmapDetails)));for(let i of Kr(n))t.push(...Nr(i.title,i.items,i.color,i.icon));if(n.mode!=="planning"&&t.push(...ut(n.consensus.roadmap)),n.consensus.nextActions.length>0){t.push(R.bold.white(`
633
+ Next Actions:`));for(let i of n.consensus.nextActions){let o=i.priority==="high"?R.red("HIGH"):i.priority==="medium"?R.yellow("MED"):R.dim("LOW");t.push(` ${R.white("\u2192")} [${o}${R.white("]")} ${i.title}`),i.rationale&&t.push(R.dim(` ${i.rationale}`));}}t.push("");let r=n.plan?` | Lenses: ${n.plan.lenses.map(i=>i.name).join(", ")} | Sources: ${n.plan.sources.map(i=>i.kind).join(", ")}`:"";return t.push(R.dim(` Mode: ${e} | Findings: ${Ur(n)} | Models: ${n.participants.join(", ")}`+r)),t.push(""),t.join(`
634
+ `)}a(Ir,"formatArenaResult");function Qa(n){console.log(Ir(n));}a(Qa,"printArenaResult");function Nr(n,e,t,r){if(e.length===0)return [];let i=[];i.push(t(`
635
+ ${n}:`));for(let o of e)i.push(t(` ${r} ${o.title}`)),o.summary&&i.push(R.dim(` ${o.summary}`)),o.challenge.length>0&&i.push(R.dim(` Challenged by: ${o.challenge.join(", ")}`));return i}a(Nr,"formatConsensusSection");function Ur(n){return n.reports.reduce((e,t)=>e+t.findings.length,0)}a(Ur,"countFindings");function ut(n){if(n.length===0)return [];let e=[];e.push(R.bold.white(`
636
+ Roadmap:`));for(let[t,r]of n.entries()){let i=r.priority==="high"?R.red("HIGH"):r.priority==="medium"?R.yellow("MED"):R.dim("LOW");e.push(` ${R.white("\u2192")} Phase ${t+1}: ${r.title} [${i}${R.white("]")}`),r.goal&&e.push(R.dim(` Goal: ${r.goal}`)),r.scope.length>0&&e.push(R.dim(` Scope: ${r.scope.join("; ")}`)),r.deliverables.length>0&&e.push(R.dim(` Deliverables: ${r.deliverables.join("; ")}`)),r.dependencies.length>0&&e.push(R.dim(` Dependencies: ${r.dependencies.join("; ")}`)),r.risks.length>0&&e.push(R.dim(` Risks: ${r.risks.join("; ")}`)),r.successCriteria.length>0&&e.push(R.dim(` Success: ${r.successCriteria.join("; ")}`));}return e}a(ut,"formatRoadmapSection");function Mr(n){let e=[];e.push(R.bold.white(`
637
637
  Implementation Details:`));for(let t of n){let r=t.effort==="large"?R.red("L"):t.effort==="medium"?R.yellow("M"):R.green("S");if(e.push(`
638
- ${R.white("\u25B8")} ${t.phaseTitle} [${r}]`),t.objective&&e.push(R.dim(` ${t.objective}`)),t.targetFiles.length>0&&e.push(R.dim(` Files: ${t.targetFiles.join(", ")}`)),t.codeChanges.length>0)for(let i of t.codeChanges)e.push(R.dim(` \u2022 ${i}`));if(t.interfaces.length>0&&e.push(R.dim(` Interfaces: ${t.interfaces.join("; ")}`)),t.migrationSteps.length>0){e.push(R.dim(" Migration:"));for(let[i,o]of t.migrationSteps.entries())e.push(R.dim(` ${i+1}. ${o}`));}t.validation.length>0&&e.push(R.dim(` Validation: ${t.validation.join("; ")}`)),t.blockers.length>0&&e.push(R.red(` Blockers: ${t.blockers.join("; ")}`));}return e}a(Er,"formatRoadmapDetailsSection");function Or(n){let e=new Set(["strength","improvement","risk","question"]),t=["risk","improvement","strength","question"],r=(n.plan?.outputShape?.emphasize??[]).filter(o=>e.has(o));return Lr([...r,...t]).map(o=>{switch(o){case "strength":return {kind:o,title:"Strengths",items:n.consensus.strengths,color:R.green,icon:"\u2713"};case "improvement":return {kind:o,title:"Improvements",items:n.consensus.improvements,color:R.yellow,icon:"\u2192"};case "risk":return {kind:o,title:"Risks",items:n.consensus.risks,color:R.red,icon:"\u26A0"};case "question":return {kind:o,title:"Open Questions",items:n.consensus.openQuestions,color:R.cyan,icon:"?"}}}).filter(o=>o!=null).filter(o=>o.items.length>0)}a(Or,"getOrderedConsensusSections");function Lr(n){let e=new Set,t=[];for(let r of n)e.has(r)||(e.add(r),t.push(r));return t}a(Lr,"dedupeFindingKinds");function Fr(n){return e=>{switch(e.type){case "plan_resolved":n(R.dim(`Plan: ${e.plan.mode} | lenses: ${e.plan.lenses.map(t=>t.name).join(", ")} | sources: ${e.plan.sources.map(t=>t.kind).join(", ")}`+(e.plan.confidence!=="high"?` (${e.plan.confidence} confidence)`:"")));break;case "evidence_started":n(R.dim(` \xB7 collecting from ${e.source}\u2026`));break;case "evidence_source_done":{let t=e.timedOut?R.yellow(" (timed out)"):"";n(R.dim(` \xB7 ${e.source}: ${e.count} artifacts in ${e.durationMs}ms${t}`));break}case "evidence_collected":n(R.dim(`Evidence: ${e.artifacts.length} artifacts collected`));break;case "research_start":n(R.dim(`\u23F3 ${e.participant} researching...`));break;case "research_done":{let t=e.report.findings.length;n(`${e.participant}: ${R.green("done")} (${t} findings)`);break}case "context_lookup":for(let t of e.tools)n(R.dim(` \u{1F50D} ${e.participant}: ${t}`));break;case "claims_registered":n(R.dim(`${e.claimCount} claims registered`));break;case "cross_review_start":n(R.dim("\u2500\u2500 Cross Review \u2500\u2500"));break;case "cross_review_done":n(R.dim(`${e.reviews.length} peer reviews collected`));break;case "verification_start":n(R.dim("\u2500\u2500 Verification Review \u2500\u2500"));break;case "verification_done":n(R.dim(`${e.challengeCount} challenges raised`));break;case "debate_round_start":n(R.dim(`\u2500\u2500 Debate Round ${e.round} (${e.claims.length} claims) \u2500\u2500`));break;case "debate_round_done":n(R.dim(`Round ${e.round}: ${e.resolved} resolved`));break;case "adjudication_done":n(R.dim(`Adjudication: ${e.accepted} accepted, ${e.unresolved} unresolved`));break;case "planning_merge_review_start":n(R.dim("\u2500\u2500 Planning Merge Review \u2500\u2500"));break;case "planning_merge_review_done":n(R.dim(`${e.mergeCount} merge suggestions collected`));break;case "roadmap_expansion_start":n(R.dim(`\u2500\u2500 Expanding ${e.phaseCount} roadmap phases \u2500\u2500`));break;case "roadmap_expansion_done":n(R.dim(`${e.detailCount} phase details generated`));break;case "consensus_start":n(R.dim("\u23F3 Building consensus..."));break;}}}a(Fr,"createProgressRenderer");function Ka(n){Fr(e=>console.log(` ${e}`))(n);}a(Ka,"renderProgress");h();function Ya(n){let e=[],t=n.mode.charAt(0).toUpperCase()+n.mode.slice(1);e.push(`## Arena ${t} Result`),e.push(`**Topic:** ${n.topic}`),e.push(`**Models:** ${n.participants.join(" vs ")}`),e.push("");let r=n.consensus;if(r.subjectSummary){let i=n.plan.outputShape.overviewLabel??(n.mode==="review"?"What Changed":n.mode==="planning"?"Current Scope":"Problem Framing");e.push(`### ${i}`),e.push(r.subjectSummary),e.push("");}if(r.summary&&(e.push("### Overall Assessment"),e.push(r.summary),e.push("")),n.mode==="planning"&&r.roadmap.length>0){e.push("### Roadmap");for(let[i,o]of r.roadmap.entries())e.push(...ot(i,o));if(e.push(""),r.roadmapDetails&&r.roadmapDetails.length>0){e.push("### Implementation Details");for(let i of r.roadmapDetails)e.push(...Ir(i));e.push("");}}for(let i of Nr(n)){e.push(`### ${i.title}`);for(let o of i.items)e.push(`- **${o.title}**: ${o.summary}`);e.push("");}if(n.mode!=="planning"&&r.roadmap.length>0){e.push("### Roadmap");for(let[i,o]of r.roadmap.entries())e.push(...ot(i,o));e.push("");}if(r.nextActions.length>0){e.push("### Next Actions");for(let i of r.nextActions){let o=i.priority==="high"?"\u{1F534}":i.priority==="medium"?"\u{1F7E1}":"\u26AA";e.push(`- ${o} **${i.title}**: ${i.rationale}`);}e.push("");}if(n.reports.some(i=>i.findings.length>0)){e.push("---"),e.push("### Participant Findings");for(let i of n.reports){if(i.findings.length===0){e.push(`
638
+ ${R.white("\u25B8")} ${t.phaseTitle} [${r}]`),t.objective&&e.push(R.dim(` ${t.objective}`)),t.targetFiles.length>0&&e.push(R.dim(` Files: ${t.targetFiles.join(", ")}`)),t.codeChanges.length>0)for(let i of t.codeChanges)e.push(R.dim(` \u2022 ${i}`));if(t.interfaces.length>0&&e.push(R.dim(` Interfaces: ${t.interfaces.join("; ")}`)),t.migrationSteps.length>0){e.push(R.dim(" Migration:"));for(let[i,o]of t.migrationSteps.entries())e.push(R.dim(` ${i+1}. ${o}`));}t.validation.length>0&&e.push(R.dim(` Validation: ${t.validation.join("; ")}`)),t.blockers.length>0&&e.push(R.red(` Blockers: ${t.blockers.join("; ")}`));}return e}a(Mr,"formatRoadmapDetailsSection");function Kr(n){let e=new Set(["strength","improvement","risk","question"]),t=["risk","improvement","strength","question"],r=(n.plan?.outputShape?.emphasize??[]).filter(o=>e.has(o));return qr([...r,...t]).map(o=>{switch(o){case "strength":return {kind:o,title:"Strengths",items:n.consensus.strengths,color:R.green,icon:"\u2713"};case "improvement":return {kind:o,title:"Improvements",items:n.consensus.improvements,color:R.yellow,icon:"\u2192"};case "risk":return {kind:o,title:"Risks",items:n.consensus.risks,color:R.red,icon:"\u26A0"};case "question":return {kind:o,title:"Open Questions",items:n.consensus.openQuestions,color:R.cyan,icon:"?"}}}).filter(o=>o!=null).filter(o=>o.items.length>0)}a(Kr,"getOrderedConsensusSections");function qr(n){let e=new Set,t=[];for(let r of n)e.has(r)||(e.add(r),t.push(r));return t}a(qr,"dedupeFindingKinds");function Vr(n){return e=>{switch(e.type){case "plan_resolved":n(R.dim(`Plan: ${e.plan.mode} | lenses: ${e.plan.lenses.map(t=>t.name).join(", ")} | sources: ${e.plan.sources.map(t=>t.kind).join(", ")}`+(e.plan.confidence!=="high"?` (${e.plan.confidence} confidence)`:"")));break;case "evidence_started":n(R.dim(` \xB7 collecting from ${e.source}\u2026`));break;case "evidence_source_done":{let t=e.timedOut?R.yellow(" (timed out)"):"";n(R.dim(` \xB7 ${e.source}: ${e.count} artifacts in ${e.durationMs}ms${t}`));break}case "evidence_collected":n(R.dim(`Evidence: ${e.artifacts.length} artifacts collected`));break;case "research_start":n(R.dim(`\u23F3 ${e.participant} researching...`));break;case "research_done":{let t=e.report.findings.length;n(`${e.participant}: ${R.green("done")} (${t} findings)`);break}case "context_lookup":for(let t of e.tools)n(R.dim(` \u{1F50D} ${e.participant}: ${t}`));break;case "claims_registered":n(R.dim(`${e.claimCount} claims registered`));break;case "cross_review_start":n(R.dim("\u2500\u2500 Cross Review \u2500\u2500"));break;case "cross_review_done":n(R.dim(`${e.reviews.length} peer reviews collected`));break;case "verification_start":n(R.dim("\u2500\u2500 Verification Review \u2500\u2500"));break;case "verification_done":n(R.dim(`${e.challengeCount} challenges raised`));break;case "debate_round_start":n(R.dim(`\u2500\u2500 Debate Round ${e.round} (${e.claims.length} claims) \u2500\u2500`));break;case "debate_round_done":n(R.dim(`Round ${e.round}: ${e.resolved} resolved`));break;case "adjudication_done":n(R.dim(`Adjudication: ${e.accepted} accepted, ${e.unresolved} unresolved`));break;case "planning_merge_review_start":n(R.dim("\u2500\u2500 Planning Merge Review \u2500\u2500"));break;case "planning_merge_review_done":n(R.dim(`${e.mergeCount} merge suggestions collected`));break;case "roadmap_expansion_start":n(R.dim(`\u2500\u2500 Expanding ${e.phaseCount} roadmap phases \u2500\u2500`));break;case "roadmap_expansion_done":n(R.dim(`${e.detailCount} phase details generated`));break;case "consensus_start":n(R.dim("\u23F3 Building consensus..."));break;}}}a(Vr,"createProgressRenderer");function Za(n){Vr(e=>console.log(` ${e}`))(n);}a(Za,"renderProgress");h();function rc(n){let e=[],t=n.mode.charAt(0).toUpperCase()+n.mode.slice(1);e.push(`## Arena ${t} Result`),e.push(`**Topic:** ${n.topic}`),e.push(`**Models:** ${n.participants.join(" vs ")}`),e.push("");let r=n.consensus;if(r.subjectSummary){let i=n.plan.outputShape.overviewLabel??(n.mode==="review"?"What Changed":n.mode==="planning"?"Current Scope":"Problem Framing");e.push(`### ${i}`),e.push(r.subjectSummary),e.push("");}if(r.summary&&(e.push("### Overall Assessment"),e.push(r.summary),e.push("")),n.mode==="planning"&&r.roadmap.length>0){e.push("### Roadmap");for(let[i,o]of r.roadmap.entries())e.push(...mt(i,o));if(e.push(""),r.roadmapDetails&&r.roadmapDetails.length>0){e.push("### Implementation Details");for(let i of r.roadmapDetails)e.push(...Br(i));e.push("");}}for(let i of Yr(n)){e.push(`### ${i.title}`);for(let o of i.items)e.push(`- **${o.title}**: ${o.summary}`);e.push("");}if(n.mode!=="planning"&&r.roadmap.length>0){e.push("### Roadmap");for(let[i,o]of r.roadmap.entries())e.push(...mt(i,o));e.push("");}if(r.nextActions.length>0){e.push("### Next Actions");for(let i of r.nextActions){let o=i.priority==="high"?"\u{1F534}":i.priority==="medium"?"\u{1F7E1}":"\u26AA";e.push(`- ${o} **${i.title}**: ${i.rationale}`);}e.push("");}if(n.reports.some(i=>i.findings.length>0)){e.push("---"),e.push("### Participant Findings");for(let i of n.reports){if(i.findings.length===0){e.push(`
639
639
  **${i.participant}**: ${i.contextSummary||"(no findings)"}`);continue}e.push(`
640
640
  **${i.participant}** (${i.findings.length} findings)`),i.contextSummary&&e.push(`> ${i.contextSummary}`);for(let o of i.findings){let s=o.severity?`/${o.severity}`:"";e.push(`- [${o.kind}${s}] **${o.title}**: ${o.summary}`);}}}return e.join(`
641
- `)}a(Ya,"formatArenaResultForSession");function ot(n,e){let t=e.priority==="high"?"High":e.priority==="medium"?"Medium":"Low",r=[`#### Phase ${n+1}: ${e.title} (${t} priority)`];return e.goal&&r.push(`Goal: ${e.goal}`),e.scope.length>0&&r.push(`Scope: ${e.scope.join("; ")}`),e.deliverables.length>0&&r.push(`Deliverables: ${e.deliverables.join("; ")}`),e.dependencies.length>0&&r.push(`Dependencies: ${e.dependencies.join("; ")}`),e.risks.length>0&&r.push(`Risks: ${e.risks.join("; ")}`),e.successCriteria.length>0&&r.push(`Success Criteria: ${e.successCriteria.join("; ")}`),r.push(""),r}a(ot,"formatRoadmapPhase");function Ir(n){let e=n.effort==="large"?"Large":n.effort==="small"?"Small":"Medium",t=[`#### ${n.phaseTitle} (${e} effort)`];if(n.objective&&t.push(n.objective),n.targetFiles.length>0&&t.push(`**Target files:** ${n.targetFiles.map(r=>"`"+r+"`").join(", ")}`),n.codeChanges.length>0){t.push("**Code changes:**");for(let r of n.codeChanges)t.push(`- ${r}`);}if(n.interfaces.length>0&&t.push(`**Interfaces:** ${n.interfaces.join("; ")}`),n.migrationSteps.length>0){t.push("**Migration steps:**");for(let[r,i]of n.migrationSteps.entries())t.push(`${r+1}. ${i}`);}return n.validation.length>0&&t.push(`**Validation:** ${n.validation.join("; ")}`),n.blockers.length>0&&t.push(`**Blockers:** ${n.blockers.join("; ")}`),t.push(""),t}a(Ir,"formatPhaseDetail");function Nr(n){let e=new Set(["strength","improvement","risk","question"]),t=["risk","improvement","strength","question"],r=(n.plan?.outputShape?.emphasize??[]).filter(s=>e.has(s));return Ur([...r,...t]).map(s=>{switch(s){case "strength":return {kind:s,title:"\u2713 Strengths",items:n.consensus.strengths};case "improvement":return {kind:s,title:"\u2192 Improvements",items:n.consensus.improvements};case "risk":return {kind:s,title:"\u26A0 Risks",items:n.consensus.risks};case "question":return {kind:s,title:"? Open Questions",items:n.consensus.openQuestions}}}).filter(s=>s!=null).filter(s=>s.items.length>0)}a(Nr,"getOrderedConsensusSections");function Ur(n){let e=new Set,t=[];for(let r of n)e.has(r)||(e.add(r),t.push(r));return t}a(Ur,"dedupeFindingKinds");export{Ve as A,ro as B,io as C,fo as D,Be as E,Wn as F,Gn as G,Ye as H,Ce as I,Qn as J,Sa as K,ka as L,xa as M,$a as N,ja as O,_a as P,it as Q,La as R,_r as S,Ma as T,Fr as U,Ka as V,Ya as W,He as a,F as b,U as c,me as d,ge as e,fe as f,Ai as g,dn as h,we as i,ln as j,gn as k,fn as l,hn as m,Fn as n,qn as o,Ns as p,Js as q,Ke as r,Bn as s,Yn as t,G as u,Zs as v,pe as w,pr as x,Jn as y,zn as z};
641
+ `)}a(rc,"formatArenaResultForSession");function mt(n,e){let t=e.priority==="high"?"High":e.priority==="medium"?"Medium":"Low",r=[`#### Phase ${n+1}: ${e.title} (${t} priority)`];return e.goal&&r.push(`Goal: ${e.goal}`),e.scope.length>0&&r.push(`Scope: ${e.scope.join("; ")}`),e.deliverables.length>0&&r.push(`Deliverables: ${e.deliverables.join("; ")}`),e.dependencies.length>0&&r.push(`Dependencies: ${e.dependencies.join("; ")}`),e.risks.length>0&&r.push(`Risks: ${e.risks.join("; ")}`),e.successCriteria.length>0&&r.push(`Success Criteria: ${e.successCriteria.join("; ")}`),r.push(""),r}a(mt,"formatRoadmapPhase");function Br(n){let e=n.effort==="large"?"Large":n.effort==="small"?"Small":"Medium",t=[`#### ${n.phaseTitle} (${e} effort)`];if(n.objective&&t.push(n.objective),n.targetFiles.length>0&&t.push(`**Target files:** ${n.targetFiles.map(r=>"`"+r+"`").join(", ")}`),n.codeChanges.length>0){t.push("**Code changes:**");for(let r of n.codeChanges)t.push(`- ${r}`);}if(n.interfaces.length>0&&t.push(`**Interfaces:** ${n.interfaces.join("; ")}`),n.migrationSteps.length>0){t.push("**Migration steps:**");for(let[r,i]of n.migrationSteps.entries())t.push(`${r+1}. ${i}`);}return n.validation.length>0&&t.push(`**Validation:** ${n.validation.join("; ")}`),n.blockers.length>0&&t.push(`**Blockers:** ${n.blockers.join("; ")}`),t.push(""),t}a(Br,"formatPhaseDetail");function Yr(n){let e=new Set(["strength","improvement","risk","question"]),t=["risk","improvement","strength","question"],r=(n.plan?.outputShape?.emphasize??[]).filter(s=>e.has(s));return zr([...r,...t]).map(s=>{switch(s){case "strength":return {kind:s,title:"\u2713 Strengths",items:n.consensus.strengths};case "improvement":return {kind:s,title:"\u2192 Improvements",items:n.consensus.improvements};case "risk":return {kind:s,title:"\u26A0 Risks",items:n.consensus.risks};case "question":return {kind:s,title:"? Open Questions",items:n.consensus.openQuestions}}}).filter(s=>s!=null).filter(s=>s.items.length>0)}a(Yr,"getOrderedConsensusSections");function zr(n){let e=new Set,t=[];for(let r of n)e.has(r)||(e.add(r),t.push(r));return t}a(zr,"dedupeFindingKinds");export{Ve as A,po as B,uo as C,bo as D,Be as E,Gn as F,Hn as G,Ye as H,Ce as I,Zn as J,ze as K,$a as L,Ia as M,Na as N,Ua as O,Ma as P,Ka as Q,qa as R,pt as S,Ja as T,Ir as U,Qa as V,Vr as W,Za as X,rc as Y,Xe as a,F as b,U as c,me as d,ge as e,fe as f,$i as g,ln as h,we as i,pn as j,fn as k,hn as l,yn as m,In as n,Vn as o,Ys as p,Zs as q,Ke as r,Yn as s,zn as t,G as u,oo as v,pe as w,vr as x,Jn as y,Wn as z};