@counterfact-labs/cli 0.2.6 → 0.2.7

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 (74) hide show
  1. package/README.md +20 -0
  2. package/bundle/client-release.json +1 -1
  3. package/dist/adapters/completion-lock.js +95 -0
  4. package/dist/adapters/completion.js +132 -17
  5. package/dist/adapters/entry-files.js +126 -0
  6. package/dist/adapters/entry-selection.js +45 -0
  7. package/dist/adapters/files.js +2 -1
  8. package/dist/adapters/results.js +10 -2
  9. package/dist/adapters/selection.js +104 -0
  10. package/dist/adapters/settings.js +29 -2
  11. package/dist/analysis-core/analysis/schemas.js +1 -1
  12. package/dist/analysis-core/chunks/2PZF54KH.js +10 -0
  13. package/dist/analysis-core/chunks/{OPMA32A6.js → 6RWEWBHK.js} +1 -1
  14. package/dist/analysis-core/chunks/{PECX3OXB.js → 7NEWZ74F.js} +1 -1
  15. package/dist/analysis-core/chunks/{6QY5BV5B.js → CGCJN73D.js} +1 -1
  16. package/dist/analysis-core/chunks/CWYVUGG4.js +1 -0
  17. package/dist/analysis-core/chunks/{3JWEFCTJ.js → FBTOOUPL.js} +1 -1
  18. package/dist/analysis-core/chunks/GOQVKWP3.js +32 -0
  19. package/dist/analysis-core/chunks/IHAVDX4L.js +66 -0
  20. package/dist/analysis-core/chunks/IVULXWQN.js +21 -0
  21. package/dist/analysis-core/chunks/K5FUABWW.js +1 -0
  22. package/dist/analysis-core/chunks/KGQYR62R.js +7 -0
  23. package/dist/analysis-core/chunks/PY5M22CL.js +1 -0
  24. package/dist/analysis-core/chunks/{YDBO7P4X.js → RNTMH4MU.js} +1 -1
  25. package/dist/analysis-core/chunks/RUVMFAST.js +1 -0
  26. package/dist/analysis-core/chunks/S27VIQMZ.js +1 -0
  27. package/dist/analysis-core/chunks/{5DGPLXYB.js → SLJ6CW7W.js} +1 -1
  28. package/dist/analysis-core/chunks/{STI4JE7L.js → UEORNVQB.js} +1 -1
  29. package/dist/analysis-core/chunks/{X7WZAA7S.js → WYLIV2P2.js} +1 -1
  30. package/dist/analysis-core/contracts/analysis-selection.js +1 -0
  31. package/dist/analysis-core/contracts/module-resolution.js +1 -0
  32. package/dist/analysis-core/contracts/relay-analysis.js +1 -1
  33. package/dist/analysis-core/contracts/requests.js +1 -1
  34. package/dist/analysis-core/contracts/selection-paths.js +1 -0
  35. package/dist/analysis-core/conventions/analysis-fit.js +1 -1
  36. package/dist/analysis-core/conventions/file-admission.js +1 -1
  37. package/dist/analysis-core/import/calls/modules.js +1 -0
  38. package/dist/analysis-core/import/outside-loader-sources.js +1 -1
  39. package/dist/analysis-core/index.js +3 -3
  40. package/dist/analysis-core/requests/local-plan.js +1 -1
  41. package/dist/analysis-core/requests/registry.js +1 -1
  42. package/dist/analysis-core/requests/template-version.js +1 -1
  43. package/dist/analysis-core/requests/tools.js +1 -1
  44. package/dist/analysis-core/settings.js +1 -1
  45. package/dist/analysis-core/stages/engine-entry.js +1 -1
  46. package/dist/cli/analysis-selection.js +91 -0
  47. package/dist/cli/commands/analyze.js +31 -6
  48. package/dist/cli/completion-delivery.js +63 -0
  49. package/dist/cli/completion-recovery.js +68 -14
  50. package/dist/cli/context.js +2 -1
  51. package/dist/cli/main.js +21 -9
  52. package/dist/cli/mcp.js +70 -11
  53. package/dist/cli/prior-completion.js +35 -0
  54. package/dist/cli/relay-check.js +163 -97
  55. package/dist/cli/relay-failure.js +32 -0
  56. package/dist/cli/relay-preparation.js +24 -11
  57. package/dist/cli/results-upload.js +131 -0
  58. package/dist/cli/scope-choices.js +57 -0
  59. package/dist/contract/cli-refusals.js +8 -0
  60. package/dist/contract/cli-version.js +1 -1
  61. package/dist/contract/console.js +7 -2
  62. package/dist/contract/scope-choice.js +78 -0
  63. package/dist/contract/selection-metadata.js +9 -0
  64. package/dist/contract/selection-offer.js +43 -0
  65. package/dist/gatekeeper/console.js +36 -25
  66. package/package.json +2 -2
  67. package/dist/analysis-core/chunks/377MLK4M.js +0 -21
  68. package/dist/analysis-core/chunks/DLPVYWHZ.js +0 -1
  69. package/dist/analysis-core/chunks/FOKDE64Y.js +0 -1
  70. package/dist/analysis-core/chunks/KTNA2KTN.js +0 -7
  71. package/dist/analysis-core/chunks/NIOS7U6C.js +0 -41
  72. package/dist/analysis-core/chunks/QFY6A3MS.js +0 -66
  73. package/dist/analysis-core/chunks/SVMEWGD3.js +0 -1
  74. package/dist/analysis-core/chunks/ZTOVBAG7.js +0 -1
@@ -1,66 +0,0 @@
1
- import{a as bi}from"./OPMA32A6.js";import{a as zt,b as Jt,c as es}from"./N7U5N42V.js";import{b as wi,c as D,l as xi}from"./6QY5BV5B.js";import{a as zo,b as Wt,c as Jo,d as Qo,e as Yo,f as Zo,g as Vt,h as Kn,i as Si}from"./K2GNDX3W.js";import{a as yi}from"./QDYMR6KS.js";import{a as _i}from"./4F6ZIHXU.js";import{c as vi}from"./M6HYSTQD.js";import{a as A,d as Oi}from"./4H23CSUM.js";import{a as Ci}from"./VGYWI4X2.js";import{b as Ve}from"./57M4OQJM.js";import{a as Ei}from"./J4AXGE5W.js";import{b as V,c as Me,d as fe,e as jn,f as Fe,j as Bt,k as oi,p as Uo,q as Xe}from"./FOKDE64Y.js";import{a as Kt}from"./IBCFGUHI.js";import{a as si}from"./DZZBQDGO.js";import{A as mi,B as Vo,C as Xt,D as hi,E as Te,F as he,G as gi,H as Bn,J as ki,a as Oe,b as qt,c as ri,d as ii,e as ue,g as Go,h as Ht,i as Xo,j as me,k as Dn,l as gt,m as We,n as ai,o as ci,p as li,q as Ut,r as kt,s as wt,t as Gt,u as Wo,v as di,w as yt,x as pi,y as fi,z as ui}from"./377MLK4M.js";import{a as q}from"./326F4XNG.js";import{a as St}from"./ZTOVBAG7.js";import{a as te,c as ht,d as Nn,f as Ln,l as ei,m as ti,n as ni}from"./KTNA2KTN.js";import{a as Sn,b as L,c as yn}from"./2PSNOSJ2.js";import{a as qe,e as ir}from"./KU5DINLW.js";import{A as Z,Aa as Do,Ab as jr,Bb as Dr,C as mr,Ca as Or,Cb as Br,Db as Kr,Ea as vr,Eb as qr,Gb as An,Hb as Hr,I as jo,Ia as xe,Ib as Ge,Jb as Ur,Ka as _r,Kb as Gr,L as hr,Lb as Fn,M as gr,Mb as Xr,N as kr,Nb as Wr,Oa as Bo,Ob as qo,P as Lt,Pa as Ko,Q as wr,Qb as Vr,R as Sr,Rb as mt,Sb as Re,Ta as jt,Ua as T,Vb as K,Wb as Ae,Z as yr,_a as Cr,ba as Pn,d as pt,f as Lo,fb as Er,g as Nt,h as vn,hb as ee,i as ft,jb as Ir,kb as $r,l as Cn,m as En,mb as Pr,n as In,nb as Rr,o as $n,ob as Ar,pb as Mr,ra as W,rb as Fr,sb as ut,tb as Rn,ub as Tr,va as br,vb as Ue,wb as Nr,xb as Dt,zb as Lr}from"./NIOS7U6C.js";import{b as Mn}from"./74FPPPIG.js";import{c as fr,d as ur}from"./5TATKWLG.js";import{a as Tn}from"./PYKAERZZ.js";import{e as xr}from"./YUY436SM.js";import{a as dr,b as He,c as Pe,d as _n,e as pr}from"./C6X5GDG4.js";import{e as Qr,g as Yr,h as Zr,i as M}from"./5DGPLXYB.js";import{d as Jr,e as be}from"./6U2IR4XB.js";import{c as ie}from"./MJGB25S5.js";import{b as Tt}from"./6B2HILSY.js";import{c as On,f as pe}from"./JKWTHRUR.js";import{b as re,c as de}from"./3GUKUEEJ.js";import{c as Ho,e as zr}from"./KWECQJ6X.js";import{b as xn,c as ar,d as cr,f as $e,g as bn,h as lr}from"./FSLWD2PE.js";var Jl={repos:void 0,codeAgents:void 0,modelReader:void 0,projectAgents:void 0,analysisFlags:void 0,findingCheck:void 0,findingQuality:void 0,findingHeadlines:void 0,findingHeadlineDiagnostics:void 0,sawCode:void 0,sourceNotes:void 0,inspectPlan:void 0,passCursor:void 0,passFindings:void 0,passRetries:void 0,passResults:void 0,codeChecks:void 0,newVerdicts:void 0,repoCursor:void 0,mapped:void 0,findingsRaw:void 0,warnings:void 0,scopeCheck:void 0,structuresRaw:void 0,loadModes:void 0,openStructures:void 0,structurePassFailed:void 0,structureScopeCheck:void 0,structureStats:void 0,splitCheckRan:void 0,splitPassFailed:void 0,structurePhase:void 0,shapeFindings:void 0,splitEstimateBase:void 0,splitCheckPriced:void 0,splitFindingsPriced:void 0,readPaths:void 0,rechecks:void 0,recheckedChangeIds:void 0},Ql=Object.freeze(Object.keys(Jl));function ts(e,t){return Tt.parse(e.mapped?.[t])}function Ii(e,t){return Tt.safeParse(e.mapped?.[t])}function ne(e){return(e.mapped??[]).map((t,n)=>({repoKey:e.repos?.[n]?.key??`repo-${n}`,fragment:ts(e,n)}))}function Ne(e){return Object.fromEntries((e.repos??[]).map(t=>[t.key,new Set(Object.keys(t.files??{}))]))}function oe(e){return Object.fromEntries(Ql.filter(t=>Object.hasOwn(e,t)).map(t=>[t,e[t]]))}function $i(e){let t=e.replace(/\s/g," "),n=[],o=[],s=!0;for(let i=0;i<e.length;i++){let r=t[i];r===" "&&s||(n.push(r),o.push(i),s=r===" ")}return{text:n.join("").trimEnd(),offsets:o}}function*Pi(e,t){let n=$i(e),o=$i(t).text;if(!o)return;let s=c=>e.slice(0,n.offsets[c]).split(`
2
- `).length,i=n.text.indexOf(o);if(i>=0){for(let c=i;c>=0;c=n.text.indexOf(o,c+1))yield[{from:s(c),to:s(c+o.length-1)}];return}let r=o.split(/\s*(?:\.{3}|…)\s*/);if(!(r.length<2||r.some(c=>!c)))for(let c=n.text.indexOf(r[0]);c>=0;c=n.text.indexOf(r[0],c+1)){let a=c+r[0].length,l=[{from:s(c),to:s(a-1)}],d=!0;for(let p of r.slice(1)){let u=n.text.indexOf(p,a);if(u<0||/\n\s*\n|\n\s*#{1,6}\s|\n[^\s][^:\n]*:/.test(e.slice(n.offsets[a-1]+1,n.offsets[u]))){d=!1;break}a=u+p.length,l.push({from:s(u),to:s(a-1)})}d&&(yield l)}}function se(e,t){for(let n of Pi(e,t))return n[0].from;return null}function Ri(e,t,n){if(!Number.isInteger(n)||n<1)return null;for(let o of Pi(e,t)){if(o[0].from===n)return o;if(o[0].from>n)break}return null}function ge(e,t){let n=[],o=e.flatMap(c=>c.skipped).map(c=>({...c}));for(let c of e)for(let[a,l]of Object.entries(c.files)){let d=Object.hasOwn(t,a)?t[a]:void 0;d===l?n.push(...c.sources.filter(p=>p.sourcePath===a)):o.push({path:a,reason:d===void 0?"Source file was not read.":l.startsWith(d)?"Source file was truncated while reading.":"Source file changed after admission."})}let s=o.filter((c,a)=>o.findIndex(l=>l.path===c.path&&l.reason===c.reason)===a),i=new Set(s.map(({path:c})=>c)).size,r=i?[`${i} ${i===1?"file was":"files were"} skipped, so some findings may be missing.`]:[];return{sources:n,skipped:s,warnings:r}}function ns(e,t,n,o){let s=t.filter(l=>Object.hasOwn(l.files,e.path)&&l.sources.some(d=>d.unitKey===n&&d.sourcePath===e.path)&&typeof o[e.path]=="string"&&l.files[e.path].startsWith(o[e.path]));if(!s.length)return!0;let{excerpt:i,line:r}=e,c=Object.hasOwn(o,e.path)?o[e.path]:void 0;if(!i||r===null||typeof c!="string")return!1;let a=Ri(c,i,r);return a?s.some(l=>{let d=l.files[e.path];return typeof d!="string"||!d.startsWith(c)?!1:l.sources.some(p=>p.unitKey!==n||p.sourcePath!==e.path?!1:p.kind==="prompt"?a.every(u=>u.from>=p.sourceLine&&u.to<=(p.sourceEndLine??p.sourceLine)):a.some(u=>u.from<=p.sourceLine&&u.to>=p.sourceLine))}):!1}var Yl={"too-large":"File is too large.",allowance:"File allowance reached.",total:"Import allowance reached.","scan-limit":"Scan allowance reached.","tool-limit":"Tool file limit reached.",missing:"Source file is missing.",unreadable:"Source file could not be read."};function Ai(e){let t={files:{},sources:[],skipped:[]},{agent:n,files:o,allowance:s}=e;if(!e.enabled||!n.codeInputsJson)return t;let i=new Set(s.skipped.map(({path:p})=>p)),r=s.paths.filter(p=>!i.has(p)),c=new Set(r),a=(p,u)=>{t.skipped.some(g=>g.path===p&&g.reason===u)||t.skipped.push({path:p,reason:u})};s.skipped.forEach(({path:p,reason:u})=>{let g=Yl[u];g&&a(p,g)});let l=(p,u)=>{let{sourcePath:g,sourceLine:h}=p;if(i.has(g))return!1;if(!c.has(g))return a(g,"File was not admitted for this agent."),!1;let f=Object.hasOwn(o,g)?o[g]:void 0;return typeof f!="string"?(a(g,"Source file is missing."),!1):!Number.isInteger(h)||h<1||h>f.split(`
3
- `).length?(a(g,"Source line is missing or stale."),!1):p.name.trim()?(t.files[g]=f,t.sources.some(m=>m.kind===u&&m.name===p.name&&m.sourcePath===g&&m.sourceLine===h)||t.sources.push({...p,unitKey:n.unitKey,kind:u}),!0):(a(g,"Source name is missing."),!1)},d=new Set((n.toolsJson??[]).map(({name:p})=>p));for(let p of n.codeInputsJson.tools){if(!d.has(p.name)||!l(p,"tool"))continue;let u=ii([p.name],r,o,r);u.length||a(p.sourcePath,`Tool implementation was not admitted or found: ${p.name}.`);for(let g of u){let h=ri([p.name],[g],o);h.length||a(g,"Tool implementation is missing."),h.forEach(f=>l(f,"tool"))}}if(n.codeInputsJson.contextInputs.forEach(p=>l(p,"context")),n.site){let{path:p,span:u}=n.site,g=Object.hasOwn(o,p)?o[p]:void 0;Number.isInteger(u.to)&&u.to>=u.from&&(typeof g!="string"||u.to<=g.split(`
4
- `).length)?l({name:n.unitKey,sourcePath:p,sourceLine:u.from,sourceEndLine:u.to},"prompt"):a(p,"Prompt source lines are missing or stale.")}return t}function qn(e){let t=e.qualityConfig?.switches.codeInputs?(e.codeEvidence??[]).filter(s=>s.enabled):[];if(!t.length)return{scopes:t,sources:[],files:[]};let n=t.flatMap(s=>ge(s.inputs,s.files).sources),o=[...new Map(t.flatMap(s=>s.inputs.flatMap(i=>Object.entries(i.files).flatMap(([r,c])=>{let a=Object.hasOwn(s.files,r)?s.files[r]:void 0;return a!==void 0&&c.startsWith(a)?[{repo:s.repo,path:r,text:Ae(a),truncated:a!==c}]:[]}))).map(s=>[JSON.stringify([s.repo,s.path,s.text]),s])).values()];return{scopes:t,sources:n,files:o}}var ve=A.chat,j=8,z=1,Hn=40,ke=6e4,we=16e3,bt=8e4,B=4e3,Zl=1536,os=8192,ss=1024;function Le(e){return os+e*Zl+ss}function ze(e,t="legacy"){return t==="whole-file"?ke+bt+B*e+4e3*4:ke+(we+B)*e+4e3*2}function qf(e,t,n,o,s="legacy"){if(!n||t===0)return null;let i=Math.ceil(t/j),r=1+z,c=Le(t)+(os+ss)*(i-1),a={template:o};if(s==="whole-file"){let d=Math.floor(t/j),p=t%j,u=pe(ze(j,s))*d+(p?pe(ze(p,s)):0);return ie(e,a,"Double-check findings",ve,u*r,c*r)}let l=ke*i+(we+B)*t;return ie(e,a,"Double-check findings",ve,(pe(l)+4e3*i)*r,c*r)}function ae(e){return{multiPass:e.CF_MULTI_PASS!=="0",splitCheck:e.CF_SPLIT_CHECK!=="0",findingCheck:e.CF_FINDING_CHECK!=="0",sourceNotes:e.CF_SOURCE_NOTES!=="0"}}function Un(e,t={}){let n=Number(e.CF_PASS_CONCURRENCY??(t.forLocal?4:3));return{enabled:e.CF_PARALLEL_PASSES!=="0",concurrency:t.passConcurrency??(Number.isSafeInteger(n)&&n>0?n:3)}}function J(e,t){let n=t.analysisFlags;return n?{...n,findingCheck:n.findingCheck??ae(e).findingCheck,sourceNotes:n.sourceNotes??!1}:{...ae(e),sourceNotes:!1}}var _e=8e5;function H(e,t,n,o,s,i,r){return{routeId:wi(t),templateId:t,answerFormatId:Zr(t,n,e),model:o,calls:s,maxInputBytes:i,maxInputTokens:2e5,maxOutputTokens:r??vi({model:o})}}function Gn(e,t){let n=e.CF_FINDING_QUALITY==="1",o=n&&e.CF_FINDING_FULL_CONTEXT==="1",s=n&&e.CF_FINDING_PRECISION_RULES==="1",i=t?.check.name??(s?"check-findings-precision-v1":"check-findings");return{enabled:n,fullContext:o,precisionRules:s,prompts:{derive:t?.derive.name??"derive-findings-legacy",check:i==="check-findings-legacy"?"check-findings":i}}}function is(e){return Gn({},e.prompts).prompts}function rs(e,t,{enabled:n,prompts:o}){return Yr(e,t,n?o[e]:void 0)}function Je(e,t,n){return rs(e,t,{enabled:n?.switches.enabled??!1,prompts:Gn({},n?.prompts).prompts})}function Mi(e,t,n,o){let s=ae(e),i=Gn(e),{fullContext:r}=i,c=rs("derive",e,i),a=rs("check",e,i),l=r?"whole-file":"legacy";return{findings:n,derive:H(e,c,"findings",A.generate,t,o),check:s.findingCheck?H(e,a,"check",ve,Math.ceil(n/j)*(z+1),Math.max(o,ze(j,l)),Le(j)):null}}function Fi(e){if(e&&typeof e=="object"){for(let t of Object.values(e))Fi(t);Object.freeze(e)}return e}function su(e,t,n={}){let{enabled:o,fullContext:s,precisionRules:i,prompts:r}=Gn(e),c=S=>o&&e[S]==="1",a=c("CF_FINDING_SECOND_OPINION"),l=c("CF_FINDING_RANKING"),d=o&&e.CF_FINDING_SEMANTIC_MATCHING!=="0",p=n.codeInputs!==!1&&o&&e.CF_FINDING_CODE_INPUTS!=="0",u=[],g=e.CF_FINDING_RECALL_VARIANT,h=n.recall!==!1&&c("CF_FINDING_RECALL")&&(g==="request-18"||g==="two-sweeps")?g:"off";n.recall!==!1&&c("CF_FINDING_RECALL")&&h==="off"&&u.push("Recall was skipped: no supported variant was selected.");let f=null,m=null;if(n.recall===!1&&e.CF_FINDING_RECALL==="1"&&u.push("Recall isn't available in local checks yet, so CF_FINDING_RECALL has no effect."),n.codeInputs===!1&&e.CF_FINDING_CODE_INPUTS==="1"&&u.push("Code evidence isn't available in local checks yet, so CF_FINDING_CODE_INPUTS has no effect."),a&&n.secondOpinion===!1&&u.push("Second opinion was skipped: local analysis supports Anthropic only."),a&&n.secondOpinion!==!1){let S=e.CF_FINDING_SECOND_OPINION_MODEL??"",b=Object.hasOwn(On,S)?On[S]:void 0,y=On[ve];b&&b.provider===e.CF_FINDING_SECOND_OPINION_PROVIDER&&b.provider!==y.provider&&b.input<=y.input&&b.output<=y.output&&(b.input<y.input||b.output<y.output)?(f=S,m=b.provider):u.push("Second opinion was skipped: configure a priced, cheaper model from a different provider.")}return Fi({ruleVersion:o?"precision-v1":"legacy",switches:{enabled:o,fullContext:s,precisionRules:i,secondOpinion:a,ranking:l,semanticMatching:d,codeInputs:p,recall:h!=="off"},prompts:{derive:t.promptVersion(r.derive,e),check:t.promptVersion(r.check,e)},models:{derive:A.generate,check:ve,scope:A.mechanical,secondOpinion:f},caps:{coreBytes:ke,siteBytes:we,findingTextBytes:B,siteWindowLines:Hn,citedBatchBytes:s?8e4:0,passBytes:15e4,passContextBytes:6e4,maxPasses:4,passFindings:h==="request-18"?18:mt,totalFindings:24,deriveOutputTokens:Oi,checkBatchSize:j,checkOutputTokens:Le(j),checkMaxRetries:z,checkOverheadTokens:4e3,secondOpinionBatchSize:4,secondOpinionInputBytes:ze(4)+(s?8e4:0),secondOpinionOutputTokens:2048,secondOpinionMaxRetries:z},recallVariant:h,displayPolicyVersion:l?"support-v1":"legacy",meaningMatchingVersion:d?"meaning-v1":"legacy",codeInputScopeVersion:p?"owned-code-v1":"legacy",secondOpinionProvider:m,diagnostics:u})}function Ot(e,t,n={}){let o=is(e);e.switches.enabled&&t.assertPromptVersions([{...e.prompts.derive,name:o.derive},{...e.prompts.check,name:o.check}],n)}function Se(e,t,n,o){return{tools:t,rethrow(s){n?.(s),de(s)},available:e!==null,settleStartedOnError:e?.settleStartedOnError,withRetry:s=>Se(e?Ci(e,s):null,t,n,o),async execute(s,i={}){if(o&&(i={...i,signal:i.signal?AbortSignal.any([o,i.signal]):o}),i.signal?.throwIfAborted(),!e)throw new Error("model unavailable");return"execute"in e?e.execute(s,i):_i(e,t,s,i)}}}function F(e,t,n={},o={}){return e.execute(Qr(t,n,o.maxInputBytes),o)}async function je(e){return e.requestTools?e.requestTools():bi(yi(await e.instructions()))}var en=2,ed=10*6e4;function Xn(e,t,n){return new re("llm",`The model could not read part ${e+1} of ${t} of this agent after ${n} tries, so this analysis stopped. Nothing from this run is saved; starting a new analysis reads every part again.`)}async function Ti(e){let{data:t,plan:n,progress:o}=e,s=n.passes.length,i={...t.passResults};if(!t.passResults){for(let d=0;d<(t.passCursor??0);d++)i[d]={findings:t.passFindings?.[d],retries:0};t.passRetries&&(i[t.passCursor??0]={retries:t.passRetries})}await o.checkpoint({inspectPlan:n,passResults:i});let r={...t,inspectPlan:n,passResults:i},c=n.passes.map((d,p)=>p).filter(d=>i[d]?.findings===void 0);for(let d of c)if((i[d]?.retries??0)>en)throw Xn(d,s,i[d].retries);let a;if(await q(e.onePartPerStep?c.slice(0,1):c,e.concurrency,async d=>{if(!(o.elapsedMs()>=ed||a))try{let p=i[d]?.retries??0;for(;!a;){o.assertHeld(),o.signal?.throwIfAborted();let u;try{u=await e.run(d,p)}catch(h){if(o.rethrow?.(h),de(h),e.forLocal)throw h instanceof re?h:new Error("A findings reading pass failed; no completed report was written.");p++,o.log({level:"warn",code:"analysis.pass_failed",counts:{part:d+1,parts:s,retries:p}});let f={retries:p};if(await o.checkpoint({},{index:d,result:f}),i[d]=f,p>en)throw Xn(d,s,p);if(e.onePartPerStep)break;await new Promise(m=>setTimeout(m,1e3));continue}let g={findings:u,retries:p};await o.checkpoint({},{index:d,result:g}),i[d]=g;break}}catch(p){a??=p}}),a)throw a;let l=n.passes.every((d,p)=>i[p]?.findings!==void 0);return{...r,...l?{passCursor:s,passRetries:0,passFindings:n.passes.map((d,p)=>i[p].findings)}:{}}}var Wn={critical:0,high:1,medium:2,low:3},Li=e=>(e.line??0)>0,Vn=e=>Li(e)&&!!e.excerpt?.trim();function as(e,t){let n=r=>{let c=Fn(r);return[c.filter(Vn).length,c.filter(Li).length,Number(!!r.site&&Vn({...r.site,excerpt:r.excerpt}))]},[o,s]=[n(e),n(t)],i=o.findIndex((r,c)=>r!==s[c]);return i>=0&&o[i]>s[i]}function cs(e,t){let n=Vr(t.map(o=>o.audience));return n===e.audience?e:{...e,audience:n}}function Ni(e,t,n={}){let o=[];if(n.semanticMatching)for(let s of e){let i=Gr({previous:o.map((r,c)=>qo(r,String(c))),current:s.map((r,c)=>qo(r,String(c))),enabled:!0});for(let r of i.matches){let c=Number(r.previousId),a=s[Number(r.currentId)];o[c]=cs(as(a,o[c])?a:o[c],[o[c],a])}for(let r of i.unmatchedCurrent)o.push(s[Number(r.id)])}else for(let s of e.flat()){let i=o.findIndex(r=>Xr(r,s));i<0?o.push(s):o[i]=cs(as(s,o[i])?s:o[i],[o[i],s])}return o.sort((s,i)=>Wn[s.severity]-Wn[i.severity]).slice(0,t)}function td(e,t){let n=Wn[e.severity]-Wn[t.severity];if(n)return n<0;let o=Fn(e).filter(Vn).length-Fn(t).filter(Vn).length;return o?o>0:as(e,t)}function ji(e,t={}){let n=t.deferCap?1/0:24;if(t.dedupe===!1)return e.length<2?e[0]??[]:Ni(e,n,t);let o=e.length<2?e[0]??[]:Ni(e,1/0,t),s=o.map((a,l)=>o.map((d,p)=>l===p||Wr(a,d))),i=new Set,r=new Map;for(let a=0;a<o.length;a++){if(i.has(a))continue;let l=[a];i.add(a);for(let p=0;p<l.length;p++)for(let u=0;u<o.length;u++)i.has(u)||!s[l[p]][u]||(i.add(u),l.push(u));if(!l.every(p=>l.every(u=>s[p][u]))){for(let p of l)r.set(p,o[p]);continue}let d=l.reduce((p,u)=>td(o[u],o[p])?u:p,a);r.set(a,cs(o[d],l.map(p=>o[p])))}let c=r.size===o.length?o:o.flatMap((a,l)=>r.has(l)?[r.get(l)]:[]);return e.length<2?c:c.slice(0,n)}var Di=e=>e.CF_FINDING_DEDUPE!=="0";var nd=15*6e4;async function Bi(e,t){let n=new AbortController,o={...e,execute:(r,c={})=>e.execute(r,{...c,signal:c.signal?AbortSignal.any([c.signal,n.signal]):n.signal})},s,i=new Promise((r,c)=>{s=setTimeout(()=>{let a=new re("llm","The reading part's model call timed out.");c(a),n.abort(a)},nd)});try{return await Promise.race([Promise.resolve().then(()=>t(o)),i])}finally{clearTimeout(s)}}var od=A.generate;function sd(e,t){let n=t.qualityConfig;return{template:Je("derive",e,n),inputs:{maxFindings:String(mt),graph:JSON.stringify(t.graph,null,2),pass:t.pass??null,codeSources:t.codeSources??[],files:Object.entries(t.files).map(([s,i])=>({path:s,text:Ae(i)}))},answerFormat:"findings",model:n?.switches.enabled?n.models.derive:od,limits:{effort:"high"}}}async function Ki(e,t,n){n.qualityConfig&&Ot(n.qualityConfig,t.tools,e);let o=await F(t,sd(e,n),e);return Jr(o)}function qi(e,t,n){return e.flatMap(o=>{let s=o.site?{path:o.site.path,line:o.site.line,excerpt:o.excerpt}:null,i=[...s?[s]:[],...o.otherSites??[]].filter(l=>t.has(l.path));if(!i.some(l=>n.has(l.path)))return[];let r=o.site&&i[0]===s?0:Math.max(0,i.findIndex(l=>(l.line??0)>0)),c=i[r],a=i.filter((l,d)=>d!==r);return[{...o,site:{path:c.path,line:c.line},excerpt:c.excerpt,otherSites:a}]})}function Qe(e){let t=[],n=[],o=new Set;for(let s of e)for(let[i,r]of Object.entries(s.files??{})){if(o.has(i)){n.push({repo:s.key,path:i});continue}o.add(i),t.push({repo:s.key,path:i,text:r})}return{all:t,shadowed:n}}function tn(e){return Object.fromEntries(Qe(e).all.map(t=>[t.path,t.text]))}function rd(e,t){return Object.keys(t).filter(n=>xe(n,{nested:!0})).sort().map(n=>{let o=n.split("/").slice(-2,-1)[0]??"skill",{name:s,description:i}=wt(e,`${o}.md`,t[n]);return{name:s,description:i??""}})}function Hi(e,t,n,o,s,i,r){o=ee(e,o,s);let c=new Set(t.core),a=n===0?[...t.core,...t.passes[0].own]:t.passes[n].own,l=[...t.core,...t.passes[n].own,...t.passes.length>1?t.passes[n].context??[]:[]],d=Fe(e,{paths:Object.keys(o),files:o,graph:s,repos:r}),p=Xe(l.map(h=>({repo:"",path:h,text:c.has(h)?fe(o[h]):o[h]})),c,Me(s),d),u=Object.fromEntries(p.map(h=>[h.path,h.text])),g=i?.enabled?ge(i.inputs.map(h=>({...h,files:ee(e,h.files,s)})),u):void 0;return{files:u,...t.passes.length>1?{pass:{part:n+1,count:t.passes.length,own:a,context:t.passes[n].context??[],skills:rd(e,o)}}:{},read:p.map(h=>h.path),own:a,...g?{codeSources:g.sources,codeSkipped:g.skipped}:{}}}function Ui(e){return e.find(t=>!t.notFoundAt)??e[0]??null}function id(e,t){return t.startsWith(`${e}#`)?t.slice(e.length+1):null}function ad(e,t){let n=[];for(let o of e?.nodes??[]){let s=o.kind==="agent"?t?id(t,o.id):o.id.slice(o.id.indexOf("#")+1):null;s!==null&&n.push({node:o,unitId:s})}return n}function cd(e,t,n){if(n==null)return e[0];let o=e.flatMap(r=>(r.node.files??[]).flatMap(c=>(c.role==="system prompt"||c.role==="knowledge")&&c.path===t&&c.span?[{c:r,span:c.span}]:[])),s=o.find(r=>r.span&&r.span.from<=n&&n<=r.span.to);if(s)return s.c;let i=null;for(let r of o)r.span&&r.span.to<n&&(!i||r.span.to>i.to)&&(i={c:r.c,to:r.span.to});return i?.c??e[0]}function Gi(e,t){return!e.file||!e.excerpt?[]:[...new Set(t.flatMap(n=>n.sources.filter(o=>o.kind!=="prompt"&&o.sourcePath===e.file&&Object.hasOwn(n.files,e.file)&&ns({path:e.file,line:e.line??null,excerpt:e.excerpt},[{...n,sources:[o]}],o.unitKey,n.files)).map(o=>o.unitKey)))]}function ld(e,t,n,o){let s=Gi(e,n);if(s.length)return{unitKey:s.length===1?s[0]:null,anchors:s,code:!0};let i=e.file?ad(t,e.repo??"").filter(r=>r.node.files?.some(c=>c.path===e.file)):[];return{unitKey:i.length?cd(i,e.file,e.line).unitId:o,anchors:s,code:!1}}function zn(e,t,n,o){let s=e[0];if(!s)return!0;let i=n.map(d=>({...d,input:{...d.input,files:Object.fromEntries(Object.entries(d.input.files).filter(([p,u])=>typeof d.files[p]=="string"&&u.startsWith(d.files[p])))}})),r=d=>i.filter(p=>!d.repo||!p.repo||p.repo===d.repo),c=r(s),a=pd(s,t,c.map(d=>d.input),o,{savedRepoPaths:!0});if(!a.unitKey&&!a.code)return!0;let l=a.unitKey?[a.unitKey]:a.anchors;return e.every(d=>{let p=r(d).filter(g=>!s.repo||!g.repo||g.repo===s.repo),u=a.unitKey?[]:Gi(d,p.map(g=>g.input));return l.every(g=>(!u.length||u.includes(g))&&p.filter(h=>h.unitKey===g).every(h=>ns({path:d.file??"",line:d.line??null,excerpt:d.excerpt??null},[h.input],g,h.files)))})}function Xi(e,t,n=!1){let o=n?ur:fr,s=t?e.filter(i=>i.repoPath&&o(i.repoPath)===t):[];return{rows:s,unitRows:s.filter(i=>i.unitKey)}}function dd(e,t,n={}){let{rows:o,unitRows:s}=Xi(e,t,n.savedRepoPaths);return Ui(s)?.id??o[0]?.id??(e.length===1?e[0].id:null)}function pd(e,t,n,o,s){let i=o?dd(o,e.repo,s):null,r=o?.find(d=>d.id===i)?.unitKey??null,{unitRows:c}=Xi(o??[],e.repo,s.savedRepoPaths);if(o&&(!e.repo||!c.length))return{unitKey:r,anchors:[],code:!1,agentId:i};let a=ld(e,t,n,r);if(!o)return{...a,agentId:null};let l=c.find(d=>d.unitKey===a.unitKey);return{...a,unitKey:a.code?a.unitKey:l?.unitKey??r,agentId:a.unitKey?l?.id??(a.code?null:i):null}}async function ls(e,t){let n=Hi(e,t.plan,t.index,t.files,t.reading,t.codeEvidence,t.repos),o=await Bi(t.llm,r=>Ki(e,r,{graph:t.graph,...n,qualityConfig:t.qualityConfig})),s=qi(o,new Set(n.read),new Set(n.own));if(!t.codeEvidence?.enabled)return s;let i=t.codeEvidence.inputs.flatMap(r=>r.unitKey?[{repo:r.repo,unitKey:r.unitKey,input:r,files:n.files}]:[...new Set(r.sources.map(c=>c.unitKey))].map(c=>({repo:r.repo,unitKey:c,input:r,files:n.files})));return s.filter(r=>zn([...r.site?[{...r.site,excerpt:r.excerpt}]:[],...r.otherSites??[]].map(c=>({repo:t.codeEvidence?.repoByPath?.[c.path]??null,file:c.path,line:c.line,excerpt:c.excerpt})),t.graph,i,t.codeEvidence?.agentRows))}function Jn(e,t,n=15e4,o,s,i){let{all:r,shadowed:c}=Qe(e),a=ee(i,Object.fromEntries(r.map(w=>[w.path,w.text])),t),l=r.map(w=>({...w,text:a[w.path]})),d=o??V(t),p={},u=[],g={},h=0,f=Fe(i,{paths:l.map(w=>w.path),files:a,graph:t,repos:e});for(let w of Xe(l,d,Me(t),f)){if(!d.has(w.path)&&h+w.text.length>n){u.push(w.path);continue}let k=d.has(w.path)?fe(w.text):w.text;p[w.path]=k,(g[w.repo]??=[]).push(w.path),h+=k.length}let m=fd(p,d),S=[...m>n?[`The agent's core files (${Math.round(m/1e3)} KB) are larger than one reading pass, so they were read in full and nothing else was read`]:[],...[jn(d,a)].filter(w=>!!w)],b=Bt(f,u.map(w=>({path:w,reason:"total"})));b&&S.push(b);let y=s?.enabled?ge(s.inputs.map(w=>({...w,files:ee(i,w.files,t)})),p):void 0;return{files:p,skipped:u,readByRepo:g,shadowed:c,warnings:[...S,...y?.warnings??[]],...y?{codeSources:y.sources,codeSkipped:y.skipped}:{}}}var fd=(e,t)=>Object.entries(e).reduce((n,[o,s])=>n+(t.has(o)?s.length:0),0);import{posix as zi}from"node:path";var ud=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),md=(e,t)=>new RegExp(`(?<![\\w-])${ud(t)}(?![\\w-])`).test(e);function Ye(e,t){return t.name!==null&&md(e,t.name)||Oe(t.paths,[e],n=>n).length>0}function Wi(e,t){let n=e.map(c=>c.paths.map(a=>t[a]).join(`
5
- `)),o=(c,a)=>Ye(n[c],e[a]),s=e.map(()=>new Set);for(let c=0;c<e.length;c++)for(let a=c+1;a<e.length;a++)(o(c,a)||o(a,c))&&(s[c].add(a),s[a].add(c));let i=new Set,r=[];for(let c=0;c<e.length;c++){if(i.has(c))continue;let a=[],l=[c];i.add(c);for(let d=l.shift();d!==void 0;d=l.shift()){a.push(d);for(let p of s[d])i.has(p)||(i.add(p),l.push(p))}a.sort((d,p)=>d-p),r.push({bundles:a.map(d=>e[d]),bytes:a.reduce((d,p)=>d+e[p].bytes,0),adjacent:Object.fromEntries(a.map(d=>[e[d].key,[...s[d]].map(p=>e[p].key).sort()]))})}return r.sort((c,a)=>a.bytes-c.bytes||(c.bundles[0].key<a.bundles[0].key?-1:1))}function Vi(e){let t=new Map(e.bundles.map(i=>[i.key,i])),n=new Set,o=i=>e.adjacent[i.key].filter(r=>n.has(r)).length,s=[];for(;t.size>0;){let i=[...t.values()].sort((r,c)=>o(c)-o(r)||e.adjacent[c.key].length-e.adjacent[r.key].length||c.bytes-r.bytes||(r.key<c.key?-1:1))[0];t.delete(i.key),n.add(i.key),s.push(i)}return s}function Ji(e,t,n,o,s){if(e.length<2)return{passes:e};let i=new Set(e.flatMap(l=>l.own)),r=[...i].filter(l=>/\.md$/i.test(l)).sort(),c=l=>[...new Set([...Oe(r,[n[l]],d=>d),...Oe(r,[n[l]],d=>zi.relative(zi.dirname(l),d))])];return{passes:e.map(l=>{let d=new Set([...t,...l.own]),p=new Map,u=new Set;for(let m of l.own){let S=new Set;for(let y of o)if(Ye(n[m],y))for(let w of y.paths.filter(k=>xe(k,{nested:!0})))S.add(w);for(let y of c(m))S.add(y);for(let y of[...S].filter(w=>xe(w,{nested:!0})))for(let w of c(y))S.add(w);for(let y of S)u.add(y);let b=[...S];for(let y=0;y<b.length;y++){let w=b[y];for(let k of c(w))S.has(k)||(S.add(k),b.push(k))}for(let y of S)i.has(y)&&!d.has(y)&&p.set(y,(p.get(y)??0)+1)}let g=[...p.keys()].sort((m,S)=>Number(u.has(S))-Number(u.has(m))||p.get(S)-p.get(m)||(m<S?-1:1)),h=[],f=0;for(let m of g){let S=n[m].length;f+S<=s&&(h.push(m),f+=S)}return{own:l.own,context:h.sort()}})}}import{basename as Qi}from"node:path";function ds(e,t,n,o){let s=[...n].sort();return{key:e,name:t,paths:s,bytes:s.reduce((i,r)=>i+o[r].length,0)}}function Yi(e,t){let n=V(t),o=new Set(Object.keys(e).filter(a=>!n.has(a))),s=[],i=a=>a.filter(l=>o.delete(l)),r=new Set(t.edges.filter(a=>a.kind==="delegates").map(a=>a.to));for(let a of t.nodes){if(!r.has(a.id)||!a.sourceRef)continue;let l=a.sourceRef.path.replace(/\.md$/i,"")+"/",d=(a.files??[]).filter(h=>h.role==="skill").map(h=>jo(h.path,{nested:!0})?.folder).filter(h=>!!h),p=[...o].filter(h=>h.startsWith(l)||d.some(f=>h.startsWith(f+"/"))),u=(a.files??[]).filter(h=>h.role==="reference"||h.role==="skill").map(h=>h.path),g=i([...p,...u]);g.length&&s.push(ds(l,Qi(l),g,e))}let c=new Map;for(let a of o){let l=jo(a,{nested:!0})?.folder;l&&c.set(l,[...c.get(l)??[],a])}for(let[a,l]of c)s.push(ds(a,Qi(a),i(l),e));for(let a of o)s.push(ds(a,null,[a],e));return s.sort((a,l)=>a.key<l.key?-1:a.key>l.key?1:0)}var hd=(e,t)=>e.reduce((n,o)=>n+t[o].length,0);function Zi(e,t,n,o){let s=n-t;return e<=n||s<=0?1:Math.min(o,Math.ceil((e-t)/s))}function gd(e,t,n){return e.bytes<=t?[e.bundles]:Vi(e).flatMap(o=>o.bytes<=t?[o]:o.paths.map(s=>({key:s,name:null,paths:[s],bytes:n[s].length}))).map(o=>[o])}function kd(e,t){let n=e.split("/").slice(0,-1);for(let o=n.length;o>0;o--){let s=n.slice(0,o).join("/"),i=t.find(r=>r.own.some(c=>c.startsWith(`${s}/`)));if(i)return i}}function ea(e){e={...e,files:ee(e.settings,e.files,e.graph)};let{passMaxBytes:t,maxPasses:n,graph:o}=e,s=V(o),i=Object.keys(e.files).filter(x=>s.has(x)).sort(),r=Object.fromEntries(Object.entries(e.files).map(([x,E])=>[x,s.has(x)?fe(E):E])),c=t-hd(i,r),a=Object.keys(r).filter(x=>!s.has(x)),l=Fe(e.settings,{paths:Object.keys(r),graph:o,files:r,repos:e.repos}),d=Me(o),p=Uo(a.filter(x=>oi(l,x)),r,d,l),u=new Set(p),g=new Set(o.nodes.flatMap(x=>(x.files??[]).map(E=>E.path))),h=Object.fromEntries(a.filter(x=>!u.has(x)).map(x=>[x,r[x]])),f=Yi(h,o),m=x=>x.name!==null||ft(x.paths[0])&&g.has(x.paths[0]),S=f.filter(x=>!m(x)).flatMap(x=>x.paths),b=[jn(i,e.files)].filter(x=>!!x),y=[],w=[];if(c<=0){b.push("The agent's core files fill a whole reading pass, so nothing else was read");let x=Bt(l,a.map(E=>({path:E,reason:"total"})));return x&&b.push(x),{core:i,passes:[{own:[]}],skipped:[...a].sort(),warnings:b}}for(let x of p){let E=r[x].length,C=w.find($=>$.bytes+E<=c);!C&&E<=c&&w.length<n&&(C={own:[],bytes:0},w.push(C)),C?(C.own.push(x),C.bytes+=E):y.push(x)}let k=new Set(w);for(let x of Wi(f.filter(m),h)){let E=x.bytes>c,C;for(let $ of gd(x,c,r)){let R=$.reduce((U,Ao)=>U+Ao.bytes,0),P=$.flatMap(U=>U.paths),Y=(E&&C&&C.bytes+R<=c?C:void 0)??w.find(U=>(!E||k.has(U))&&U.bytes+R<=c);Y?(E&&(C=Y),Y.own.push(...P),Y.bytes+=R):R>c||w.length>=n?y.push(...P):(C={own:[...P],bytes:R},w.push(C))}}w.length===0&&w.push({own:[],bytes:0});let O=Uo(S,r,d,l);for(let x of O){let E=R=>R.bytes+r[x].length<=c,C=kd(x,w),$=C&&E(C)?C:w.find(E);if(!$){y.push(x);continue}$.own.push(x),$.bytes+=r[x].length}let v=w.map(x=>({own:x.own.sort()})),_=Bt(l,y.map(x=>({path:x,reason:"total"})));_&&b.push(_);let I=Ji(v,i,e.files,f,e.contextMaxBytes??6e4);return{core:i,passes:I.passes,skipped:y.sort(),warnings:b}}function De(e){let t=(n,o)=>`${n}#${o}`;return{nodes:e.flatMap(({repoKey:n,fragment:o})=>o.nodes.map(s=>({id:t(n,s.id),sourceRef:s.sourceRef,files:s.files}))),edges:e.flatMap(({repoKey:n,fragment:o})=>o.edges.map(s=>({from:t(n,s.from),to:t(n,s.to),kind:s.kind,sourceRef:s.sourceRef})))}}import{createHash as ta}from"node:crypto";function na(e){let t=e.findingQuality;if(!t?.config.switches.codeInputs||t.codeEvidence)return e;let n=[],o={};for(let[s,i]of(e.repos??[]).entries()){let r=i.files??{},c=Tt.safeParse(e.mapped?.[s]),a=c.success?c.data.nodes:[],l=e.projectAgents,d=l?.enabled?[...l.byRepo[i.key]??[],...l.codeByRepo?.[i.key]??[]]:[];for(let p of d){if(!p.codeInputsJson)continue;let u=p.codeInputsJson.admittedPaths!==void 0,g={paths:u?[...p.codeInputsJson.admittedPaths]:[],skipped:[]},h=[],f=w=>w.filter(k=>{let O=r[k.sourcePath],v=p.codeInputsJson?.sourceHashes?.[k.sourcePath];return u&&O!==void 0&&v&&ta("sha256").update(O).digest("hex")===v?!0:(h.push({path:k.sourcePath,reason:u?v?"The source revision differs from the imported source.":"The imported source revision is unknown.":"The imported file admission is unknown."}),!1)}),m={tools:f(p.codeInputsJson.tools),contextInputs:f(p.codeInputsJson.contextInputs)},b=a.find(w=>w.id===p.unitKey)?.files.find(w=>w.role==="system prompt"&&w.span),y=Ai({agent:{...p,codeInputsJson:m,...b?.span?{site:{path:b.path,span:b.span}}:{}},files:r,allowance:g,enabled:!0});y.skipped.push(...h),n.push({repo:i.key,unitKey:p.unitKey,input:y})}for(let[p,u]of Object.entries(r))o[JSON.stringify([i.key,p])]=ta("sha256").update(u).digest("hex")}return{...e,findingQuality:{...t,codeEvidence:n,sourceHashes:o}}}function oa(e,t,n={}){let o=e.findingQuality;if(!o?.config.switches.codeInputs)return e;let s=(o.codeEvidence??[]).flatMap(r=>ge([{...r.input,files:ps(e,r.repo,r.input.files,n)}],t[r.repo]??{}).skipped.map(c=>({...c,repo:r.repo}))),i=new Set(s.map(r=>JSON.stringify([r.repo,r.path]))).size;return{...e,findingQuality:{...o,readingSkipped:s},warnings:[...new Set([...e.warnings??[],...i?[`${i} ${i===1?"file was":"files were"} skipped, so some findings may be missing.`]:[]])]}}function sa(e){if(!e.findingQuality?.config.switches.codeInputs)return;let{all:t}=Qe(e.repos??[]);return{enabled:!0,inputs:(e.findingQuality.codeEvidence??[]).map(o=>({...o.input,repo:o.repo,unitKey:o.unitKey,files:Object.fromEntries(Object.entries(o.input.files).filter(([s])=>t.some(i=>i.repo===o.repo&&i.path===s))),sources:o.input.sources.filter(s=>t.some(i=>i.repo===o.repo&&i.path===s.sourcePath))})),agentRows:e.projectAgents?.agentRows,repoByPath:Object.fromEntries(t.map(o=>[o.path,o.repo]))}}function ps(e,t,n,o){let s=Ii(e,(e.repos??[]).findIndex(i=>i.key===t));return ee(o,n,s.success?s.data:{nodes:[]})}function fs(e,t,n,o={}){return Object.fromEntries(Object.entries(n).map(([s,i])=>{let r=e.repos?.find(a=>a.key===s)?.files??{},c=ps(e,s,Object.fromEntries(i.map(a=>[a,r[a]??""])),o);return[s,Object.fromEntries(Object.entries(c).map(([a,l])=>[a,t.core.includes(a)?fe(l):l]))]}))}function ra(e,t,n,o={}){if(!e.findingQuality?.config.switches.codeInputs)return;let s=fs(e,t,n,o);return e.findingQuality.codeEvidence?.map(i=>({repo:i.repo,unitKey:i.unitKey,enabled:!0,inputs:[{...i.input,files:ps(e,i.repo,i.input.files,o)}],files:s[i.repo]??{},agentRows:e.projectAgents?.agentRows}))}var us=e=>e>1?24:mt,Be=e=>us(e.inspectPlan?.passes.length??1);function wd(e,t,n){let o=Jn(e,t,void 0,void 0,void 0,n),s=V(t),i=Object.keys(o.files);return{core:i.filter(r=>s.has(r)),passes:[{own:i.filter(r=>!s.has(r))}],skipped:o.skipped,warnings:o.warnings}}function ms(e,t,n,o){return n?ea({files:tn(e),graph:t,passMaxBytes:15e4,maxPasses:4,settings:o,repos:e}):wd(e,t,o)}function ia(e){let t=e.skipped.length;if(t===0)return null;let n=e.passes.length>1?`${e.passes.length} reading passes`:"one pass";return`${t} file${t===1?" was":"s were"} not analyzed because the agent is larger than ${n} can read: ${e.skipped.join(", ")}`}async function aa(e,t){let{graph:n,llm:o}=t,s=na(t.data),i=s.findingQuality?.config,r=s.repos??[],{all:c,shadowed:a}=Qe(r),l=sa(s),d=tn(r),p=De(t.fragments),u=s.inspectPlan??ms(r,p,J(e,s).multiPass,e),g=s.passCursor??0,h=u.passes.length,f=(s.passFindings??[]).map(be),m={...s,inspectPlan:u},S=t.parallel??Un(e);if(h>1&&t.checkpoint&&(S.enabled||s.passResults)){if(!(s.passResults&&u.passes.every((O,v)=>s.passResults?.[v]?.findings!==void 0)))return{done:!1,data:await Ti({data:s,plan:u,progress:{...t.progress,checkpoint:(v,_)=>t.progress.checkpoint(_?v:{...oe(m),...v},_)},concurrency:S.concurrency,onePartPerStep:!S.enabled,forLocal:t.forLocal,run:(v,_)=>ls(e,{llm:o.withRetry(_),qualityConfig:i,graph:n,plan:u,index:v,files:d,reading:p,codeEvidence:l,repos:r})})};f=u.passes.map((O,v)=>be(s.passResults[v].findings))}else if(g<h){let k;try{k=await ls(e,{llm:o.withRetry(s.passRetries??0),qualityConfig:i,graph:n,plan:u,index:g,files:d,reading:p,codeEvidence:l,repos:r})}catch(O){if(o.rethrow(O),de(O),t.forLocal)throw O instanceof re?O:new Error("A findings reading pass failed; no completed report was written.");if(h<2)throw O;let v=s.passRetries??0;if(t.progress.log({level:"warn",code:"analysis.pass_failed",counts:{part:g+1,parts:h,retries:v}}),v<en)return{done:!1,data:{...m,passRetries:v+1}};throw Xn(g,h,v+1)}if(f=[...f,k],m={...m,passCursor:g+1,passRetries:0,passFindings:f},await t.checkpoint?.(oe(m)),h>1)return{done:!1,data:m}}let b=new Set([...u.core,...u.passes.flatMap(k=>k.own)]),y={},w=Fe(e,{paths:c.map(k=>k.path),files:d,graph:p,repos:r});for(let k of Xe(c,V(p),Me(p),w))b.has(k.path)&&(y[k.repo]??=[]).push(k.path);return m.findingQuality&&i?.switches.codeInputs&&(m=oa(m,fs(m,u,y,e),e)),{done:!0,data:m,findings:ji(f,{semanticMatching:i?.switches.semanticMatching,dedupe:Di(e),deferCap:t.forLocal||xn(e)}),plan:u,readByRepo:y,shadowed:a}}var nn="Findings could not be checked a second time; all findings were kept.";function vt(e,t){let n=new Set(t),o=new Map,s=new Set,i=new Set,r=new Set;for(let c of e){if(!n.has(c.id)){i.add(c.id);continue}if(s.has(c.id)){r.add(c.id),o.delete(c.id);continue}s.add(c.id),o.set(c.id,c)}return{byId:o,unknownIds:[...i],duplicateIds:[...r]}}function _t(e,t){let n=vt(e,t);return n.unknownIds.length===0&&n.duplicateIds.length===0}function Ze(e,t,n,o={}){let s=e.map((y,w)=>`f${w+1}`),i=!_t(t,s),r=i?"Verdict ids did not match; all findings were kept.":n?.failure,c=new Set(n?.sentIds??s),a=new Map(n?.skipped.map(y=>[y.id,y.reason])??[]),l=i?["verdict ids did not match"]:[],d=new Map(t.map(y=>[y.id,y])),p=[...n?.rejectedBatches??[],...i?[{ids:s,verdicts:t}]:[]],u=new Map,g=[],h=o.mode==="offline-simulation"&&o.shadow?.done?vt(o.shadow.verdicts,s).byId:new Map;for(let y of p)for(let w of y.verdicts)y.ids.includes(w.id)&&u.set(w.id,w);let f=e.map((y,w)=>{let k=s[w],O=i?void 0:d.get(k),v=d.get(k)??u.get(k),_=c.has(k)||v!==void 0,I=_?"":a.get(k)??"No model call was made before the check stopped.",x="keep",E;_?r?E=r:O?O.reason.trim()?!O.evidenceAgainst?.trim()||!O.evidenceFor?.trim()||O.verdict==="drop"&&/^[\s"'“”‘’]*none found[\s."'“”‘’]*$/i.test(O.evidenceAgainst)?(E="The model supplied no usable evidence for its decision; this finding was kept.",l.push(`${k}: ${E}`)):(x=O.verdict,E=O.reason,g.push(k)):(E="The model returned an empty reason; this finding was kept.",l.push(`${k}: ${E}`)):(E="The model returned no verdict for this finding in the accepted response; it was kept.",l.push(`${k}: ${E}`)):E=I;let C=h.get(k);return!r&&g.includes(k)&&C&&o.shadow?.coverage.answeredIds.includes(k)&&(C.verdict==="drop"&&C.decisive&&C.quotes.some($=>$.side==="against")?(x="drop",E=C.reason):C.verdict!==x&&(x="keep",E="The checks disagree without decisive contrary evidence; this finding was kept.")),{id:k,title:y.title,verdict:x,reason:E,sent:_,skipReason:I,modelVerdict:v?.verdict??"",modelReason:v?.reason??"",evidenceAgainst:v?.evidenceAgainst??"",evidenceFor:v?.evidenceFor??""}}),m=[],S=e.filter((y,w)=>{let k=f[w];return k.verdict!=="drop"?!0:(m.push({finding:y,reason:k.reason}),!1)}),b=r?[nn]:m.length?[`${m.length} ${m.length===1?"finding was":"findings were"} removed after a second read: ${m.map(({finding:y})=>y.title.replace(/\s+/g," ").trim()).join("; ")}`]:[];return{kept:r?e:S,dropped:m,warnings:b,verdicts:f,...l.length?{diagnostics:l}:{},...p.length?{rejectedBatches:p}:{},...n?.recordAcceptance?{acceptedIds:g}:{}}}import{posix as Ct}from"node:path";function Qn(e,t,n,o={}){let s=t.replace(/\[[^\]]*\]\([^)]*\)/g,"").replace(/\b[a-z][a-z\d+.-]*:\/\/[^\s)>]+|\/\/[^\s)>]+/gi,""),i=[...Array.from(t.matchAll(/\]\(\s*(?:<([^>]+)>|([^\s)]+))/g),c=>({value:c[1]??c[2],relative:!0})),...Array.from(t.matchAll(/^\s*\[[^\]]+\]:\s*(?:<([^>]+)>|([^\s]+))/gm),c=>({value:c[1]??c[2],relative:!0})),...Array.from(s.matchAll(/\bRead\s+(?:`([^`\n]+)`|"([^"\n]+)"|'([^'\n]+)'|([^\s<>`"']+\.[a-zA-Z0-9]+))/gi),c=>({value:c[1]??c[2]??c[3]??c[4],relative:!1}))],r=[];for(let c of i){let a;try{a=decodeURIComponent(c.value.split(/[?#]/)[0]).replace(/[.,;]+$/,"")}catch{continue}if(!a||/^(?:[a-z][a-z0-9+.-]*:|\/\/|\\)/i.test(a)||a.startsWith("/")&&!o.rootRelative)continue;let l=a.startsWith("/"),d=Ct.normalize(l?a.slice(1):Ct.join(Ct.dirname(e),a)),u=(l||c.relative||a.startsWith(".")?[d]:[d,Ct.normalize(a)]).filter(h=>h!==".."&&!h.startsWith("../")),g=u.find(h=>Object.hasOwn(n,h))??(o.includeMissing?u[0]:void 0);g&&!r.includes(g)&&r.push(g)}if(o.includeNamed)for(let c of Object.keys(n))[c,Ct.relative(Ct.dirname(e),c)].some(l=>l&&s.includes(l)&&new RegExp("(?:^|[^\\p{L}\\p{N}_./-])"+l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(?=$|[^\\p{L}\\p{N}_./-]|\\.(?:\\s|$))","u").test(s))&&!r.includes(c)&&r.push(c);return r}function et(e,t,n,o=Hn,s=t){let i=e.split(`
6
- `),r=Math.max(0,Math.min(i.length-1,(t??1)-1)),c=t===null||i.length<=o*2+1,a=c?0:Math.max(0,r-o),l=c?i.length:Math.min(i.length,Math.max(r,(s??1)-1)+o+1),d=()=>i.slice(a,l).map((g,h)=>`${a+h+1} ${g}`).join(`
7
- `),p=d();for(;l-a>1&&Buffer.byteLength(d())>n;)r-a>l-r-1?a++:l--;let u=D(d(),n);return{text:u,truncated:u!==p||t!==null&&(t<1||t>i.length)}}function tt(e,t,n=0,o="legacy",s){let i=Sd(e,t,n);return o==="whole-file"?Od(e,t,n,i,s):i}function Sd(e,t,n){let o=[],s=[],i=[],r=ke,c=t.repos.flatMap(l=>{let d=t.fragments.filter(h=>h.repoKey===l.key),p=V(De(d)),u=new Map(d.flatMap(h=>h.fragment.nodes.flatMap(f=>f.files.map(m=>[m.path,m.role])))),g=h=>["system prompt","soul","knowledge"].indexOf(u.get(h)??"");return[...p].map(h=>({repo:l,path:h,rank:g(h)<0?3:g(h)}))}).sort((l,d)=>l.rank-d.rank||l.repo.key.localeCompare(d.repo.key)||l.path.localeCompare(d.path));for(let{repo:l,path:d}of c){let p=l.files?.[d],u=p===void 0?"":p.split(`
8
- `).map((f,m)=>`${m+1} ${f}`).join(`
9
- `),g=D(u,r),h=p===void 0||g!==u;i.push({repo:l.key,path:d,line:1,text:g,truncated:h}),r-=Buffer.byteLength(g),h&&o.push({kind:"core-incomplete",repo:l.key,path:d})}i.length===0&&o.push({kind:"no-core"});let a=e.flatMap((l,d)=>{let p=[...l.site?[{...l.site,repo:l.siteRepo}]:[],...l.otherSites];if(bn(l.category)&&p.length<$e(l.category))return s.push({id:`f${n+d+1}`,reason:`${l.category} requires ${$e(l.category)} cited sites; ${p.length} supplied.`}),[];let u=p.map(m=>{let S=t.repos.find(y=>y.key===m.repo),b=S?.files?.[m.path];return b===void 0?(o.push({kind:"site-unavailable",repo:m.repo??null,path:m.path,line:m.line}),{repo:m.repo??"",path:m.path,line:m.line??0,text:"",truncated:!0}):{repo:S.key,path:m.path,line:m.line??0,...et(b,m.line,Math.floor(we/p.length))}}),g=D(l.title,Math.floor(B/4)),h=l.category??"",f=D(l.cause,B-Buffer.byteLength(g)-Buffer.byteLength(h));return[{id:`f${n+d+1}`,title:g,body:f,category:h,sites:u,truncated:f!==l.cause||g!==l.title}]});return{coreFiles:i,findings:a,diagnostics:o,skipped:s}}var ye=e=>Buffer.byteLength(JSON.stringify(e)),Q=e=>JSON.stringify([e.repo,e.path]),hs=e=>[...new Map(e.map(t=>[Q(t),t])).values()],yd=({repo:e,path:t})=>({repo:e,path:t});function gs(e,t,n){if(ye(n(e))<=t)return e;let o=0,s=Buffer.byteLength(e);for(;o<s;){let i=Math.ceil((o+s)/2);ye(n(D(e,i)))<=t?o=i:s=i-1}return D(e,o)}function xd(e,t){let n=[];for(let s of e)ye([...n,s].map(i=>({...i,text:""})))<=ke?n.push(s):t.push({kind:"core-omitted",repo:s.repo,path:s.path});let o=[];for(let[s,i]of n.entries()){let r=n.slice(s+1).map(l=>({...l,text:""})),c=gs(i.text,ke,l=>[...o,{...i,text:l},...r]),a=i.truncated||c!==i.text;a&&t.push({kind:"core-incomplete",repo:i.repo,path:i.path}),o.push({...i,text:c,truncated:a})}return o}function bd(e,t){let n=t.repos.find(s=>s.key===e.repo)?.files??{},o=n[e.path];return o===void 0?[]:Qn(e.path,o,n,{includeMissing:!0,includeNamed:!0,rootRelative:!0}).filter(s=>s!==e.path).sort().map(s=>({repo:e.repo,path:s}))}function Od(e,t,n,o,s){let i=[...o.diagnostics],r=xd(o.coreFiles,i),c=o.coreFiles.map(yd),a=e.map(v=>{let _=[...v.site?[{repo:v.siteRepo??"",path:v.site.path}]:[],...v.otherSites.map(x=>({repo:x.repo??"",path:x.path}))],I=hs([...c,..._]);return hs([...I,...I.flatMap(x=>bd(x,t))])}),l=v=>t.repos.find(_=>_.key===v.repo)?.files?.[v.path],d=new Set(c.map(Q)),p=new Set(o.findings.map(v=>v.id)),g=hs(a.flatMap((v,_)=>p.has(`f${n+_+1}`)?v:[])).filter(v=>!d.has(Q(v))).flatMap(v=>{let _=l(v);return _===void 0?(i.push({kind:"linked-unavailable",repo:v.repo,path:v.path}),[]):[{...v,line:1,text:_.split(`
10
- `).map((I,x)=>`${x+1} ${I}`).join(`
11
- `),truncated:!1}]}),h=[],f=ye(g)<=bt;for(let[v,_]of g.entries()){let I=f?bt:Math.floor((bt-ye(h))/(g.length-v))-1;if(f||ye(_)<=I){h.push(_);continue}let x=o.findings.flatMap($=>$.sites.filter(R=>Q(R)===Q(_)).map(R=>({line:R.line||null,cap:Math.floor(we/$.sites.length)}))),E=$=>{let R=new Map;for(let P of x.length?x:[{line:null,cap:we}])for(let Y of et(l(_),P.line,Math.min(P.cap,$)).text.split(`
12
- `)){let U=/^(\d+) /.exec(Y);U&&Y.length>(R.get(Number(U[1]))?.length??0)&&R.set(Number(U[1]),Y)}return{..._,text:[...R].sort((P,Y)=>P[0]-Y[0]).map(([,P])=>P).join(`
13
- `),truncated:!0}},C=E(we);if(ye(C)>I){let $=Math.max(0,Math.floor((I-ye({..._,text:"",truncated:!0}))/6/Math.max(1,x.length)));C=E($)}ye(C)<=I&&h.push(C),i.push({kind:"whole-file-incomplete",repo:_.repo,path:_.path})}let m=new Map([...r,...h].map(v=>[Q(v),v])),S=v=>{let _=l(v);return _!==void 0&&(!Number.isInteger(v.line)||v.line<1||v.line>_.split(`
14
- `).length)},b=[...o.skipped??[]],y=o.findings.flatMap(v=>{let _=v.sites.map(C=>({...C,text:"",truncated:!m.has(Q(C))||m.get(Q(C)).truncated||S(C)})),I={...v,title:"",body:"",sites:_};if(ye(I)>B-2)return b.push({id:v.id,reason:"The cited paths exceed the serialized claim allowance."}),[];let x=gs(v.title,B-2,C=>({...I,title:C})),E=gs(v.body,B-2,C=>({...I,title:x,body:C}));return[{...v,title:x,body:E,sites:_,truncated:v.truncated||x!==v.title||E!==v.body}]}),w=r.length>0&&r.length===o.coreFiles.length&&r.every(v=>!v.truncated),k=e.map((v,_)=>{let I=`f${n+_+1}`,x=y.find(C=>C.id===I),E=o.findings.find(C=>C.id===I)?.sites.filter(S).map(Q)??[];return{fingerprint:K(v),requested:a[_],included:a[_].filter(C=>l(C)!==void 0&&m.has(Q(C))),missing:a[_].filter(C=>l(C)===void 0),truncated:a[_].filter(C=>l(C)!==void 0&&(!m.has(Q(C))||m.get(Q(C)).truncated||E.includes(Q(C)))),claimTruncated:x?.truncated??!0,coreComplete:w}}),O={coreFiles:r,citedFiles:h,findings:y,diagnostics:[...new Map(i.map(v=>[JSON.stringify(v),v])).values()],skipped:b,coverage:k};return O.serializedBytes=s.checkPayloadBytes(O),O}var vd="We couldn't see this agent's code, so this may already be handled there.";function ca(e){return Object.values(e).some(t=>[...t].some(n=>$n(n)!==null))}function la(e,t){return e==="better_as_code"&&t===!1?vd:void 0}function Et(e){return e.sawCode??e.findingQuality?.sawCode}var da={critical:0,high:1,medium:2,low:3},_d="No strong findings to show.",Cd=/^[\s"'“”‘’]*none found[\s."'“”‘’]*$/i,Ed=/"([^"\n]*(?:\n[^"\n]*)*)"|“([^”]+)”|`([^`]+)`|‘([^’]+)’|'([^'\n]+)'/g;function Yn(e,t){return vt(e.map(n=>({...n,id:n.fingerprint})),t).byId}function on(e,t){return e.repo===t.repo&&e.path===t.path}function Zn(e,t){let n=e.repos.filter(o=>o.key===t.repo);return n.length===1?n[0].files?.[t.path]:void 0}function ua(e,t,n){return e===void 0||t===null||!Number.isInteger(t)||t<1||!n?.trim()?!1:se(e.split(`
15
- `).slice(t-1).join(`
16
- `),n)===1}function Id(e){return[...e.site?[{repo:e.siteRepo??"",...e.site,excerpt:e.excerpt}]:[],...e.otherSites]}function pa(e,t){let n=Zn(t,e),o=e.line>1?n.split(`
17
- `).slice(0,e.line-1).join(`
18
- `)+`
19
- `:"",s=n.replace(/\s+/g," "),i=e.excerpt.replace(/\s+/g," ").trim(),r=o.replace(/\s+/g," ").length,c=s.indexOf(i,r);if(c>=0)return{from:c,to:c+i.length};let a=i.split(/\s*(?:\.{3}|…)\s*/),l=s.indexOf(a[0],r),d=l;for(let p of a){let u=s.indexOf(p,d);if(u<0)return null;d=u+p.length}return l<0?null:{from:l,to:d}}function $d(e,t,n){if(!on(e,t))return!0;let o=pa(e,n),s=pa(t,n);return o!==null&&s!==null&&(o.to<=s.from||s.to<=o.from)}function Pd(e,t,n,o){if(!bn(e.category))return"The finding has no supported evidence category.";if(!e.site||!e.siteRepo)return"The finding has no fetched primary site.";if(t.length<$e(e.category))return"The category's required quoted sites are missing.";if(!n)return"Evidence coverage was not recorded unambiguously.";if(n.claimTruncated)return"The claim was truncated in the check.";if(!n.coreComplete||n.missing.length||n.truncated.length)return"Required evidence was unavailable or truncated.";if(n.requested.length===0||n.requested.some(s=>!n.included.some(i=>on(s,i))||Zn(o,s)===void 0))return"Required files were not included in the check.";for(let s of t){if(!n.requested.some(i=>on(i,s))||!n.included.some(i=>on(i,s)))return"A cited file was not included in the check.";if(!ua(Zn(o,s),s.line,s.excerpt))return"A cited quote could not be verified at its source line."}return $e(e.category)===2&&!t.some((s,i)=>t.slice(i+1).some(r=>$d(s,r,o)))?"The category needs distinct quoted sites.":null}function Rd(e,t){let n=e.cause.replace(/\s+/g," ").trim();for(let i of t){let r=i.excerpt?.replace(/\s+/g," ").trim();r&&(n=n.replaceAll(r,""))}if(!n||n===e.title)return!1;let o=/\b(?:without|before|instead|different|wrong|repeatedly|twice|never|cannot|can't|unable to|fails? to|unapproved|unauthori[sz]ed)\b/i,s=/\b(?:send(?:s|ing)?|sent|delet(?:e[sd]?|ing)|appl(?:y|ies|ied|ying)|grant(?:s|ed|ing)?|revok(?:e[sd]?|ing)|return(?:s|ed|ing)?|rout(?:e[sd]?|ing)|run(?:s|ning)?|execut(?:e[sd]?|ing)|writ(?:e[sd]?|ing)|read(?:s|ing)?|retry|retries|retried|retrying|skip(?:s|ped|ping)?|omit(?:s|ted|ting)?|block(?:s|ed|ing)?|allow(?:s|ed|ing)?|charg(?:e[sd]?|ing)|pay(?:s|ing)?|paid|los(?:e[sd]?|ing)|receiv(?:e[sd]?|ing)|select(?:s|ed|ing)?|exclud(?:e[sd]?|ing)|includ(?:e[sd]?|ing)|schedul(?:e[sd]?|ing))\b/i;return o.test(n)&&s.test(n)}function Ad(e,t,n,o){let s=[...e.matchAll(/(?:^|[\s(`*])([^\s"'“”‘’`() *]+):(\d+)(?:-\d+)?/g)].map(c=>{let a=c[1],l=n.included.filter(p=>p.path===a||`${p.repo}:${p.path}`===a),d=[...new Map(l.map(p=>[JSON.stringify([p.repo,p.path]),p])).values()];return{from:c.index,to:c.index+c[0].length,line:Number(c[2]),ref:d.length===1?d[0]:void 0}});if(s.length===0||s.some(c=>!c.ref))return!1;let i=new Map;for(let c of e.matchAll(Ed)){let a=c.index,l=a+c[0].length;if(s.some(g=>g.from>=a&&g.to<=l))continue;let d=c.slice(1).find(g=>g!==void 0),p=s.flatMap((g,h)=>ua(Zn(o,g.ref),g.line,d)?[h]:[]);if(p.length!==1)return!1;let u=p[0];i.set(u,[...i.get(u)??[],d])}let r=!1;for(let c=0;c<s.length;c++){let a=s[c],{line:l,ref:d}=a,p=i.get(c)??[];if(p.length===0)return!1;t.some(u=>on(u,d)&&u.line===l&&p.some(g=>se(g,u.excerpt??"")!==null))&&(r=!0)}return r}function fa(e,t,n,o){if(!e?.accepted)return"No accepted check verdict is available.";let s=e.verdict;return!s.sent||s.verdict!=="keep"||s.modelVerdict!=="keep"||!s.reason.trim()||s.reason!==s.modelReason?"The check kept the finding without an accepted supporting decision.":Ad(s.evidenceFor,t,n,o)?Cd.test(s.evidenceAgainst)?null:"Contrary check evidence has not been resolved.":"The check supplied no verified supporting quote."}function ma(e){let t=e.findings.map(K),n=Yn(e.coverage,t),o=Yn(e.verdicts,t),s=new Set(e.shadowRequestedIds??(e.shadowVerdicts===void 0?[]:t)),i=Yn(e.shadowVerdicts??[],[...s]);return e.findings.map((r,c)=>{let a=t[c],l=Id(r),d=n.get(a),p=Pd(r,l,d,e.sources),u=la(r.category,e.sawCode)??p;!u&&!Rd(r,l)&&(u="The finding does not explain a concrete behavioral consequence."),u||(u=fa(o.get(a),l,d,e.sources)),!u&&s.has(a)&&(u=fa(i.get(a),l,d,e.sources)),!u&&r.sourceNotes&&(r.sourceNotes.support!=="supported"||r.sourceNotes.counterEvidence.length>0)&&(u="Source notes contain uncertain support or unresolved contrary evidence.");let g=u?"not sure":"sure";return{fingerprint:a,support:p?"incomplete":"complete",confidence:g,weak:g!=="sure"||r.severity==="low",reason:u??(r.severity==="low"?"Verified support, but low impact.":"Verified quotes and an accepted keep support the stated consequence.")}})}function _h(e,t,n){let o=e.map(n??(a=>K(a))),s=Yn(t,o),i=e.map((a,l)=>{let d=o[l],p=s.get(d),u=p?.confidence==="sure",g=u&&p?.support==="complete"&&!p.weak&&a.severity!=="low";return{finding:a,fingerprint:d,sure:u,strong:g}}).sort((a,l)=>Number(l.strong)-Number(a.strong)||da[a.finding.severity]-da[l.finding.severity]||Number(l.sure)-Number(a.sure)||(a.fingerprint<l.fingerprint?-1:a.fingerprint>l.fingerprint?1:0)),r=i.filter(a=>a.strong).slice(0,3),c=new Set(r);return{ordered:i.map(a=>a.finding),defaultIds:r.map(a=>a.fingerprint),hiddenIds:i.filter(a=>!c.has(a)).map(a=>a.fingerprint),emptyMessage:!r.length&&i.length?_d:null}}import{createHash as Md}from"node:crypto";var ha=e=>Md("sha256").update(JSON.stringify(e)).digest("hex"),eo=e=>[...new Set(e)],Fd=e=>!e.trim()||/^[\s"'“”‘’]*none found[\s."'“”‘’]*$/i.test(e);function Td(e,t,n){if(!(e>0)||!t.switches.enabled||!t.switches.secondOpinion||!t.models.secondOpinion||!t.secondOpinionProvider)return null;let o=Math.ceil(e/t.caps.secondOpinionBatchSize)*(1+t.caps.secondOpinionMaxRetries);return ie(n,{template:"second-opinion"},"Shadow finding opinion",t.models.secondOpinion,(pe(t.caps.secondOpinionInputBytes)+t.caps.checkOverheadTokens)*o,t.caps.secondOpinionOutputTokens*o)}function Nd(e){let t=[...e.skipped??[]],n=e.coreFiles.length>0&&e.coreFiles.every(i=>!i.truncated&&i.text.trim()),o=new Map(e.assessments?.map(i=>[i.fingerprint,i]));return{findings:e.findings.filter(i=>{let r=o.get(e.fingerprints?.[i.id]??""),c=e.coverage?.filter(f=>f.fingerprint===e.fingerprints?.[i.id]),a=e.citedFiles!==void 0,l=[...e.coreFiles,...e.citedFiles??[]],d=!a||c?.length===1&&c[0].coreComplete&&!c[0].claimTruncated&&!c[0].missing.length&&!c[0].truncated.length&&c[0].requested.every(f=>c[0].included.some(m=>m.repo===f.repo&&m.path===f.path)&&l.some(m=>m.repo===f.repo&&m.path===f.path&&!m.truncated)),p=n&&!i.truncated&&i.sites.length>0&&i.sites.every(f=>!f.truncated&&(a?l.some(m=>m.repo===f.repo&&m.path===f.path&&!m.truncated&&m.text.trim()):f.text.trim()))&&d&&r?.support!=="incomplete",u=e.disputedIds?.includes(i.id)??!1,g=r===void 0||r.weak||r.confidence==="not sure",h=p?!g&&!u?"Strong, uncontested finding needs no shadow check.":null:"Second opinion needs complete fetched evidence.";return h&&t.push({id:i.id,reason:h}),h===null}),skipped:t}}function Ld(e,t){return e.quote.trim()?t.some(n=>{if(n.repo!==e.repo||n.path!==e.path||n.truncated)return!1;let o=n.text.split(`
20
- `).map(a=>/^(\d+) (.*)$/.exec(a));if(o.some(a=>a===null))return!1;let s=o;if(s.some((a,l)=>l>0&&Number(a[1])!==Number(s[l-1][1])+1))return!1;let i=s.findIndex(a=>Number(a[1])===e.line);if(i<0)return!1;let r=s.slice(i).map(a=>a[2]).join(`
21
- `),c=r.indexOf(e.quote);return c>=0&&!r.slice(0,c).includes(`
22
- `)&&se(r,e.quote)===1}):!1}function jd(e,t,n){if(!e.reason.trim())return"The shadow model returned a blank reason.";if(!e.evidenceAgainst.trim()||!e.evidenceFor.trim())return"The shadow model omitted an evidence field.";let o=e.verdict==="drop"?"against":"for",s=o==="against"?e.evidenceAgainst:e.evidenceFor;if(Fd(s)||e.verdict==="drop"&&!e.decisive)return"The shadow verdict has no decisive evidence.";let i=e.quotes.filter(r=>r.side===o);return i.length===0||e.quotes.some(r=>!Ld(r,[...n,...t.sites]))||i.some(r=>!s.includes(r.quote))?"The shadow verdict lacks exact deciding quotes at the supplied file lines.":null}function Dd(e,t){return{template:"second-opinion",answerFormat:"opinion",model:t.models.secondOpinion,inputs:{checkTemplate:is(t).check,checkInput:e},limits:{maxTokens:t.caps.secondOpinionOutputTokens,thinking:"disabled"}}}async function ks(e,t,n,o){let{findings:s,skipped:i}=Nd(t),{saved:r,...c}=t,a=ha(c),l=ha(cr(o)?n:{config:n,categories:ar(o)}),d={shadowOnly:!0,done:!1,cursor:0,retries:0,inputHash:a,configHash:l,verdicts:[],diagnostics:e.tools.checkDiagnosticsText(t.diagnostics),coverage:{requestedIds:t.findings.map(O=>O.id),sentIds:[],answeredIds:[],missingIds:s.map(O=>O.id),failedIds:[],skipped:i},disagreements:[],batches:[],estimate:null},p=null;if(!n.switches.enabled||!n.switches.secondOpinion?p="Second opinion is off.":t.purpose!=="benchmark"||t.fictional!==!0?p="Second opinion is shadow-only for fictional benchmarks; customer calls are off.":(!n.models.secondOpinion||!n.secondOpinionProvider)&&(p=n.diagnostics.join(" ")||"Second opinion has no approved provider/model configuration."),p){let O=r?structuredClone(r):d;return{...O,done:!0,verdicts:[],disagreements:[],diagnostics:[...O.diagnostics,p]}}if(r&&(r.inputHash!==a||r.configHash!==l))return{...structuredClone(r),done:!0,verdicts:[],disagreements:[],diagnostics:[...r.diagnostics,"Second opinion snapshot changed or is missing; no replacement calls were made."]};let u=r?structuredClone(r):d;if(u.done)return u;if(u.cursor>=s.length)return{...u,done:!0};if(!e.available)return{...u,done:!0,diagnostics:[...u.diagnostics,"Second opinion provider is unavailable."]};if(!_t(t.findings,eo(t.findings.map(O=>O.id))))return{...u,done:!0,diagnostics:[...u.diagnostics,"Second opinion input contains duplicate ids."]};let g=s.slice(u.cursor,u.cursor+n.caps.secondOpinionBatchSize),h=g.map(O=>O.id),f={...t,findings:g,diagnostics:[]};try{Ot(n,e.tools,o)}catch{return{...u,done:!0,diagnostics:[...u.diagnostics,"Second opinion prompt changed since its frozen snapshot."]}}let m=Dd(f,n),S=0,b=!1,y=n.caps.secondOpinionInputBytes,w;try{let O=await F(e,m,o,{maxInputBytes:y,onSend(v){S=v,b=!0,u.estimate=Td(g.length,n,o),u.coverage.sentIds=eo([...u.coverage.sentIds,...h])}});w=Zo.parse(O).verdicts}catch(O){if(!b){if(O instanceof xi)return{...u,done:!0,diagnostics:[...u.diagnostics,"Second opinion serialized evidence exceeds its priced input budget."]};throw O}M("second-opinion",O,_=>e.rethrow(_));let v=O instanceof Error?O.message:"Unreadable shadow response.";return u.batches.push({ids:h,attempt:u.retries+1,inputBytes:S,rawVerdicts:[],failure:v}),u.diagnostics.push(v),u.retries<n.caps.secondOpinionMaxRetries?{...u,retries:u.retries+1}:(u.coverage.failedIds=eo([...u.coverage.failedIds,...h]),{...u,done:!0})}if(u.batches.push({ids:h,attempt:u.retries+1,inputBytes:S,rawVerdicts:w}),!_t(w,h))u.diagnostics.push("Shadow verdict ids did not match this batch; every answer in the batch was rejected.");else for(let O of w){let v=g.find(x=>x.id===O.id),_=jd(O,v,[...t.coreFiles,...t.citedFiles??[]]);if(_){u.diagnostics.push(`${O.id}: ${_}`);continue}u.verdicts.push(O);let I=t.originalVerdicts?.find(x=>x.id===O.id);I&&I.verdict!==O.verdict&&u.disagreements.push({id:O.id,original:I.verdict,shadow:O.verdict,reason:O.reason})}u.coverage.answeredIds=eo(u.verdicts.map(O=>O.id)),u.coverage.missingIds=s.filter(O=>!u.coverage.answeredIds.includes(O.id)).map(O=>O.id);for(let O of h.filter(v=>!u.coverage.answeredIds.includes(v)))u.diagnostics.push(`${O}: No validated shadow verdict; the original finding is unchanged.`);let k=u.cursor+g.length;return{...u,cursor:k,retries:0,done:k>=s.length}}async function ws(e,t,n,o,s){if(s.qualityConfig?.switches.secondOpinion&&s.secondOpinion&&e?.qualityAudit){let i=s.qualityConfig,r=s.secondOpinion.saved??t.qualityAudit?.shadow,c=nt(e,e.qualityAudit.coverage,n,o,s),a={...tt(n,o,0,to(i),s.secondOpinion.llm.tools),purpose:s.secondOpinion.purpose,fictional:s.secondOpinion.fictional,coverage:c.coverage,originalVerdicts:t.verdicts,fingerprints:Object.fromEntries(n.map((d,p)=>[`f${p+1}`,K(d)])),assessments:c.assessments},l=await ks(s.secondOpinion.llm,{...a,...r?{saved:r}:{}},i,s.settings);for(;;){let d=nt(e,c.coverage,n,o,s,l);if(t={...t,qualityAudit:d},await s.onCheckpoint?.(t),l.done||s.secondOpinion.oneBatch)break;l=await ks(s.secondOpinion.llm,{...a,saved:l},i,s.settings)}}return t}function to(e){return e?.switches.fullContext?"whole-file":"legacy"}function Bd(e,t,n,o){return e.coverage?e.coverage:t.map((s,i)=>{let r=e.findings.find(u=>u.id===`f${o+i+1}`),c=[...s.site?[{repo:s.siteRepo??"",...s.site}]:[],...s.otherSites],a=[...new Map([...e.coreFiles,...c].map(u=>[JSON.stringify([u.repo,u.path]),{repo:u.repo,path:u.path}])).values()],l=[...e.coreFiles,...r?.sites??[]],d=u=>n.repos.find(g=>g.key===u.repo)?.files?.[u.path],p=u=>l.filter(g=>g.repo===u.repo&&g.path===u.path);return{fingerprint:K(s),requested:a,included:a.filter(u=>d(u)!==void 0&&p(u).length>0),missing:a.filter(u=>d(u)===void 0),truncated:a.filter(u=>{let g=d(u);return g!==void 0&&!p(u).some(h=>!h.truncated&&h.text===g.split(`
23
- `).map((f,m)=>`${m+1} ${f}`).join(`
24
- `))}),claimTruncated:r?.truncated??!0,coreComplete:e.coreFiles.length>0&&e.coreFiles.every(u=>!u.truncated)}})}function nt(e,t,n,o,s={},i){let c=[...s.qualityConfig?.switches.codeInputs?(s.codeEvidence??[]).flatMap(f=>{let m=o.repos.find(S=>S.key===f.repo)?.files??{};return ge([f.input],m).skipped.map(S=>({repo:f.repo,path:S.path}))}):[],...s.qualityConfig?.switches.enabled?s.readingSkipped??[]:[]];t=t.map(f=>({...f,truncated:[...new Map([...f.truncated,...f.requested.filter(m=>c.some(S=>S.repo===m.repo&&S.path===m.path))].map(m=>[JSON.stringify([m.repo,m.path]),m])).values()]}));let a=new Set(e.acceptedIds),l=(e.verdicts??[]).map((f,m)=>({fingerprint:K(n[m]),accepted:a.has(f.id),verdict:f})),d=i?Ze(n,i.verdicts,{sentIds:i.coverage.sentIds,skipped:i.coverage.skipped,recordAcceptance:!0}):void 0,p=new Set(d?.acceptedIds),u=d?.verdicts?.map((f,m)=>({fingerprint:K(n[m]),accepted:p.has(f.id),verdict:f})),g=i?.coverage.sentIds.map(f=>n[Number(f.slice(1))-1]).filter(Boolean).map(K),h={coverage:t,verdicts:l,assessments:ma({findings:n,sources:o,coverage:t,verdicts:l,sawCode:s.sawCode,...i?{shadowVerdicts:u??[],shadowRequestedIds:g}:{}}),...i?{shadow:i}:{}};return e.qualityAudit=h,h}var sn=class extends Error{sent;verdicts;constructor(t,n,o){super(t),this.sent=n,this.verdicts=o}};function Kd(e,t,n){let o=t?.switches.enabled;return{template:Je("check",n,t),answerFormat:"check",model:o?t.models.check:ve,inputs:{checkInput:e},limits:{maxTokens:o?Math.min(t.caps.checkOutputTokens,Le(e.findings.length)):Le(e.findings.length),effort:"medium"}}}async function qd(e,t,n,o){if(t.findings.length===0)return[];let s=!1,i,r=n?.switches.enabled,c=Kd(t,n,o);try{r&&Ot(n,e.tools,o);let a=await F(e,c,o,{maxInputBytes:ze(t.findings.length,to(n)),onSend(){s=!0}});if(i=a.verdicts,!_t(i,t.findings.map(l=>l.id)))throw new Error("verdict ids did not match this batch");return a.verdicts}catch(a){throw M(c.template,a,l=>e.rethrow(l)),new sn(a instanceof Error?a.message:"unreadable response",s,i)}}async function ga(e,t,n,o,s){if(o?.done)return o;let i=o?{...o,diagnostics:o.diagnostics??[],retries:o.retries??0}:{cursor:0,verdicts:[],diagnostics:[],retries:0,done:!1},r=s.qualityConfig,c=r?.switches.enabled,a=to(r),l=c?r.caps.checkBatchSize:j,d=o&&o.sentIds===void 0?tt(t.slice(0,i.cursor),n,0,a,e.tools):void 0,p=o?.sentIds??d?.findings.map(S=>S.id)??[],u=o?.skipped??d?.skipped??[],g=o?.rejectedBatches??[],h=o?.qualityAudit?.coverage??[],f=S=>c?nt(S,h,t,n,s):void 0;if(i.cursor>=t.length){let S=Ze(t,i.verdicts,{sentIds:p,skipped:u,rejectedBatches:g,...c?{recordAcceptance:!0}:{}}),b=f(S);return{...i,done:!0,sentIds:p,skipped:u,result:S,...b?{qualityAudit:b}:{}}}let m;try{let S=t.slice(i.cursor,i.cursor+l);if(m=tt(S,n,i.cursor,a,e.tools),c&&(h=[...new Map([...h,...Bd(m,S,n,i.cursor)].map(_=>[_.fingerprint,_])).values()]),u=[...new Map([...u,...m.skipped??[]].map(_=>[_.id,_])).values()],!e.available&&m.findings.length)throw new Error("model unavailable");let b=[...i.verdicts,...m.findings.length?await qd(e.withRetry(i.retries),m,r,s.settings):[]];p=[...new Set([...p,...m.findings.map(_=>_.id)])];let y=Math.min(t.length,i.cursor+l),w=[...new Set([...i.diagnostics,...e.tools.checkDiagnosticsText(m.diagnostics)])],k=y>=t.length,O=k?Ze(t,b,{sentIds:p,skipped:u,rejectedBatches:g,...c?{recordAcceptance:!0}:{}}):void 0;O&&(w=[...new Set([...w,...O.diagnostics??[]])],O.diagnostics=w);let v=O?f(O):c?{coverage:h,verdicts:[],assessments:[]}:void 0;return{cursor:y,verdicts:b,diagnostics:w,retries:0,done:k,sentIds:p,skipped:u,rejectedBatches:g,...O?{result:O}:{},...v?{qualityAudit:v}:{}}}catch(S){M(Je("check",s.settings,r),S,O=>e.rethrow(O));let b=S instanceof Error?S.message:"unreadable response";S instanceof sn&&S.verdicts&&m&&(g=[...g,{ids:m.findings.map(O=>O.id),verdicts:S.verdicts}]),S instanceof sn&&S.sent?p=[...new Set([...p,...m?.findings.map(O=>O.id)??[]])]:u=[...u,...m?.findings.map(O=>({id:O.id,reason:`The model was not called: ${b}`}))??[]];let y=[...i.diagnostics,...e.tools.checkDiagnosticsText(m?.diagnostics??[]),b];if(e.available&&i.retries<(c?r.caps.checkMaxRetries:z))return{...i,sentIds:p,skipped:u,rejectedBatches:g,diagnostics:y,retries:i.retries+1,...c?{qualityAudit:{coverage:h,verdicts:[],assessments:[]}}:{}};let w=Ze(t,i.verdicts,{sentIds:p,skipped:u,rejectedBatches:g,failure:nn,...c?{recordAcceptance:!0}:{}});w.diagnostics=y;let k=f(w);return{...i,sentIds:p,skipped:u,rejectedBatches:g,diagnostics:y,done:!0,result:w,...k?{qualityAudit:k}:{}}}}function Hd(e){let t=e.findingCheck?.original??[];if(!e.sourceNotes?.done)return t;let n=new Map(e.sourceNotes.findings.map(o=>[K(o),o.sourceNotes]));return t.map(o=>n.has(K(o))?{...o,sourceNotes:n.get(K(o))}:o)}function ka(e){let t=e.findingQuality,n=e.findingCheck,o=n?.state?.result;if(!t?.config.switches.enabled||!n?.original||!o||!e.sourceNotes?.done)return e;let s=Hd(e),i=nt({...o},t.coverage??[],s,{repos:e.repos??[],fragments:[]},{qualityConfig:t.config,codeEvidence:t.codeEvidence,readingSkipped:t.readingSkipped,sawCode:Et(e)},t.shadow);return{...e,findingQuality:{...t,...i}}}function wa(e,t,n){return!J(e,t).findingCheck||n.length===0?t:{...t,findingCheck:{original:n,state:{cursor:0,verdicts:[],diagnostics:[],retries:0,done:!1}}}}async function Sa(e,t,n){let o=t.findingCheck;if(!o?.state||!o.original)return null;if(o.state.done)return{data:t,done:!0};let s=t.findingQuality?.config,i;try{let r=t.repos??[],c=ne(t);i=await ga(n,o.original,{repos:r,fragments:c},o.state,{settings:e,qualityConfig:s,codeEvidence:t.findingQuality?.codeEvidence,readingSkipped:t.findingQuality?.readingSkipped,sawCode:Et(t)})}catch(r){M(Je("check",e,s),r,d=>n.rethrow(d)),de(r);let c=[...o.state.diagnostics??[],"unreadable source map"],a=Ze(o.original,o.state.verdicts,{sentIds:o.state.sentIds??[],skipped:o.state.skipped??[],rejectedBatches:o.state.rejectedBatches,failure:nn,...s?.switches.enabled?{recordAcceptance:!0}:{}});a.diagnostics=c;let l=s?.switches.enabled?nt(a,o.state.qualityAudit?.coverage??[],o.original,{repos:t.repos??[],fragments:[]},{qualityConfig:s,codeEvidence:t.findingQuality?.codeEvidence,readingSkipped:t.findingQuality?.readingSkipped,sawCode:Et(t)}):void 0;i={...o.state,diagnostics:c,done:!0,result:a,...l?{qualityAudit:l}:{}}}return{done:i.done,data:{...t,findingCheck:{...o,state:i},...t.findingQuality&&i.qualityAudit?{findingQuality:{...t.findingQuality,...i.qualityAudit}}:{},...i.result?{findingsRaw:i.result.kept,warnings:[...t.warnings??[],...i.result.warnings]}:{}}}}import{createHash as Ud}from"node:crypto";function ya(e,t,n){let o=[e,t.prompt.path,t.prompt.symbol??"",n,t.link?.callExcerpt??""];return Ud("sha256").update(o.join("\0")).digest("hex")}var Gd=200,Xd=6e3,Wd=1200,Vd=[3,4,5],no=e=>Vd.includes(e.score)&&e.prompt.chars>=Gd,zd=5;function Jd(e,t){let n=e.link,o=n?t[n.callPath]:void 0;if(!n||o===void 0)return null;let s=Math.max(0,n.callLine-1-zd);return o.split(`
25
- `).slice(s).join(`
26
- `).slice(0,Wd)}function Qd(e){let{path:t,line:n,symbol:o}=e.prompt;return o?`${t}:${n} (${o})`:`${t}:${n}`}function rn(e,t,n){let o=gt(n,t.manifest),s=Dn(t,o);return{candidate:t,fingerprint:ya(e,t,s),text:s.slice(0,Xd),usage:Jd(t,o),location:Qd(t)}}var Zd=.03,xa=ie({},{template:"judge-code-prompt"},"Check possible agents in code",A.mechanical,3e3,200).usd,Ss=3,ba=e=>e.replace(/\s+/g," ").trim(),oo=e=>Math.round(e*1e6);function ep(e){return{template:"judge-code-prompt",answerFormat:"codeJudge",model:A.mechanical,inputs:e,limits:{effort:"medium",maxTokens:200}}}async function va(e,t,n){let o=oo(n),s=await q(t,Ss,async i=>{if(!e.available)return{fingerprint:i.fingerprint,why:"unavailable"};if(o+oo(xa)>oo(Zd))return{fingerprint:i.fingerprint,why:"limit"};o+=oo(xa);try{let r=await F(e,ep({location:i.location,text:i.text,usage:i.usage,at:{path:i.candidate.prompt.path,line:i.candidate.prompt.line}}));return{fingerprint:i.fingerprint,isPrompt:r.isSystemPrompt,name:r.isSystemPrompt?ba(r.name).slice(0,40).trim():"",reason:ba(r.reason),model:A.mechanical}}catch(r){return M("judge-code-prompt",r,c=>e.rethrow(c)),{fingerprint:i.fingerprint,why:"unavailable"}}},e);return{verdicts:s.filter(i=>"isPrompt"in i),failed:s.filter(i=>"why"in i),spentUsd:o/1e6}}function It(e,t){return{...e.filenameReferences?{filenameReferences:e.filenameReferences}:{},agents:e.strong.map(n=>({candidate:n,confirmedBy:null})),possible:e.possible,rejected:[],unchecked:[],callsWithoutPrompt:e.callsWithoutPrompt,repoModelIds:e.repoModelIds,scanned:e.scanned,total:t.total,truncated:t.truncated,omitted:e.omitted??{strong:0,possible:0},notRead:e.notRead??[],notReadMore:e.notReadMore??0,...e.skippedFiles?{skippedFiles:e.skippedFiles}:{}}}function _a(e,t){let{candidates:n,files:o,repoKey:s,stored:i,flags:r}=t,c=r.scan&&r.model&&t.hasClient,a=[],l=[],d=[],p=Math.max(0,6-(t.alreadyDue??0)),u=Math.min(p,Math.max(0,Te()-t.agentCountSoFar)),g=Xt(e)&&t.page?new Set(t.page.selected):null;for(let h of n){if(g&&!g.has(T(h.prompt))){d.push(h);continue}let f=c&&no(h)?rn(s,h,o):null;!f||!f.text||i.has(f.fingerprint)?d.push(h):a.length<u?a.push(f):a.length>=p?l.push({candidate:h,fingerprint:f.fingerprint}):d.push(h)}return{due:a,overCap:l,ineligible:d}}function Ca(e,t,n){let o=new Map(t.map(r=>[r.fingerprint,r])),s=new Map(n.failed.map(r=>[r.fingerprint,r.why])),i={...It(e,n.scanInfo),possible:[]};for(let r of e.possible){let{fingerprint:c}=rn(n.repoKey,r,n.files),a=o.get(c),l=s.get(c);a?.isPrompt?i.agents.push({candidate:r,confirmedBy:{model:a.model,name:a.name}}):a?i.rejected.push({candidate:r,reason:a.reason,model:a.model}):l?i.unchecked.push({candidate:r,why:l}):i.possible.push(r)}return i}function Ea(e,t,n,o=""){let s=new Map;if(e?.enabled&&e.grouped){let c=new Map(Dr(e,t).flatMap(d=>d.keys.map(p=>[p,d.node.id]))),a=new Map,l=(d,p)=>JSON.stringify([jr(d,t),p]);for(let d of e.byRepo[t]??[]){let p=d.codeInputsJson?.step;if(!(!d.groupKey||!p))for(let u of[p.at,p.prompt].filter(g=>g!==void 0)){let g=l(u.path,u.line),h=a.get(g)??new Set;h.add(c.get(d.unitKey)),a.set(g,h)}}for(let d of n.nodes){if(d.kind!=="agent"||c.has(d.id))continue;let p=d.files.filter(h=>h.role==="system prompt"&&h.span).map(h=>({path:h.path,line:h.span.from})),u=p.length?p:d.sourceRef?[{path:d.sourceRef.path,line:d.sourceRef.line??1}]:[],g=new Set(u.flatMap(h=>[...a.get(l(h.path,h.line))??[]]));g.size&&s.set(d.id,g.size===1?[...g][0]:null)}}let i={...n,nodes:n.nodes.filter(c=>!s.has(c.id)),edges:n.edges.flatMap(c=>{let a=s.has(c.from)?s.get(c.from):c.from,l=s.has(c.to)?s.get(c.to):c.to;return a&&l&&(a!==l||c.from===c.to)?[{...c,from:a,to:l}]:[]})},r=Br(e,t,i,o);return{fragment:{...i,nodes:[...i.nodes,...r.nodes],edges:[...i.edges,...r.edges]},files:r.files,addedNodes:r.nodes}}var so=e=>e.CF_CODE_PROMPT_LOADERS!=="0";var $a=40,ro=10,Ia=/(agent|prompt|llm|model|chain|fix|plan|assist|bot|ai)/i,tp=new Set(["agent","agents","prompt","prompts","system","instructions"]);function xs(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").split(/[^a-zA-Z]+/).map(t=>t.toLowerCase()).filter(t=>t.length>=4&&!tp.has(t))}function np(e){let t=e.filter(s=>gr(s.rel)&&hr.test(s.rel.slice(0,s.rel.lastIndexOf("/"))));if(t.length<2)return;let n=new Set(t.flatMap(s=>xs(s.rel.split("/").at(-1).replace(/\.[^.]+$/,"")))),o=s=>s.some(i=>[...n].some(r=>i.startsWith(r)||r.startsWith(i)));for(let s of e){let i=s.rel.split("/"),r=i.pop().replace(/\.[^.]+$/,"");s.promptRank=$n(s.rel)?o(xs(r))?0:o(i.flatMap(xs))?1:2:2}}function op(e,t,n){let o=n?Number(Lt(t.rel))-Number(Lt(e.rel)):0;if(o)return o;let s=(e.promptRank??2)-(t.promptRank??2);if(s)return s;let i=Ia.test(e.rel)?0:1,r=Ia.test(t.rel)?0:1;if(i!==r)return i-r;let c=e.rel.split("/").length,a=t.rel.split("/").length;return c!==a?c-a:e.entry.size!==t.entry.size?e.entry.size-t.entry.size:e.entry.path<t.entry.path?-1:e.entry.path>t.entry.path?1:0}function Pa(e,t,n="",o=!1){let s=[],i=[],r=new Map(t.map(u=>[u.path,u.size]));for(let u of t){let g=W(e,u,{purpose:"code-scan",route:"github",root:n,listing:r});g.admitted||i.push({path:u.path,reason:g.reason}),(g.admitted||g.reason==="too-large")&&s.push({entry:u,rel:Pe(u.path,n),tooLarge:!g.admitted})}so(e)&&np(s),s.sort((u,g)=>op(u,g,Cn(e)));let c=[],a=[],l=0,d=0,p=!1;for(let{entry:u,tooLarge:g}of s){if(g){l+=1,o&&a.push({path:u.path,reason:"too-large"});continue}if(c.length>=Z.codeScan.files||d+u.size>Z.codeScan.bytes){p=!0,i.push({path:u.path,reason:"scan-limit"}),o&&a.push({path:u.path,reason:"scan-limit"});continue}c.push(u),d+=u.size}return{plan:c,total:s.length,skippedLarge:l,truncated:p,refused:i,...o?{skippedFiles:a}:{}}}function bs(e){return En(e,"CF_IMPORT_SCOPED_SCAN")}function io(e,t,n,o="bare"){let s=t.filter(l=>mr(e,l,n)),i=bs(e);if(!i&&!s.length)return;if(!i&&(o==="agents"||o==="prompt"))return[];let r=i?ei(e,t,n).filter(l=>!l.convention&&(!l.markerPath||l.scope.key===null&&o!=="agents"&&o!=="prompt")).flatMap(l=>l.paths):Aa(e,t,n,o)?t:[];if(!r.length&&!s.length)return r;let c=dr(n),a=new Set([...r,...s]);for(let l of t){let d=Pe(l,c);d!==null&&!d.includes("/")&&Lt(l)&&a.add(l)}return[...a]}function Ra(e,{paths:t,root:n,scanFlag:o,marker:s}){let i={scan:!1,markerToRead:null};if(!o)return i;let r=te(e,t,n);if(r.configPath&&s===null)return{scan:!1,markerToRead:r.configPath};let c=io(e,t,n,s);return c?{scan:c.length>0,markerToRead:null,scanPaths:c}:{scan:Aa(e,t,n,s),markerToRead:null}}function Aa(e,t,n,o){let s=te(e,t,n);return Nt({usage:"scan",codeAgentsFound:!1,otherDefinitions:ht(s)},e)!=="prompt"&&!Nn(e,s)&&o!=="agents"&&o!=="prompt"}function ot(e,t){if(t.phase==="read"){let r=pi(t.text??"");if(t.pending.scanPaths){let c=yt(t.text??"").config,a=t.pending.markerPath.split("/").slice(0,-1).join("/"),l=new Set(c?ui(e,c,a):[]),d=r==="bare"?t.pending.scanPaths:(t.pending.scanPathsIfExplicit??[]).filter(p=>!l.has(p));return{kind:"settled",markerPath:t.pending.markerPath,markerKind:r,scan:d.length>0,scanPaths:d}}return{kind:"settled",markerPath:t.pending.markerPath,markerKind:r,scan:t.pending.scanIfBare&&r==="bare"}}let{paths:n,root:o,scanFlag:s}=t,i=Ra(e,{paths:n,root:o,scanFlag:s,marker:null});if(!s)return{kind:"off"};if(i.markerToRead){let r=Ra(e,{paths:n,root:o,scanFlag:s,marker:"bare"});return{kind:"marker",markerPath:i.markerToRead,scanIfBare:r.scan,...r.scanPaths?{scanPaths:r.scanPaths,scanPathsIfExplicit:io(e,n,o,"agents")}:{}}}return{kind:"settled",markerPath:null,markerKind:null,scan:i.scan,...i.scanPaths?{scanPaths:i.scanPaths}:{}}}function ao(e,t,n="",o=!1,s){return sp(e,t,n,o,s).state}function sp(e,t,n="",o=!1,s=io(e,t.map(i=>i.path),n)){let i=Cn(e),r=so(e),c=s&&new Set(s),{plan:a,total:l,skippedLarge:d,truncated:p,skippedFiles:u,refused:g}=Pa(e,c?t.filter(f=>c.has(f.path)):t,n,o),h=Er(e,a.map(f=>f.path),n);return{state:{plan:a,cursor:0,hits:[],total:l,skippedLarge:d,truncated:p,...u?{skippedFiles:u}:{},...i?{sdk:{layouts:!0}}:{},...$r(e)?{}:{promptFunctions:!1},...r?{}:{promptLoaders:!1},...En(e)?{coverageLinks:!0}:{},...h.length?{documentedPaths:h}:{}},refused:g}}function an(e){return e.cursor>=e.plan.length}async function Ma(e,t,n={batch:$a,parallel:ro}){let o=e.plan.slice(e.cursor,e.cursor+n.batch),s=await q(o,n.parallel,t),i=e.sdk&&{...e.sdk,openaiAgents:e.sdk.openaiAgents===!0||o.some((l,d)=>s[d]!==null&&wr(l.path,s[d]))},r=o.map((l,d)=>s[d]===null?null:Ir(l.path,s[d],{sdk:i,promptFunctions:e.promptFunctions!==!1,promptLoaders:e.promptLoaders!==!1,coverageLinks:e.coverageLinks===!0,documented:e.documentedPaths?.includes(l.path)===!0})),c=r.filter(l=>l!==null),a=e.skippedFiles&&[...e.skippedFiles,...o.filter((l,d)=>r[d]===null).map(({path:l})=>({path:l,reason:"unreadable"}))];return{...e,cursor:e.cursor+o.length,hits:[...e.hits,...c],...a?{skippedFiles:a}:{},...i?{sdk:i}:{}}}function Fa(e){return{...Cr(e.hits),...e.skippedFiles?{skippedFiles:e.skippedFiles}:{}}}function mk(e){return{scanned:e.hits.length,total:e.total,truncated:e.truncated,skippedLarge:e.skippedLarge}}function Os(e,t,n,o){if(!ue(e))return null;let s=ti(e,[...o.sizes.keys()],o.root,{},o.agentConfigurations??{});return ai(e,t.map(i=>{let r=T(i.prompt),c=o.modelOverrides?.includes(r);return{id:r,scope:s.ownerOf(i.prompt.path)??s.scopes[0],ownFiles:c?me({...i,modelId:null},[],e):me(i,n,e),toolCall:qt(i)}}),{...o,scopes:s})}function st(e){return e.refused.filter(t=>t.reason!=="other-agent"&&t.reason!=="provider-transport")}var rp=24;function $t(e,t,n,o=new Map,s={files:{}}){let i=t.agentInventory??t,r=s.page??t.agentPage?.context??{commit:"",scope:s.root??""},c=hi(e,[...i.strong,...i.possible].map(h=>({id:T(h.prompt),path:h.prompt.path,bytes:n.get(h.prompt.path)??0,pool:h.tier,..."groupKey"in h&&typeof h.groupKey=="string"?{groupKey:h.groupKey}:{}})),{commit:r.commit,scope:r.scope},s.page?s.page.continuation:t.agentPage?.current,s.page?.pageSize,{strong:Z.codeAgent.importBytes,possible:Z.candidateFetch.check});if(c){let h=new Set(c.selected);t={...t,strong:i.strong.filter(f=>h.has(T(f.prompt))),possible:i.possible.filter(f=>h.has(T(f.prompt)))}}let a=ip(e,t,n,o);if(c){let h=new Set([...a.strong,...a.window].map(f=>T(f.prompt)));for(let f of[...t.strong,...t.possible]){let m=T(f.prompt);if(h.has(m))continue;let S=f.prompt.path,b=n.has(S)?a.refused.find(y=>y.path===S)?.reason??a.notRead.find(y=>y.candidate===f)?.kind??(a.skipped.includes(f)?"prompt-over-limit":"confirmation-window"):"missing";c.refusals.push({id:m,reason:b})}c.partial||=c.refusals.length>0,a.page=c}if(!ue(e))return c&&(c.estimatedInputBytes=a.paths.reduce((h,f)=>h+(n.get(f)??0),0)),a;let l=Ht(o,s.replacementBytes),d=c?[...i.strong,...i.possible]:[...t.strong,...t.possible],p=Os(e,d,t.repoModelIds,{...s,sizes:n,total:l,selectedIds:[...a.strong,...a.window].map(h=>T(h.prompt)),confirmationIds:a.window.map(h=>T(h.prompt))}),u=L(a.refused,...p.map(st)),g=[...new Set(p.flatMap(h=>h.files.map(f=>f.path)))];return c&&(c.estimatedInputBytes=g.reduce((h,f)=>h+(n.get(f)??0),0)),{...a,paths:g,manifests:p,refused:u,skippedFiles:L(a.skippedFiles,...p.map(st))}}var Ta=(e,t,n,o=new Map)=>$t(e,t,n,o).paths;function ip(e,t,n,o){let s=Ht(o);if(Xt(e))for(let m of t.strong)We(e,{ownPaths:[m.prompt.path]},{files:{},sizes:n,total:s});let i=[],r=[],c=[],a=[],l=[],d=[],p=0,u=m=>{d.length<10?d.push(m):p++},g=m=>{for(let S of m)i.includes(S)||i.push(S)};for(let m of t.strong){if(!Xt(e)&&r.length>=Te())break;let S=n.get(m.prompt.path),b=W(e,{path:m.prompt.path,size:S},{purpose:"pointer",route:"github"});if(b.admitted||l.push({path:m.prompt.path,reason:b.reason}),!b.admitted&&b.reason!=="too-large"){c.push(m);continue}let y=S===void 0||!b.admitted;if(y||!s.chosen.has(m.prompt.path)&&S>s.left){c.push(m),a.push({path:m.prompt.path,reason:S===void 0?"missing":y?"too-large":"total"}),u({candidate:m,path:m.prompt.path,kind:y?"prompt-too-large":"prompt-over-limit"});continue}let w=me(m,t.repoModelIds,e).map(({path:O})=>O),k=We(e,{ownPaths:w},{files:{},sizes:n,total:s});l.push(...k.refused),r.push(m),g(k.paths),a.push(...k.skipped),k.skipped.forEach(({path:O})=>u({candidate:m,path:O,kind:"extra"}))}let h=Z.candidateFetch.check,f=t.possible.filter(no).slice(0,rp).filter(m=>{let S=me(m,t.repoModelIds,e).map(({path:_})=>_),b=S.filter(_=>!s.chosen.has(_)),y=n.get(m.prompt.path),w=W(e,{path:m.prompt.path,size:y},{purpose:"pointer",route:"github"});if(w.admitted||l.push({path:m.prompt.path,reason:w.reason}),y===void 0||!w.admitted||!s.chosen.has(m.prompt.path)&&y>h)return!1;let k=new Set(s.chosen),O=We(e,{ownPaths:S},{files:{},sizes:n,total:{left:Math.min(h,s.left),chosen:s.chosen}});if(l.push(...O.refused),!O.paths.includes(m.prompt.path))return!1;let v=b.filter(_=>!k.has(_)&&O.paths.includes(_)).reduce((_,I)=>_+n.get(I),0);return h-=v,s.left-=v,g(O.paths),!0});return{paths:i,strong:r,window:f,notRead:d,notReadMore:p,skipped:c,skippedFiles:a,refused:L(l)}}var ap=10,cp=2e5;function lp(e,t,n,o){let s=new Set($t(e,t,n,o).window),i=[],r=0;for(let[c,a]of t.possible.entries())if(!(c>=ap&&!s.has(a))){if(r+=JSON.stringify(a).length+1,r>cp)break;i.push(a)}return i}var Na=1,La=2;function ja(e,t,n,o=new Map){let s=Te()+10,i=t.omitted??{strong:0,possible:0},r=$t(e,t,n,o);if(r.page){let p=t.agentInventory??{strong:t.strong,possible:t.possible};return{...t,agentInventory:p,agentPage:r.page,strong:r.strong,possible:r.window,callsWithoutPrompt:t.callsWithoutPrompt.slice(0,Na),repoModelIds:t.repoModelIds.slice(0,La),omitted:{strong:p.strong.length-r.strong.length,possible:p.possible.length-r.window.length},skippedFiles:L(t.skippedFiles,r.skippedFiles),notRead:r.notRead,notReadMore:r.notReadMore}}let c=new Set(r.skipped),a=t.notRead!==void 0,l=t.strong.filter(p=>!c.has(p)),d=lp(e,t,n,o);return{...t,strong:l.slice(0,s),possible:d,callsWithoutPrompt:t.callsWithoutPrompt.slice(0,Na),repoModelIds:t.repoModelIds.slice(0,La),omitted:{strong:i.strong+Math.max(0,l.length-s),possible:i.possible+Math.max(0,t.possible.length-d.length)},...!a||t.skippedFiles?{skippedFiles:L(t.skippedFiles,a?[]:r.skippedFiles)}:{},notRead:a?t.notRead:r.notRead,notReadMore:a?t.notReadMore??0:r.notReadMore}}var Da=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",Ba=e=>new Map(e.map(t=>[t.path,t.size])),dp=(e,t,n=new Map)=>ja(e,Fa(t),Ba(t.plan),n),Ka=e=>e.strong.length===0&&e.possible.length===0;function qa(e,t){let{paths:n,entries:o,root:s,scanFlag:i,modelReader:r,recordSkips:c=!1}=t,a=ot(e,{phase:"start",paths:n,root:s,scanFlag:i});if(a.kind==="marker"){let l=a.scanIfBare,d=l?ao(e,o,s,c,a.scanPaths):void 0;return d&&a.scanPaths&&(d.markerDecision=a,d.explicitMarkerScan=ao(e,o,s,c,a.scanPathsIfExplicit??[])),{kind:"marker",markerPath:a.markerPath,scanNeeded:l,...d?{scan:d}:{}}}return a.kind==="off"||!a.scan?{kind:"none"}:{kind:"scan",...co(e,{scan:ao(e,o,s,c,a.scanPaths)},r)}}function Ha(e,t,n){return{scan:{...t,hits:[]},ranked:dp(e,t,n.alreadyRead)}}async function Ua(e,t,n,o){let s=await Ma(t,n,o.size);if(!an(s))return{scan:s,selection:null};let{scan:i,ranked:r}=Ha(e,s,o);return{scan:i,selection:{ranked:r,paths:Ta(e,r,Ba(s.plan),o.alreadyRead),refused:s.refused??[]}}}function co(e,t,n=!1){let{scan:o}=t;return!o||!an(o)||t.ranked?t:{...t,...Ha(e,o,{modelReader:n,alreadyRead:new Map})}}function Ga(e,t,n,o){let s=new Map(n.map(a=>[a.path,a])),i=new Set(o),r=[],c=[];for(let a of t){let l=s.get(a);if(!l||i.has(a))continue;i.add(a);let d=W(e,l,{purpose:"pointer",route:"github"});d.admitted?r.push(l):c.push({path:a,reason:d.reason})}return{entries:r,refused:c}}function it(e,t,n,o,s=1/0){let i=Ga(e,n,o,new Set(t.filter(p=>p.readBytes===void 0).map(p=>p.path))),r=s,c=i.entries.filter(p=>p.size>r?(i.refused.push({path:p.path,reason:"total"}),!1):(r-=p.size,!0)),a=new Map(c.map(p=>[p.path,p])),l=new Set(t.map(p=>p.path));return{selected:[...t.map(p=>a.get(p.path)??p),...c.filter(p=>!l.has(p.path))],refused:i.refused}}var Xa=20;function zk(e,t){return t==="hosted-import"?{...e,CF_IMPORT_CALLS:"0"}:e}function Wa(e,t,n,o){t.requestedPaths.push(...n);let s=it(e,t.selected,n,o);t.selected=s.selected,t.refused.push(...s.refused)}function Va(e,t,n){let o=e.hosted;if(!o)return;let s=new Set(t),i=e.selected.filter(r=>s.has(r.path));n==="code"?o.codePaths&&(o.codePaths=[...new Set([...o.codePaths,...i.map(r=>r.path)])]):o.weakCodeFallback&&(e.conventionPaths=[...new Set([...e.conventionPaths,...i.map(r=>r.path)])],o.fallback={...o.fallback,selectedPaths:[...new Set([...o.fallback.selectedPaths,...i.map(r=>r.path)])],shaByPath:{...o.fallback.shaByPath,...Object.fromEntries(i.map(r=>[r.path,r.ref]))}})}function Jk(e,t){if(t.profile==="local-analysis"&&t.ranked?.agentPage){let n=t.ranked.agentInventory??t.ranked,o=new Set([...n.strong,...n.possible].flatMap(s=>me(s,t.ranked.repoModelIds,e).map(i=>i.path)));t.conventionPaths=[...new Set([...t.conventionPaths,...t.selected.filter(s=>!o.has(s.path)).map(s=>s.path)])]}}function za(e,t){let n=new Set(e.conventionPaths);if(e.decision.kind==="settled"&&e.decision.scanPaths&&e.markerKind&&e.markerKind!=="bare")for(let s of e.selected)n.add(s.path);let o=new Map(t.map(s=>[s.path,s]));for(let s of e.selected)n.has(s.path)&&!o.has(s.path)&&o.set(s.path,s);e.selected=[...o.values()],e.cursor=0,e.hosted&&(e.hosted.codeMode=!0,e.hosted.needsExtraction=!1)}function Ja(e,t=It(e.ranked,e.scan)){return t.agents.length>0}function pp(e){return e.hosted?.weakCodeFallback&&!e.hosted.codeMode?e.hosted.fallback.selectedPaths:[]}function Qk(e,t){if(e.hosted&&(e.hosted.codePaths=t.map(s=>s.path)),!e.hosted?.weakCodeFallback||e.hosted.codeMode||Ja(e)){za(e,t);return}let n=new Map([...e.entries,...e.selected].map(s=>[s.path,s])),o=new Map(pp(e).map(s=>[s,n.get(s)]));for(let s of e.selected)o.has(s.path)||o.set(s.path,s);for(let s of t)o.has(s.path)||o.set(s.path,s);e.selected=[...o.values()],e.cursor=0}function Yk(e,t){let n=e.hosted;if(!n?.weakCodeFallback||!n.codePaths||e.markerKind&&e.markerKind!=="bare")return;let o=new Map([...e.entries,...e.selected].map(i=>[i.path,i]));Ja(e,t)?za(e,n.codePaths.map(i=>o.get(i))):(e.selected=n.fallback.selectedPaths.map(i=>o.get(i)),e.cursor=0,n.codeMode=!1,n.needsExtraction=n.fallback.needsExtraction);let s=new Set(e.selected.map(i=>i.path));e.files=Object.fromEntries(Object.entries(e.files).filter(([i])=>s.has(i)))}function fp(e,t){if(!In(e))return;let n=new Set(t.entries.map(i=>i.path)),o=Object.fromEntries(Object.entries(t.files).filter(([i])=>t.selected.some(r=>r.path===i&&r.readBytes===void 0))),s=new Set(yr(e,[...n],o));for(let[i,r]of Object.entries(t.files)){let c=W(e,{path:i,text:r},{...t.admission,purpose:"override",route:"github",root:t.root,listing:n,managedFiles:t.files});(!c.admitted||s.has(i))&&(delete t.files[i],t.refused.push({path:i,reason:c.admitted?"unreadable":c.reason}))}}function Zk(e,t,n){fp(e,t);let o=t.selected.filter(c=>t.files[c.path]!==void 0),s=new Set(o.filter(c=>c.readBytes===void 0).map(c=>c.path)),i=new Set(t.requestedPaths),r=L(t.selectionRefused.filter(c=>!i.has(c.path)),t.refused).filter(c=>!s.has(c.path));return{state:t,requestedReads:n,files:t.files,settled:o,refused:r,treeTruncated:t.treeTruncated}}function Qa(e,t,n,o,s,i){let r=t.ranked&&ue(e)?$t(e,t.ranked,o,s,{files:n,root:t.root,replacementBytes:i}):{paths:[],refused:[],manifests:[]};if(!In(e))return r;let c=new Map(s);for(let p of r.paths)o.has(p)&&c.set(p,Math.max(c.get(p)??0,o.get(p)));let a=Ht(c,i);for(let p of r.paths)a.chosen.add(p);let d=Bn(e,{files:n,listedPaths:t.entries.map(p=>p.path),root:t.root,fallbackName:"",skills:!0},{sizes:o,total:a}).agents.filter(p=>p.crewCall||p.layoutCall).flatMap(p=>p.manifest?[p.manifest]:[]);return{paths:[...new Set([...r.paths,...d.flatMap(p=>p.files.map(u=>u.path))])],refused:[...r.refused,...d.flatMap(st)],manifests:[...r.manifests??[],...d]}}async function Ya(e,t,n){t.manifestReadPaths??=t.selected.slice(0,t.cursor).filter(m=>m.readBytes===void 0).map(m=>m.path);let o=new Set(t.selected.filter(m=>m.readBytes===void 0).map(m=>m.path)),s=Object.fromEntries(Object.entries(t.files).filter(([m])=>o.has(m))),i=new Map(t.entries.map(m=>[m.path,m.size])),r=new Map(Object.entries(t.files).map(([m,S])=>[m,Buffer.byteLength(S)]));for(let[m,S]of Object.entries(s))i.set(m,Buffer.byteLength(S));let c=Qa(e,t,s,i,r),a=new Set(t.manifestReadPaths),l=c.paths.filter(m=>s[m]===void 0&&!a.has(m)),d=new Map(t.selected.filter(m=>m.readBytes!==void 0).map(m=>[m.path,m]));t.requestedPaths.push(...l.filter(m=>d.has(m))),Wa(e,t,l.filter(m=>!d.has(m)),t.entries);let p=new Set(l),u=new Map(t.entries.map(m=>[m.path,m])),g=t.selected.filter(m=>p.has(m.path)).map(m=>d.has(m.path)?u.get(m.path):m).slice(0,Xa);if(g.length){let m=await q(g,4,async k=>{let O=W(e,k,{...t.admission,purpose:"pointer",route:"github",root:t.root});return O.admitted?n(k):(t.refused.push({path:k.path,reason:O.reason}),null)});t.manifestReadPaths=[...t.manifestReadPaths,...g.map(k=>k.path)];let S=new Map(i);g.forEach((k,O)=>{m[O]!==null&&S.set(k.path,Buffer.byteLength(m[O]))});let b=new Map(g.filter((k,O)=>d.has(k.path)&&m[O]!==null).map(k=>[k.path,r.get(k.path)])),y=Qa(e,t,s,S,r,b),w=new Set(y.paths);g.forEach((k,O)=>{m[O]!==null&&(w.has(k.path)?(t.files[k.path]=m[O],t.selected=t.selected.map(v=>v.path===k.path?k:v)):t.refused.push(y.refused.find(v=>v.path===k.path)??{path:k.path,reason:"total"}))});return}let h=new Map((c.manifests??[]).map(m=>{let b=m.files.filter(y=>s[y.path]===void 0).map(y=>t.refused.find(w=>w.path===y.path)??{path:y.path,reason:"missing"});return[m.agentId,{...m,files:m.files.filter(y=>s[y.path]!==void 0),refused:[...m.refused,...b]}]})),f=m=>{let S=h.get(T(m.prompt));return S?{...m,manifest:S}:m};t.ranked&&(t.ranked={...t.ranked,strong:t.ranked.strong.map(f),possible:t.ranked.possible.map(f)}),Va(t,[...h.values()].flatMap(m=>m.files.map(S=>S.path)),"code"),t.refused.push(...[...h.values()].flatMap(st)),t.phase="done"}function Za(e,t){return`${e}: no agent found \u2014 no convention files (looked for ${Ko}) and no system prompt in code (scanned ${t.scanned} code files for prompt constants, prompt files and model calls)`}function at(e,t){switch(e.code){case"unreadable-crew":return`${e.path}: ${e.detail}`;case"duplicate-agent":return`${e.path} matches ${e.detail||"the root agent"}; the copy was left out.`;case"agent-cap":return e.detail;case"invalid-config":return"counterfact.json is present but not valid JSON; ignoring it";case"pointer-owned-by-subagent":return`${e.path} belongs to a sub-agent; ignored as the main prompt.`;case"pointer-missed":return`${t?`${t}: `:""}counterfact.json points at ${String(e.detail??e.path)}, which was not found; ignored`;case"pointer-guide":return`${t?`${t}: `:""}counterfact.json points at ${String(e.detail??e.path)}, which is a coding-assistant guide, not an agent prompt; ignored`;case"explicit-guide":return`${e.path} is a coding-assistant guide, not an agent prompt; ignored`;case"secret-file":return xr(e.path);case"claude-fallback":return`no dedicated prompt file found; used ${e.path??Do} as the system prompt`;case"no-prompt":return`no system prompt found (looked for ${Bo}); left blank`;case"orphan-skill":return`${e.path} has no matching sub-agent file; it is not attached to an agent.`;case"frontmatter":return`${e.path}: ${e.detail}`}}function ce(e,t){switch(e.code){case"unreadable-crew":return`${t}: ${at(e)}`;case"duplicate-agent":case"agent-cap":return`${t}: ${at(e)}`;case"invalid-config":return`${t}: counterfact.json is not valid JSON; ignored`;case"pointer-owned-by-subagent":return`${t}: ${at(e)}`;case"pointer-guide":return at(e,t);case"explicit-guide":return`${t}: ${at(e)}`;case"pointer-missed":return null;case"secret-file":return null;case"claude-fallback":return`${t}: no system prompt file; using ${e.path??Do}`;case"no-prompt":return e.detail==="no-conventions"?`${t}: no agent conventions found (looked for ${Ko})`:`${t}: ${e.folderAgentsFound?"the root agent has ":""}no system prompt file (looked for ${Bo})`;case"orphan-skill":return`${t}: ${at(e)}`;case"frontmatter":return xe(e.path,{nested:!0})?null:`${t}: ${at(e)}`}}import{basename as up}from"node:path";function ec(e,t,n){return n?`Instructions in ${t.filter(s=>s.role==="soul"||s.role==="knowledge").map(s=>up(s.path)).join(" and ")}.`:e?`Instructions in ${e}.`:"No system prompt file found."}import{posix as dc}from"node:path";var lo=e=>`${e.prompt.path}:${e.prompt.line}`,mp=(e,t,n)=>`${e} ${e===1?t:n}`;function po(e,t,n,o){let s=Te(),i=`${n.repoKey}: `,r=[],{kept:c}=he(e,t.agents),a=t.agents.length+t.omitted.strong;a>s&&r.push(gi({kind:"scan",found:a})),c.forEach(({candidate:u,confirmedBy:g},h)=>{g&&r.push(`${i}${o[h]}: included on ${g.model}'s reading of ${lo(u)} \u2014 the code alone was not conclusive`)}),n.reportSkippedFiles!==!1&&r.push(...yn(Sn(t),t.skippedFiles?0:t.notReadMore));let l=t.agents.length===0?t.callsWithoutPrompt[0]:void 0;l&&r.push(`${i}found model calls (${l.path}:${l.line}) but no system prompt they send \u2014 point counterfact.json "prompt" at it`);let d=[...t.rejected.map(u=>`${i}not an agent prompt, per ${u.model}: ${lo(u.candidate)} \u2014 ${u.reason}`),...t.unchecked.map(u=>{let g=u.why==="limit"?`the per-analysis limit of ${6} checks was reached`:"the model check was unavailable; the code alone was not conclusive";return`${i}possible agent prompt not checked: ${lo(u.candidate)} \u2014 ${g}`}),...t.possible.map(u=>`${i}possible agent prompt not included: ${lo(u)}${u.prompt.symbol?` (${u.prompt.symbol})`:""} \u2014 nothing in the scanned code sends it to a model`)];r.push(...d.slice(0,10));let p=Math.max(0,d.length-10)+t.omitted.possible;return p>0&&r.push(`${i}${mp(p,"more possible agent prompt is","more possible agent prompts are")} not listed here`),t.truncated&&!t.skippedFiles?.some(({reason:u})=>u==="scan-limit")&&r.push(`${i}scanned ${t.scanned} of ${t.total} code files (the ${Z.codeScan.files}-file / ${Z.codeScan.bytes/1e6} MB budget); agents defined in the rest were not looked for`),r}import{basename as oc}from"node:path";import{basename as hp}from"node:path";function Ee(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"agent"}function fo(e,t,n){let o=new Set(t);return s=>{let i=`${e}${Ee(s)}`,r=i;if(o.has(r)){let c=2;for(;o.has(`${i}-${c}`);)c++;r=`${i}-${c}`,n(s,r)}return o.add(r),r}}function tc(e,t){return e??(t?Ee(hp(t)):"agent")}var gp=new Set(["system","prompt","prompts","instruction","instructions"]);function nc(e){let t=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9]+/).filter(n=>n&&!gp.has(n.toLowerCase())).map(n=>n.toLowerCase());return t.length?t.join(" ").replace(/^./,n=>n.toUpperCase()):null}function sc(e,t){let{prompt:n,link:o}=e;if(o?.kind==="L1"&&o.shortLabel)return o.shortLabel;let s=n.symbol?nc(n.symbol):null;if(s)return s;if(o?.shortLabel)return o.shortLabel;let i=n.enclosing?nc(n.enclosing):null;return i||t||`${oc(n.path).replace(/\.[^.]*$/,"")}:${n.line}`}function rc(e,t,n){let o=t?`${Ee(oc(t))}-`:"";return fo(o,[],(s,i)=>{n.push(`${e}: two agents are named ${s}; the second is ${i}`)})}function ic(e,t,n,o){return t.map(s=>({...s,tools:s.manifest&&ue(e)?s.tools:Go({ownPaths:n[s.unitKey]??[],toolCall:s.toolCall},o).tools}))}function vs(e,t){let n=o=>e.overrides?.[t]?.[o]||(t===0?e.primaryConfig?.[o]:null)||null;return{name:n("name"),model:n("model"),description:n("description")}}function kp(e,t){return e.some(({candidate:n})=>n.prompt.start!==t.start&&n.prompt.path===t.path&&n.prompt.span.from===t.span.from&&n.prompt.symbol===t.symbol)}function wp(e,t,n){if(!t.forImport&&!t.forLocal)return n;let o=n.candidate.prompt,s=r=>r.kind==="file"?null:r.symbol??`line ${r.span.from}`,i=kp(e.agents,o);return[...t.importCandidates??[],...e.agents].find(({candidate:r})=>r.prompt.path===o.path&&r.prompt.span.from===o.span.from&&s(r.prompt)===s(o)&&(!i||r.prompt.start===o.start))??n}function ac(e,t,n){let o=[];return{agents:t.agents.flatMap(i=>{let{candidate:r}=i;if(Lo(e,r.prompt.path,r.promptSource==="marker"))return[i];let c=r.alsoLoads?.find(l=>Lo(e,l)&&Object.hasOwn(n,l));if(!c)return[];let a=kr(c,n[c]);return o.push([T(r.prompt),T(a)]),[{...i,candidate:{...r,prompt:a,manifest:void 0,alsoLoads:[r.prompt.path,...(r.alsoLoads??[]).filter(l=>l!==c)]}}]}),aliases:o}}function cn(e,t,n){return!!t&&ac(e,t,n).agents.length>0}function cc(e,t,n){let o=[],s=rc(n.repoKey,n.root,o),i=[...Sn(t)],r=[],c=new Map(Object.entries(n.files).map(([S,b])=>[S,Buffer.byteLength(b)])),{agents:a,aliases:l}=ac(e,t,n.files),{kept:d}=he(e,a),p=ue(e),u=d.map(({candidate:S},b)=>p&&!vs(n,b).model?S.manifest:void 0),g=p&&u.some(S=>!S)?Os(e,d.map(({candidate:S})=>S),t.repoModelIds,{files:n.files,sizes:c,root:n.root,agentConfigurations:n.agentConfigurations,modelOverrides:d.flatMap(({candidate:S},b)=>vs(n,b).model?[T(S.prompt)]:[])}):null,h=d.map(({candidate:S,confirmedBy:b},y)=>{let w=vs(n,y),{prompt:k,link:O}=S,v=w.name??sc(S,b?.name??null),_=s(v),I=[],x=`${n.repoKey}: ${v}: `,E=w.model?null:Xo(S,t.repoModelIds),C=w.model?{value:w.model,from:"marker",path:null,line:null}:E?{...E,from:S.modelId?"call":"only-model-in-code"}:null;E&&!S.modelId&&I.push(`${x}model ${E.value} assumed from ${E.path}:${E.line} (the only model id in the code)`);let $=w.model?me({...S,modelId:null},[],e):me(S,t.repoModelIds,e),R=u[y]??g?.[y],P=gt(n.files,R),Y=R?R.files.map(G=>$.find(zl=>zl.path===G.path)??{path:G.path,role:G.roles.includes("config")?"config":"code",label:null,...G.spans.length===1?{span:G.spans[0]}:{}}):$,U=$.map(({path:G})=>G),Ao=[...U,...n.codingGuides??[]],Ie=wp(t,n,{candidate:S,confirmedBy:b}),Mo=qt(S),wn=Ie.candidate===S?Mo:qt(Ie.candidate),Fo=R?.files.map(G=>G.path),or=R&&Fo?{paths:Fo,skipped:st(R),...Go({ownPaths:Fo,toolCall:wn},P)}:null,To=or??We(e,{ownPaths:U,toolCall:Mo},{files:n.files,sizes:c,root:n.root,guides:n.forImport?void 0:n.codingGuides}),No=or??(n.forImport&&(Ao.length!==U.length||wn!==Mo)?We(e,{ownPaths:U,toolCall:wn},{files:n.files,sizes:c,root:n.root,guides:n.codingGuides}):To),sr={paths:No.paths,skipped:No.skipped.filter(({reason:G})=>G!=="missing")};i.push(...To.skipped.filter(({reason:G})=>G!=="missing")),n.forImport&&r.push(...sr.skipped),I.push(...To.toolWarnings.map(G=>`${x}${G}`)),o.push(...I);let rr=O?`${O.callPath}:${O.callLine}`:null,Wl=rr?`, sent from ${rr}`:"",Vl=S.shape?` Answers in the shape of ${S.shape.name}.`:"";return{unitKey:_,name:v,description:w.description??`Instructions in ${k.path} (${k.symbol??`line ${k.span.from}`})${Wl}.${Vl}`,model:C,prompt:Ie.candidate.prompt,instructionText:Dn(S,P),...Ie.candidate.prompt.filledAtRunTime?{filledAtRunTime:!0}:{},sentFrom:Ie.candidate.link?`${Ie.candidate.link.callPath}:${Ie.candidate.link.callLine}`:null,confirmedBy:Ie.confirmedBy?.model??null,toolCall:wn,ownFiles:Y,reading:sr,tools:No.tools,warnings:I,...R?{manifest:R}:{}}}),f=new Map(d.map(({candidate:S},b)=>[T(S.prompt),h[b].unitKey]));for(let[S,b]of l){let y=f.get(b);y&&f.set(S,y)}for(let[S,{candidate:b}]of d.entries()){let y=(b.links??[]).flatMap(w=>{let k=f.get(w.to);return k?[{to:k,kind:w.kind}]:[]});y.length&&(h[S].links=y)}let m=L(i,r);return{agents:h,skippedFiles:m,warnings:[...o,...po(e,{...t,agents:a},{...n,reportSkippedFiles:!1},h.map(({name:S})=>S)),...n.reportSkippedFiles!==!1?yn(m,t.skippedFiles?0:t.notReadMore):[]]}}function lc(e,t,n){let o=cc(e,t,{...n,modelReader:n.modelReader??!1}),s={};return{nodes:o.agents.map(r=>{let{unitKey:c,prompt:a}=r;return s[c]=r.instructionText,{id:c,label:r.name,kind:"agent",desc:r.description,meta:r.model?.value??null,sourceRef:{path:a.path,line:a.span.from},files:[...r.ownFiles],tools:r.tools.map(({tool:l})=>ut(l.name))}}),agents:o.agents,warnings:o.warnings,instructionSpans:s,...o.skippedFiles.length?{skippedFiles:o.skippedFiles}:{}}}function uo({repoKey:e,files:t,root:n,conventions:o,nodes:s,parentId:i,candidates:r,resolved:c}){let a=s.map(g=>({...g,files:[...g.files]})),l=[],d=[];for(let g of c.notes.filter(h=>h.code==="orphan-skill")){let h=ce(g,e);h&&d.push(h)}let p=i?a.find(g=>g.id===i):a[0];if(!p)return{nodes:a,edges:l,warnings:d};let u=fo(n?`${p.id}-`:"",a.map(g=>g.id),(g,h)=>{d.push(`${e}: two sub-agents are named ${g}; the second is ${h}`)});for(let g of c.subagents){let{path:h}=g,f=g.files??g.skillPaths.map(y=>o.skillNames[y]?{role:"skill",path:y,label:o.skillNames[y]}:{role:"reference",path:y,label:o.skillRefNames[y]??null}),m=(g.files?[]:Oe(r,[h,...f.map(y=>y.path)].map(y=>t[y]??""),o.stripRoot)).map(y=>({role:"reference",path:y,label:null})),S="key"in g&&typeof g.key=="string"?g.key:void 0,b=S?a.find(y=>y.id===S):a.find(y=>y.id!==p.id&&y.sourceRef?.path===h);if(b){let y=new Set(b.files.map(w=>w.path));b.files.push(...[...f,...m].filter(w=>!y.has(w.path)))}else{for(let w of c.notes.filter(k=>k.code==="frontmatter"&&k.path===h)){let k=ce(w,e);k&&d.push(k)}b={id:S??u(g.name),label:g.name,kind:"agent",desc:g.description??`A sub-agent ${p.label} can hand work to.`,meta:g.model??null,sourceRef:{path:h,line:1},files:[...S&&f.some(w=>w.path===h&&w.role==="system prompt")?[]:[{role:"system prompt",path:h,label:null}],...f,...m],tools:(g.tools??[]).map(ut)},a.push(b)}l.push({from:p.id,to:b.id,kind:"delegates",label:null,sourceRef:{path:h,line:1}})}return{nodes:a,edges:l,warnings:d}}function uc(e,t,n){let o=Sp(e,t,n),{input:s,conventions:i}=t,r=i.agents.filter(y=>y.layoutCall);if(!r.length||o.markerAgentsFound)return o;let c=new Set((o.codeAgents??[]).filter(y=>r.some(w=>{let k=w.layoutCall;return k.path!==y.toolCall.path?!1:k.callStart!==void 0&&y.toolCall.callStart!==void 0?k.callStart===y.toolCall.callStart:k.promptPath===y.prompt.path&&k.promptStart===y.prompt.start})).map(y=>y.unitKey)),a=n(s,{...i,agents:r,notes:[]}),l=[...new Map([...o.fragment.nodes.filter(y=>!c.has(y.id)),...a.fragment.nodes].map(y=>[y.id,y])).values()],d=he(e,l.filter(y=>y.kind==="agent")),p=new Set(d.kept.map(y=>y.id)),u=l.filter(y=>y.kind!=="agent"||p.has(y.id)),g=new Set(u.map(y=>y.id)),h=[...new Map([...o.fragment.edges,...a.fragment.edges].filter(y=>g.has(y.from)&&g.has(y.to)).map(y=>[JSON.stringify(y),y])).values()],{codeAgents:f,...m}=o,S=f?.filter(y=>!c.has(y.unitKey)&&g.has(y.unitKey)),b=d.leftOut.flatMap(y=>y.sourceRef?.path?[{path:y.sourceRef.path,reason:"allowance"}]:[]);return{...m,fragment:{...o.fragment,nodes:u,edges:h},warnings:[...new Set([...o.warnings,...a.warnings])],...S?.length?{codeAgents:S}:{},...b.length?{skippedFiles:[...o.skippedFiles??[],...b]}:{}}}function Sp(e,{input:t,conventions:n},o){let s=t.code?.resolved;if(bs(e)&&(n.projection!=="code"||n.agents.some(Gt))){let r=Object.keys(t.files),c=ot(e,{phase:"start",paths:r,root:t.root,scanFlag:!0}),a=c.kind==="marker"?ot(e,{phase:"read",pending:c,text:t.files[c.markerPath]??null}):c,l=a.kind==="settled"?a.scanPaths:void 0;if(l&&l.length<r.length){let d=new Set(l),p=fc(e,{input:{...t,code:{resolved:null}},conventions:n},o),u=pc(e,t,n,p,o),g=(s?.agents??[]).filter(k=>d.has(k.candidate.prompt.path)),h=[...u.fragment.nodes.filter(k=>k.kind==="agent").map(()=>({code:null})),...g.map(k=>({code:k}))],{kept:f,leftOut:m}=he(e,h),S=f.flatMap(k=>k.code?[k.code]:[]),b=m.flatMap(k=>k.code?[{path:k.code.candidate.prompt.path,reason:"allowance"}]:[]);if(!S.length)return b.length?{...u,skippedFiles:[...u.skippedFiles??[],...b]}:u;let y=_s(e,t,te(e,l,t.root,t.listedPaths),{agents:[],notes:[]},{...s,agents:S},{}),w=new Map((y.codeAgents??[]).map(k=>[k.unitKey,`code:${T(k.prompt)}`]));return{...u,fragment:{nodes:[...u.fragment.nodes,...y.fragment.nodes.map(k=>({...k,id:w.get(k.id)??k.id}))],edges:[...u.fragment.edges,...y.fragment.edges.map(k=>({...k,from:w.get(k.from)??k.from,to:w.get(k.to)??k.to}))],warnings:[]},warnings:[...new Set([...u.warnings,...y.warnings])],...y.codeAgents?{codeAgents:[...u.codeAgents??[],...y.codeAgents.map(k=>({...k,unitKey:w.get(k.unitKey)??k.unitKey,...k.links?{links:k.links.map(O=>({...O,to:w.get(O.to)??O.to}))}:{}}))]}:{},...y.skippedFiles?.length||b.length?{skippedFiles:[...u.skippedFiles??[],...y.skippedFiles??[],...b]}:{}}}}let i=fc(e,{input:t,conventions:n},o);return n.projection==="code"?pc(e,t,n,i,o):i}function pc(e,t,n,o,s){if(!o.codeAgents?.length||!n.agentScopes)return o;let i=new Set(o.codeAgents?.map(m=>m.prompt.path)),r=new Map(n.agentScopes.map(m=>[m.key,m])),c=n.agents.filter(m=>r.has(m.key)&&di(e,m,r.get(m.key).folder,t.root??"")&&(!Gt(m)||!i.has(m.prompt.path))),a=[...o.fragment.nodes.filter(m=>m.kind==="agent").map(()=>({agent:null})),...c.map(m=>({agent:m}))],{kept:l,leftOut:d}=he(e,a),p=l.flatMap(m=>m.agent?[m.agent]:[]),u=d.flatMap(m=>m.agent?.files[0]?[{path:m.agent.files[0].path,reason:"allowance"}]:[]),g=new Set(p.map(m=>m.key)),h=n.agentScopes.filter(m=>g.has(m.key)),f=s(t,{...n,agents:p,agentScopes:h,notes:h.flatMap(m=>m.notes)});return{...o,fragment:{nodes:[...o.fragment.nodes,...f.fragment.nodes],edges:[...o.fragment.edges,...f.fragment.edges],warnings:[]},warnings:[...new Set([...o.warnings,...f.warnings])],...u.length?{skippedFiles:[...o.skippedFiles??[],...u]}:{}}}function fc(e,{input:t,conventions:n},o){let s=t.code,{repoKey:i,files:r,root:c}=t,a=te(e,Object.keys(r),c,t.listedPaths),l=a.configPath?yt(r[a.configPath]):null,d=l?.config??null,p=l?.invalid===!0,u=d?fi(d):"bare",g=[];d&&u==="bare"&&(d.prompt||d.agents?.length)&&(g=Vo(e,d,{repoKey:i,markerDir:dc.dirname(a.configPath).replace(/^\.$/,""),files:r}).warnings);let h;if(d&&u!=="bare"){let y=dc.dirname(a.configPath).replace(/^\.$/,""),w=Vo(e,d,{repoKey:i,markerDir:y,files:r});h=w.agents.length>0;let k=w.agents.filter(_=>ki(e,_.prompt.path,r,c)),O=w.agents.filter(_=>!k.includes(_)),v=k.flatMap(_=>{let I=ce({code:"pointer-owned-by-subagent",path:_.prompt.path},i);return I?[I]:[]});if(O.length>0){let _=_s(e,t,a,n,bp(O),{overrides:O.map(({name:I,model:x,description:E})=>({name:I,model:x,description:E})),configPath:a.configPath});return{..._,markerAgentsFound:h,markerWarnings:w.warnings,warnings:[...w.warnings,...v,...mc(e,t,a,O.length),..._.warnings]}}g=[...w.warnings,...v]}let{resolved:f}=s;if(!f||yp(e,a,n)||u!=="bare"){let y=o(t);return{fragment:y.fragment,warnings:[...new Set([...g,...y.warnings])],...h===void 0?{}:{markerAgentsFound:h}}}let m=cn(e,f,r);if(m){let y=xp(e,t,a,n,f,d,p);return{...y,warnings:[...new Set([...g,...y.warnings])]}}let S=Nt({agentConfiguration:n.agents.some(y=>y.prompt.kind==="fallback"),usage:"map",codeAgentsFound:m,otherDefinitions:ht(a)},e),b=a.claudePath&&S==="prompt"||a.configPath||n.agents.some(y=>Wo(y)||y.layoutCall)?o(t,n):{fragment:{nodes:[],edges:[],warnings:[]},warnings:[Za(i,f),...n.notes.filter(y=>y.code==="orphan-skill").flatMap(y=>{let w=ce(y,i);return w?[w]:[]})]};return{fragment:b.fragment,warnings:[...b.warnings,...po(e,f,{repoKey:i,modelReader:t.modelReader,reportSkippedFiles:t.reportSkippedFiles},[])]}}function yp(e,t,n){return n.projection==="code"?!1:Nn(e,t)?!0:n.agents.some(o=>Gt(o)&&Wo(o))}function mc(e,t,n,o){let s=Nt({usage:"map",codeAgentsFound:o>0,otherDefinitions:ht(n)},e);return n.claudePath&&s==="background"?[`${t.repoKey}: CLAUDE.md read as developer guidance, not an agent prompt, because agents were found in code`]:[]}function xp(e,t,n,o,s,i,r){let{repoKey:c}=t,a=s.agents.length,l=_s(e,t,n,o,s,{primaryConfig:i,configPath:i?n.configPath:null}),d=r?ce({code:"invalid-config"},c):null,p=d?[d]:[];return ht(n)||p.push(`${c}: no agent convention files; found ${a===1?"1 agent":`${a} agents`} defined in code \u2014 add counterfact.json to name them yourself`),p.push(...mc(e,t,n,a)),{...l,warnings:[...p,...l.warnings]}}function bp(e){return{agents:e.map(t=>({candidate:{promptSource:"marker",tier:"strong",score:0,prompt:t.prompt,link:null,sdk:!1,modelId:null},confirmedBy:null})),possible:[],rejected:[],unchecked:[],callsWithoutPrompt:[],repoModelIds:[],scanned:0,total:0,truncated:!1,omitted:{strong:0,possible:0},notRead:[],notReadMore:0}}function _s(e,{repoKey:t,files:n,root:o,modelReader:s,codingGuides:i,reportSkippedFiles:r,forImport:c,forLocal:a,code:l,agentConfigurations:d},p,u,g,h){let f=lc(e,g,{repoKey:t,root:o,files:n,modelReader:s,codingGuides:i,reportSkippedFiles:r,forImport:c,forLocal:a,agentConfigurations:d,...c&&l?.resolved?{importCandidates:l.resolved.agents}:{},overrides:h.overrides,primaryConfig:h.primaryConfig}),m=u.agents.find(x=>x.key===null)?.subagents??[],S=new Set(p.developerCompanionPaths),b;for(let x of f.nodes){let E=u.agents.find(P=>Gt(P)&&P.prompt.path===x.sourceRef?.path);if(!E)continue;let C=E.files.filter(P=>S.has(P.path)),$=new Set(x.files.map(P=>P.path));x.files.push(...C.filter(P=>!$.has(P.path)));let R=C.find(P=>P.role==="mcp")?.path??null;R&&x.tools.push(...Rn(e,t,n,{toolsPath:null,toolsTsPath:null,cliPath:null,mcpPath:R},f.warnings)),E.key===null&&E.subagents.some(P=>S.has(P.path))&&(b=x.id)}let y=new Set(m.map(x=>x.path)),w=new Set([...m.flatMap(x=>x.skillPaths),...u.notes.filter(x=>x.code==="orphan-skill").map(x=>x.path)]),{stripRoot:k}=p,O=new Set(f.nodes.flatMap(x=>x.files.map(E=>E.path))),v=p.scoped.filter(x=>!O.has(x)&&!y.has(x)&&!w.has(x)&&x!==h.configPath&&ft(x)).sort();for(let x of f.nodes){let E=Oe(v,[f.instructionSpans[x.id]??""],k).map(C=>({role:"reference",label:null,path:C}));x.files.push(...E)}h.configPath&&f.nodes[0]&&f.nodes[0].files.push({role:"config",label:null,path:h.configPath});let _=w.size||b!==void 0?uo({repoKey:t,files:n,root:o,conventions:p,nodes:f.nodes,parentId:b,candidates:v,resolved:{subagents:m,notes:u.notes}}):{nodes:f.nodes,edges:[],warnings:[]},I=a?ic(e,f.agents,Object.fromEntries(_.nodes.map(({id:x,files:E})=>[x,E.map(({path:C})=>C)])),n):f.agents;return{fragment:{nodes:_.nodes,edges:_.edges,warnings:[]},codeAgents:I,warnings:[...f.warnings,..._.warnings],...f.skippedFiles?{skippedFiles:f.skippedFiles}:{}}}import{basename as Op}from"node:path";function hc(e){let t=e.replace(/^local:/,"");return t.slice(t.lastIndexOf("/")+1)||t}function gc(e,t,n,o={}){if(e.ranked&&e.scan){let{total:i,truncated:r}=e.scan;return{resolved:n?Ca(e.ranked,n.verdicts,{repoKey:e.key,files:e.files??{},failed:n.failed,flags:t,scanInfo:{total:i,truncated:r}}):It(e.ranked,{total:i,truncated:r})}}let s=o.markerPolicy==="any-read"?!!e.markerPath:e.markerKind==="agents"||e.markerKind==="prompt";return t.scan&&s?{resolved:null}:void 0}function Cs(e){let t=He(e.root);return t?Op(t):hc(e.repoKey)}function mo(e,t,n=t.code&&(!t.code.resolved||cn(e,t.code.resolved,t.files))?"":Cs(t),o=t.code?.resolved?.filenameReferences){let s={...t,root:He(t.root)};pt(e)&&!s.agentConfigurations&&(s.agentConfigurations=Ln(e,s.listedPaths??Object.keys(s.files),s.root));let i=Bn(e,{files:s.files,root:s.root,fallbackName:n,skills:!0,listedPaths:s.listedPaths,agentConfigurations:s.agentConfigurations,filenameReferences:o,codeAgentsFound:cn(e,s.code?.resolved,s.files)});return i.projection==="conventions"&&delete s.code,{input:s,conventions:i}}function kc(e,t,n,o,s={}){let i={repoKey:t.key,files:qr(o.projectAgents,t.key,t.files??{}),...t.root?{root:t.root}:{},...pt(e)?{agentConfigurations:t.agentConfigurations??{}}:{},code:gc(t,n,s.checks),modelReader:o.modelReader??!1};return mo(e,i)}function ln(e,t){let n={repoKey:t.repoKey,files:t.files,...t.root?{root:t.root}:{},...pt(e)?{agentConfigurations:t.agentConfigurations??{}}:{}};return mo(e,n)}function ct(e,t){return t.input.code?uc(e,t,(n,o)=>wc(e,o?{input:n,conventions:o}:mo(e,n,Cs(n),t.input.code?.resolved?.filenameReferences))):wc(e,t)}function wc(e,{input:{repoKey:t,files:n,root:o,listedPaths:s,agentConfigurations:i},conventions:r}){if(!r.agents.length)return{fragment:{nodes:[],edges:[],warnings:[]},warnings:r.notes.flatMap(h=>{let f=ce(h,t);return f?[f]:[]})};let c=r.notes.filter(h=>h.code!=="orphan-skill"&&h.code!=="frontmatter").flatMap(h=>{let f=ce(h,t);return f?[f]:[]}),{scopes:a,ownerOf:l}=ni(e,r.scopePaths??Object.keys(n),o,{files:n,listedPaths:s,agentConfigurations:i}),d=new Map(a.map(h=>[h.folder,[]]));for(let h of Object.keys(n)){let f=l(h);f&&d.get(f.folder).push(h)}let p=r.agents.map(h=>{let f=r.agentScopes?.find(C=>C.key===h.key)??a.find(C=>C.key===h.key),m=He(f.folder),S=gt(n,h.manifest),b=te(e,d.get(f.folder).filter(C=>S[C]!==void 0),m),y=new Set(h.files.map(C=>C.path)),w=C=>C!==null&&y.has(C)?C:null,k=h.tools?.map(ut)??Rn(e,t,S,{toolsPath:w(b.toolsPath),toolsTsPath:w(b.toolsTsPath),cliPath:w(b.cliPath),mcpPath:w(b.mcpPath)},c),O=h.prompt.kind==="registry",v=h.prompt.kind==="none"||O?null:h.prompt.path,_=(h.prompt.kind==="registry"?h.prompt.path:b.configPath)??v??h.files[0]?.path??h.subagents[0]?.path,I={id:tc(h.key,o),label:h.name,kind:"agent",desc:h.description??ec(v,h.files,O),meta:h.model,sourceRef:h.layoutCall?{path:h.layoutCall.path,line:h.layoutCall.line??null}:{path:_,line:null},files:h.files,tools:k},x=new Set([...h.files.filter(C=>C.role!=="reference"||C.label!==null).map(C=>C.path),...h.subagents.flatMap(C=>[C.path,...C.skillPaths]),...r.notes.filter(C=>C.code==="orphan-skill").map(C=>C.path)]),E=b.scoped.filter(C=>!x.has(C)&&ft(C)).sort();return{resolved:h,root:m,conventions:b,agent:I,candidates:E}}),u=p.map(h=>h.agent),g=[];c.push(...r.notes.filter(h=>h.code==="orphan-skill").flatMap(h=>{let f=ce(h,t);return f?[f]:[]}));for(let{resolved:h,root:f,conventions:m,agent:S,candidates:b}of p){let y=uo({repoKey:t,files:n,root:f,conventions:m,nodes:u,parentId:S.id,candidates:b,resolved:{subagents:h.subagents,notes:r.notes.filter(w=>w.code==="frontmatter")}});u=y.nodes,g.push(...y.edges),c.push(...y.warnings)}return{fragment:{nodes:u,edges:g,warnings:[]},warnings:c}}function Sc(e){let t=e.CF_CODE_AGENTS!=="0";return{scan:t,model:t&&e.CF_CODE_AGENTS_MODEL!=="0"}}async function yc(e,t){let n=t.admission.exclusions?.length?await t.listing():void 0,o=t.config?mi(e,t.config,t.markerDir,{...t.admission,...n?{listing:new Set(n.map(l=>l.path))}:{}}):{paths:[],refused:[]},s=(l,d)=>t.refusalMode==="append"?[...l,...d]:L(l,d),i=s(t.priorRefused,o.refused),{kept:r}=he(e,o.paths),c=t.requestedMode==="kept-and-refused"?[...o.refused.map(l=>l.path),...r]:[];if(!r.length)return{refused:i,requestedPaths:c};let a=it(e,t.selected,r,n??await t.listing(),Z.candidateFetch.pointers);return i=s(i,a.refused),{selected:a.selected,refused:i,requestedPaths:c}}async function ho(e,t,n,o=[]){if(o.some(s=>s.path===e.path&&s.reason==="secret-content"))return null;try{return await t(e)}catch(s){if(!(s instanceof Pn)||s.reason!=="secret-content")throw s;return n.push({path:e.path,reason:s.reason}),null}}function go(e,t){return t.codeAgents??Sc(e)}function uy(e,t,n,o,s,i=!1){let r=pt(e)?{agentConfigurations:Ln(e,t.map(d=>d.path),o)}:{},c=[],a=t.filter(d=>{let p=W(e,d,{purpose:"pointer",route:"github"});return p.admitted||c.push({path:d.path,reason:p.reason}),p.admitted}),l=qa(e,{paths:a.map(d=>d.path),entries:t,root:o,scanFlag:s.scan,modelReader:i});if(l.kind==="marker"){let{markerPath:d,scanNeeded:p,scan:u}=l,g=a.find(f=>f.path===d),h=n.some(f=>f.path===d);return{...r,markerPath:d,refused:c,scanNeeded:p,...u?{scan:u}:{},...g&&!h?{selected:[...n,g]}:{}}}return l.kind==="scan"?{...r,scanNeeded:!0,scan:l.scan,refused:c,...l.ranked?{ranked:l.ranked}:{}}:r}function xc(e){return!!(e.root&&e.ranked&&Ka(e.ranked)&&e.plumbing===void 0)}var Es=e=>(e.listAll??e.list).call(e);async function vp(e,t,n,o){let s=t.markerPath,i=(t.selected??[]).find(h=>h.path===s);if(!i)throw new Error(`counterfact.json ${s} is not in the selection`);let r={...t.files??{}},c=[],a=r[s]??await ho(i,h=>n.read(h),c,t.refused);a!==null&&(r[s]=a);let l=ot(e,{phase:"read",pending:t.scan?.markerDecision??{kind:"marker",markerPath:s,scanIfBare:!!t.scanNeeded},text:a}),d=l.markerKind,{scan:p,...u}=t,g={...u,files:r,markerKind:d,...c.length?{refused:L(t.refused,c)}:{}};if(l.scan&&p&&!p.markerDecision)return co(e,{...g,scan:p},o);if(d!=="bare"){let{config:h}=yt(r[s]),f=await yc(e,{config:h,markerDir:Da(s),selected:t.selected??[],admission:n.admission??{},modelReader:o,priorRefused:t.refused??[],refusalMode:"merge",requestedMode:"none",listing:()=>Es(n)});g.refused=f.refused,f.selected&&(g.selected=f.selected)}if(l.scan&&p?.markerDecision){let f={...d==="bare"?p:p.explicitMarkerScan};delete f.markerDecision,delete f.explicitMarkerScan;let m=new Set(l.scanPaths),S=f.plan.filter(b=>m.has(b.path));return co(e,{...g,scan:{...f,plan:S,total:f.total-f.plan.length+S.length}},o)}return g}async function _p(e,t,n,o){let s=[],{scan:i,selection:r}=await Ua(e,t.scan,a=>ho(a,l=>n.read(l),s,t.refused),{modelReader:o,alreadyRead:new Map});if(!r)return{...t,scan:i,...s.length?{refused:L(t.refused,s)}:{}};let c=it(e,t.selected??[],r.paths,i.plan);return{...t,ranked:r.ranked,scan:i,selected:c.selected,refused:L(t.refused,s,r.refused,c.refused)}}async function Cp(e,t,n){let o=t.root,s=await Es(n),i=Pr(t.files??{},s.map(d=>d.path),o),{selected:r,refused:c}=it(e,[],i,s),a=await q(r,ro,d=>ho(d,p=>n.read(p),c,t.refused)),l=Rr(o,Object.fromEntries(r.flatMap((d,p)=>a[p]===null?[]:[[d.path,a[p]]])),e);return{...t,plumbing:l,refused:L(t.refused,c)}}async function Ep(e,t,n){let o=t.ranked?.manifestProgress,s=o?.entries??await Es(n),i={version:1,profile:"hosted-import",phase:"manifest",root:t.root??"",admission:n.admission,entries:s,selected:[...t.selected??[]],cursor:t.cursor??0,files:{...t.files},ranked:t.ranked,conventionPaths:[],selectionRefused:[],requestedPaths:[],refused:[...t.refused??[]],treeTruncated:!1,decision:{kind:"settled",markerPath:null,markerKind:null,scan:!1},...o?{manifestReadPaths:[...o.readPaths]}:{}};return await Ya(e,i,async r=>{try{return await n.read(r)}catch(c){if(!(c instanceof Pn))throw c;return i.refused.push({path:r.path,reason:c.reason}),null}}),{...t,files:i.files,selected:i.selected,cursor:i.selected.length,ranked:{...i.ranked,manifestProgress:{entries:s,readPaths:i.manifestReadPaths??[],done:i.phase==="done"}},refused:L(i.refused)}}function bc(e,t){return!!(t.ranked&&ue(e)&&!t.ranked.manifestProgress?.done)}function my(e,t){return xc(t)||bc(e,t)}async function hy(e,t,n,o=!1){if(n=br(e,n),t.markerPath&&!t.markerKind)return vp(e,t,n,o);if(t.scan&&!an(t.scan))return _p(e,t,n,o);let s=(t.cursor??0)>=(t.selected??[]).length;return s&&xc(t)?Cp(e,t,n):s&&bc(e,t)?Ep(e,t,n):null}function gy(e){return e.root&&e.plumbing?[`${e.key}: ${Ar(e.root,e.plumbing)}`]:[]}function dn(e,t,n,o=!1,s,i="",r){let c=kc(e,t,n,{modelReader:o,projectAgents:s},{checks:r}),a=ct(e,c),l=Ea(s,t.key,a.fragment,i),{fragment:d,warnings:p}=An(l.fragment,t.key);return{fragment:d,warnings:[...Kr(t.key,a.warnings,l.addedNodes),...p],...l.addedNodes.length?{virtualFiles:l.files}:{}}}var ko=e=>(e.ranked?.possible.length??0)>0;async function Oc(e,t,n){let o=[];try{o=await t?.()??[]}catch(i){n.rethrow(i)}let s=new Set((e.repos??[]).filter(ko).flatMap(i=>i.ranked.possible.map(r=>rn(i.key,r,i.files??{}).fingerprint)));return o.filter(i=>s.has(i.fingerprint))}function Ip(e,t,n,o){let s=new Set(n.map(r=>r.fingerprint)),i={due:[],overCap:[],ineligible:[]};for(let r of(t.repos??[]).filter(ko)){let c=_a(e,{candidates:r.ranked.possible,files:r.files??{},repoKey:r.key,stored:s,flags:o,modelReader:t.modelReader??!1,hasClient:!0,page:r.ranked.agentPage,agentCountSoFar:r.ranked.strong.length,alreadyDue:i.due.length});i.due.push(...c.due),i.overCap.push(...c.overCap),i.ineligible.push(...c.ineligible)}return i}function Is(e,t){let n=[...t];return e.filter(o=>{let s=n.indexOf(o);return s<0?!0:(n.splice(s,1),!1)})}function vc(e,t,n,o){let s=[...t.mapped??[]],i=[...t.warnings??[]];return(t.repos??[]).forEach((r,c)=>{if(!ko(r))return;let a=dn(e,r,n,t.modelReader??!1,t.projectAgents),l=dn(e,r,n,t.modelReader??!1,t.projectAgents,"",o);s[c]=l.fragment,i=[...Is(i,Is(a.warnings,l.warnings)),...Is(l.warnings,a.warnings)]}),{mapped:s,warnings:i}}async function _c(e,t,n){let o=go(e,t);if(t.codeChecks?.done||!(t.repos??[]).some(ko))return{data:t,pending:!1};if(!o.model){let g=await Oc(t,n.load,n.llm);return{pending:!1,data:{...t,...vc(e,t,o,{verdicts:g,failed:[]}),codeChecks:{done:!0,total:0,cursor:0,spentUsd:0,verdicts:[],failed:[],stored:[]}}}}let s=t.codeChecks??{done:!1,total:0,cursor:0,spentUsd:0,verdicts:[],failed:[],stored:await Oc(t,n.load,n.llm)},i=Ip(e,t,s.stored,o),r=i.due.slice(s.cursor,s.cursor+Ss),c=await va(n.llm,r,s.spentUsd),a=s.cursor+r.length,l=i.due.length,d=[...s.verdicts,...c.verdicts],p=[...s.failed,...c.failed];if(a<l)return{pending:!0,data:{...t,codeChecks:{done:!1,total:l,cursor:a,spentUsd:c.spentUsd,verdicts:d,failed:p,stored:s.stored}}};let u=new Set(p.map(g=>g.fingerprint));for(let{fingerprint:g}of i.overCap)u.has(g)||p.push({fingerprint:g,why:"limit"});return{pending:a>s.cursor,data:{...t,...vc(e,t,o,{verdicts:[...s.stored,...d],failed:p}),newVerdicts:d,codeChecks:{done:!0,total:l,cursor:a,spentUsd:c.spentUsd,verdicts:[],failed:[],stored:[]}}}}var Pt=A.mechanical,$s=!1,Cc=200;function Ps(e){return e.length>Cc?`${e.slice(0,Cc)}\u2026`:e}function $p(e,t,n){if(!t.length)return null;let o=[...e.site?[{repo:e.siteRepo??null,file:e.site.path,line:e.site.line,excerpt:e.excerpt}]:[],...Rs(e).map(s=>({repo:s.repo??e.siteRepo??null,file:s.path,line:s.line,excerpt:s.excerpt}))];return zn(o,n,t.flatMap(s=>s.inputs.map(i=>({repo:s.repo,unitKey:s.unitKey,input:i,files:s.files}))),t[0].agentRows)?null:"Code quotes are outside one agent's admitted source locations."}function Rs(e){return e.otherSites??[]}function Pp(e,t){if(!lr(e.category,t))return`no usable category (${JSON.stringify(e.category??null)})`;if(!e.site)return"no quoted site in the agent's files";let n=1+Rs(e).length;return $e(e.category)===2&&n<2?`${e.category} needs two quoted sites, found ${n}`:null}function Ec(e,t,n){let o={title:t.title,category:t.category??null,reason:Ps(n)};e.push(o)}function Rp(e,t,n){let o={title:t.title,category:t.category??null,reason:Ps(n)};e.push(o)}function Ap(e,t){return{template:"scope-items",answerFormat:"structureScope",model:Pt,inputs:{scopeRuleId:t.scopeRuleId??"",items:e},limits:{...t.maxTokens===void 0?{}:{maxTokens:t.maxTokens}}}}async function Ic(e,t,n){try{let o=await F(e,Ap(t,n)),s=new Map(o.verdicts.map(i=>[i.index,i]));return o.verdicts.length!==t.length||s.size!==t.length||t.some((i,r)=>!s.has(r))?null:new Map([...s].map(([i,r])=>[i,{inScope:r.inScope,reason:Ps(r.reason)}]))}catch(o){return M("scope-items",o,s=>e.rethrow(s)),null}}function Mp(e){return{category:e.category??null,path:e.site?.path??"?",title:e.title,cause:e.cause,excerpt:e.excerpt??"",otherSites:Rs(e).map(t=>({path:t.path,excerpt:t.excerpt??""}))}}function Fp(e,t,n=qn(t)){return{template:"scope-findings",answerFormat:"scope",model:t.qualityConfig?.switches.enabled?t.qualityConfig.models.scope:Pt,inputs:{codeSources:n.sources,codeFiles:n.files,items:e}}}async function Tp(e,t,n,o,s){let i=[];for(let p=0;p<n.length;p+=j)i.push(n.slice(p,p+j));let r=e.CF_PARALLEL_SCOPE_CHECK==="0"?1:o.scopeConcurrency??4,c=await q(i,r,async(p,u)=>{let g=[],h=u+1;for(let f=0;f<=z;f++)try{let m=await F(t,Fp(p,o,s),e),S=vt(m.verdicts,p.map(b=>b.id));return S.unknownIds.length&&g.push(`Scope check batch ${h}: ignored ${S.unknownIds.length} unknown verdict ids.`),S.duplicateIds.length&&g.push(`Scope check batch ${h}: ignored duplicate verdict ids for ${S.duplicateIds.join(", ")}.`),{verdicts:S.byId,diagnostics:g,ran:!0}}catch(m){M("scope-findings",m,S=>t.rethrow(S)),f===z&&g.push(`Scope check batch ${h} failed after ${f+1} attempts; its findings were kept.`)}return{verdicts:new Map,diagnostics:g,ran:!1}},t),a=new Map,l=[];for(let p of c){for(let[u,g]of p.verdicts)a.set(u,g);l.push(...p.diagnostics)}let d=n.filter(p=>!a.has(p.id)).map(p=>p.id);for(let p of d)l.push(`${p}: no verdict from the scope check; finding kept.`);return{verdicts:a,diagnostics:l,missingIds:d,ran:c.some(p=>p.ran)}}async function $c(e,t,n,o={}){let s=[],i=[],r=[],c=qn(o);for(let[d,p]of n.entries()){let u=Pp(p,e)??$p(p,c.scopes,o.graph);u?Ec(s,p,u):r.push({id:`f${d+1}`,finding:p})}if(r.length===0)return{kept:[],dropped:s,ran:!0,flagged:i};let a=await Tp(e,t,r.map(({id:d,finding:p})=>({id:d,...Mp(p)})),o,c),l=[];return r.forEach(({id:d,finding:p})=>{let u=a.verdicts.get(d);if(!u||u.inScope){l.push(p);return}$s?Ec(s,p,u.reason):(Rp(i,p,u.reason),l.push(p))}),{kept:l,dropped:s,ran:a.ran,flagged:i,...a.diagnostics.length?{diagnostics:a.diagnostics}:{},...a.missingIds.length?{missingIds:a.missingIds}:{}}}function Pc(e,t,n=new Set){if(!t)return 1;let o=e.reduce((i,r)=>i+r.size,0),s=Np(e,n);return Zi(o,s,15e4,4)}function Np(e,t=new Set){return e.filter(n=>t.has(n.path)||_r(n.path)).reduce((n,o)=>n+o.size,0)}function By(e,t){return t>1?Math.min(e,6e4):0}function ax(e,t,n){let o=ae(e).multiPass,s=n?ms(n.repos??[],De(ne(n)),o,e).passes.length:Pc([...t],o),i=Mi(e,s,us(s),_e);return{findings:i.findings,calls:[i.derive,H(e,"scope-findings","scope",Pt,Math.ceil(i.findings/j)*(z+1),_e),...i.check?[i.check]:[]]}}function As(e,t){return J(e,t).sourceNotes&&Array.isArray(t.findingsRaw)&&t.findingsRaw.length>0?"explaining_sources":"structuring"}var cx=async(e,t)=>{t.progress.assertHeld(),t.progress.signal?.throwIfAborted();let{settings:n}=e,{state:o}=e,s=await je(t),i=Se(t.model,s,t.progress.rethrow,t.progress.signal),r=await Sa(n,o,i);if(r){let y=e.execution.secondOpinion;if(r.done&&y&&o.findingQuality?.config.switches.secondOpinion){if(!o.findingCheck?.state?.done)return{set:oe(r.data),clear:[],next:"inspecting"};let w=o.findingCheck,k=o.findingQuality,O=await ws(w.state.result,w.state,w.original,{repos:o.repos??[],fragments:ne(o)},{settings:n,qualityConfig:k.config,codeEvidence:k.codeEvidence,readingSkipped:k.readingSkipped,sawCode:o.sawCode??k.sawCode,secondOpinion:{...y,oneBatch:!0,llm:Se(t.secondOpinionModel??null,s,t.progress.rethrow,t.progress.signal)},onCheckpoint:async _=>t.progress.checkpoint({findingCheck:{...w,state:_},..._.qualityAudit?{findingQuality:{...k,..._.qualityAudit}}:{}})}),v={...r.data,findingCheck:{...w,state:O},...O.qualityAudit?{findingQuality:{...k,...O.qualityAudit}}:{}};return{set:oe(v),clear:[],next:O.qualityAudit?.shadow?.done===!1?"inspecting":As(n,v)}}return{set:oe(r.data),clear:[],next:r.done?As(n,r.data):"inspecting"}}let c=await _c(n,o,{llm:i,load:t.context.loadCodeVerdicts});if(c.pending)return{set:oe(c.data),clear:[],next:"inspecting"};if(o=c.data,!t.model)throw new re("llm","llm gone mid-job");let a=ne(o),l=Ge(a),d=await aa(n,{data:o,graph:l,fragments:a,llm:i,checkpoint:t.progress.checkpoint,progress:t.progress,forLocal:e.execution.forLocal,parallel:Un(n,e.execution)});if(!d.done)return{set:oe(d.data),clear:[],next:"inspecting"};let p=Re(d.findings,Ne(o),Be(d.data),n),u=await $c(n,i,p.findings,{graph:l,qualityConfig:d.data.findingQuality?.config,codeEvidence:ra(d.data,d.plan,d.readByRepo,n),scopeConcurrency:e.execution.scopeConcurrency}),g=u.dropped.length,h=u.flagged.length,f=[...p.warnings,...d.plan.warnings];g&&f.push(`${g} finding${g===1?"":"s"} removed as out of scope`),h&&f.push(`${h} finding${h===1?"":"s"} flagged by the scope check's model pass, but kept \u2014 that verdict is not enforced`),u.ran||f.push("the scope check did not run; findings were kept unchecked");let m=ia(d.plan);m&&f.push(m),d.shadowed.length&&f.push(`${d.shadowed.length} file${d.shadowed.length===1?" was":"s were"} not analysed because another repository has a file at the same path: ${d.shadowed.map(y=>`${y.repo}:${y.path}`).join(", ")}`);let S=xn(n)?{sawCode:ca(d.readByRepo)}:{},b=wa(n,{...d.data,...S,...d.data.findingQuality?{findingQuality:{...d.data.findingQuality,...S}}:{},findingsRaw:u.kept,scopeCheck:{dropped:g,ran:u.ran,flagged:h,...u.diagnostics?.length?{diagnostics:u.diagnostics}:{}},readPaths:d.readByRepo,warnings:[...d.data.warnings??[],...f]},u.kept);return{set:oe(b),clear:[],next:b.findingCheck?.state&&!b.findingCheck.state.done?"inspecting":As(n,b)}};var Rt=A.explain,Ms=4,wo=4e4,Rc=15,At=4096,Ac=6e4;function Mc(e,t,n){let o=si(e.site?{...e.site,repo:e.siteRepo??"",excerpt:e.excerpt}:null,e.otherSites).map((l,d)=>({index:d,repo:l.repo??"",path:l.path,line:l.line,excerpt:D(l.excerpt??"",B)})),s=[],i=[],r=(l,d)=>t.repos.find(p=>p.key===l)?.files?.[d],c=l=>{if(s.some(g=>g.repo===l.repo&&g.path===l.path&&g.text===l.text))return;let d=Math.max(0,wo-Buffer.byteLength(JSON.stringify([...s,{...l,text:"",truncated:!0}]))),p=D(l.text,d);for(;p&&Buffer.byteLength(JSON.stringify(p))-2>d;)p=D(p,Math.floor(Buffer.byteLength(p)*.9));if(!p){i.push(`Source notes omitted ${l.repo}:${l.path}: context limit`);return}let u=l.truncated||p!==l.text;s.push({...l,text:p,truncated:u}),u&&i.push(`Source notes context incomplete: ${l.repo}:${l.path}`)};for(let l of o){let d=r(l.repo,l.path);if(d===void 0){i.push(`Source notes file unavailable: ${l.repo}:${l.path}`);continue}let p=l.line===null?null:l.line+l.excerpt.split(`
27
- `).length-1;c({repo:l.repo,path:l.path,...et(d,l.line,wo,Rc,p)})}let a=new Set;for(let l of o){let d=`${l.repo}
28
- ${l.path}`;if(a.has(d))continue;a.add(d);let p=r(l.repo,l.path);if(p===void 0)continue;let u=t.repos.find(g=>g.key===l.repo)?.files??{};for(let g of Qn(l.path,p,u))c({repo:l.repo,path:g,...et(u[g],null,wo)})}for(let l of tt([],t,0,"legacy",n).coreFiles)c(l);return{category:e.category??"",title:D(e.title,B/4),summary:D(e.summary??"",B/4),cause:D(e.cause,B/2),roles:Tn(e.category),sites:o,files:s,diagnostics:i}}var Fs=(e,t=140)=>{let n=e.trim().replace(/\s+/g," ");if(n.length<=t)return n;let o=n.slice(0,t-1),s=o.lastIndexOf(" ");return`${o.slice(0,s>t/2?s:o.length).trimEnd()}\u2026`};function Lp(e,t,n){let o=e.text.split(`
29
- `),s=o.findIndex(c=>c.startsWith(`${t} `));if(s<0)return!1;let r=o.slice(s).map(c=>c.replace(/^\d+ /,"")).join(`
30
- `).indexOf(n);return r>=0&&r<o[s].replace(/^\d+ /,"").length}function Fc(e,t){let n=Tn(t.category),o=new Set,s=e.sites.flatMap(a=>{let l=t.sites.find(p=>p.index===a.index),d=Fs(a.meaning);return!l||!Number.isInteger(a.index)||o.has(a.index)||!n.includes(a.role)||!d?[]:(o.add(a.index),[{index:a.index,role:a.role,meaning:d,keyPhrase:a.keyPhrase.trim()&&l.excerpt.includes(a.keyPhrase)?a.keyPhrase:""}])}),i=new Set,r=e.counterEvidence.flatMap(a=>{let l=Fs(a.meaning);if(!Number.isInteger(a.line)||a.line<1||!a.excerpt.trim()||!l)return[];if(!t.files.some(p=>p.repo===a.repo&&p.path===a.path&&Lp(p,a.line,a.excerpt)))return[];let d=JSON.stringify([a.repo,a.path,a.line,a.excerpt]);return i.has(d)?[]:(i.add(d),[{...a,meaning:l}])}).slice(0,2),c=Fs(e.supportNote,280);if(!c)throw new Error("Source notes have no support explanation");return zr.parse({sites:s,support:e.support,supportNote:c,counterEvidence:r})}import{z as jp}from"zod";function Tc(e,t,n){let o=Buffer.byteLength(JSON.stringify(e))+t.templateBytes("explain-sources")+Buffer.byteLength(JSON.stringify(jp.toJSONSchema(Ho)));if(o>Ac)throw new Error("Source notes input exceeds its priced limit");return ie(n,{template:"explain-sources"},"Explain sources",Rt,pe(o),At)}function Dp(e){return{template:"explain-sources",model:Rt,answerFormat:"sourceNotes",inputs:{content:JSON.stringify(e)},limits:{maxTokens:At,thinking:"disabled"}}}async function Bp(e,t,n,o){let s=Mc(n,o,t.tools);Tc(s,t.tools,e);let i=await F(t,Dp(s),e);return Fc(i,s)}async function Nc(e,t,n,o,s){if(s?.done)return s;let i=s??{cursor:0,findings:n.map(l=>({...l,sourceNotes:null})),failures:0,done:!1},r=i.findings.slice(i.cursor,i.cursor+Ms),c=await q(r,Ms,async l=>{try{if(!t.available)throw new Error("Source notes model unavailable");return{finding:{...l,sourceNotes:await Bp(e,t,l,o)},failed:!1}}catch(d){return M("explain-sources",d,p=>t.rethrow(p)),{finding:{...l,sourceNotes:null},failed:!0}}},t??void 0),a=Math.min(i.findings.length,i.cursor+r.length);return{cursor:a,findings:[...i.findings.slice(0,i.cursor),...c.map(l=>l.finding),...i.findings.slice(a)],failures:i.failures+c.filter(l=>l.failed).length,done:a>=i.findings.length}}async function Lc(e,t,n){if(!J(e,t).sourceNotes||t.sourceNotes?.done)return{data:t,done:!0};let o=[],s;try{let r=t.repos??[],c=Ne(t);o=Re(be(t.findingsRaw??[]),c,Be(t),e).findings;let a=ne(t);if(t.sourceNotes&&(!Array.isArray(t.sourceNotes.findings)||!Number.isInteger(t.sourceNotes.cursor)))throw new Error("Unreadable source notes checkpoint");s=await Nc(e,n,o,{repos:r,fragments:a},t.sourceNotes)}catch(r){M("explain-sources",r,u=>n.rethrow(u)),de(r);let c=t.sourceNotes,a=c&&Array.isArray(c.findings)&&Number.isInteger(c.cursor)&&c.cursor>=0&&c.cursor<=c.findings.length,l=a?c.findings:o,d=a?c.cursor:0,p=l.length||(Array.isArray(t.findingsRaw)?t.findingsRaw.length:0);s={cursor:p,findings:l.map((u,g)=>g<d?u:{...u,sourceNotes:null}),failures:(a?c.failures:0)+p-d,done:!0}}let i=[...t.warnings??[]];return s.done&&s.failures&&i.push(`Source notes unavailable for ${s.failures} finding${s.failures===1?"":"s"}; their quotes are shown without explanations.`),{done:s.done,data:{...t,sourceNotes:s,warnings:i,...s.findings.length||Array.isArray(t.findingsRaw)&&!t.findingsRaw.length?{findingsRaw:s.findings}:{}}}}function Zx(e,t){return ae(e).sourceNotes?[H(e,"explain-sources","sourceNotes",Rt,t,_e,At)]:[]}var eb=async(e,t)=>{t.progress.assertHeld(),t.progress.signal?.throwIfAborted();let n=await je(t),o=await Lc(e.settings,e.state,Se(t.model,n,t.progress.rethrow,t.progress.signal));return{next:o.done?"structuring":"explaining_sources",clear:[],set:oe(o.done?ka(o.data):o.data)}};function jc(e){let t=e.id.indexOf("#");return e.sourceRef?.repo??(t<0?null:e.id.slice(0,t))}var pn=(e,t)=>JSON.stringify([e,t]),Dc=(e,t)=>e<t?-1:e>t?1:0;function Bc(e,t=[]){let n=e.nodes.filter(r=>r.kind==="agent");if(n.some(r=>r.files===void 0&&!r.sourceRef))return null;if(!n.length)return[];let o=new Map,s=(r,c,a)=>{let l=pn(r,c),d=o.get(l);d||(d={repo:r,path:c,agents:new Set},o.set(l,d)),a.forEach(p=>d.agents.add(p))},i=new Map;for(let r of n){let c=jc(r),a=Tr(r),l=pn(c,a),d=i.get(l)??[];d.push(r.id),i.set(l,d);for(let p of r.files??[])s(c,p.path,[r.id]);r.sourceRef&&s(c,r.sourceRef.path,[r.id]),Ue(r)&&s(c,Lr(a,c),[r.id]);for(let p of r.sourcePaths??[])s(c,p,[r.id])}for(let r of e.nodes)r.kind==="tool"&&r.sourceRef&&s(jc(r),r.sourceRef.path,[]);for(let r of t){let c=i.get(pn(r.repo,r.unitKey))??[];for(let a of r.input.sources)s(r.repo,a.sourcePath,c)}return[...o.values()].map(r=>({...r,agents:[...r.agents].sort()})).sort((r,c)=>Dc(r.repo??"",c.repo??"")||Dc(r.path,c.path))}function Kc(e,t){if(e===null)return[];let n=new Set(e.map(s=>s.path)),o=new Set(e.map(s=>pn(s.repo,s.path)));return t.flatMap((s,i)=>s.sitePath?(s.siteRepo===null?n.has(s.sitePath):o.has(pn(s.siteRepo,s.sitePath)))?[]:[i]:[])}var Mt=e=>({paths:e.slice(0,2e3),omitted:Math.max(0,e.length-2e3)});function Kp(e){let t=e.map((i,r)=>({part:r+1,findings:[]})),n=Buffer.byteLength(JSON.stringify(t)),o=!1,s=0;return e.forEach((i,r)=>{let c=t[r].findings;for(let a of i){let l=Buffer.byteLength(JSON.stringify(a))+(c.length?1:0);n+l>15e4&&(o=!0),o?s+=1:(c.push(a),n+=l)}}),{rawFindings:t,rawFindingsOmitted:s}}function qc(e){let t=new Map(Object.entries(e.readByRepo).map(([s,i])=>[s,new Set(i)])),n=new Set(Object.values(e.readByRepo).flat()),o=new Map;for(let s of e.loaded??[]){let i=s.repo===null?n.has(s.path):t.get(s.repo)?.has(s.path);for(let r of s.agents){let c=o.get(r);c||(c={loaded:new Set,notRead:new Set},o.set(r,c)),c.loaded.add(s.path),i||c.notRead.add(s.path)}}return{version:1,core:Mt(e.plan?.core??[]),parts:(e.plan?.passes??[]).map(s=>({own:Mt(s.own)})),skipped:Mt(e.plan?.skipped??[]),readByRepo:Object.fromEntries(Object.entries(e.readByRepo).map(([s,i])=>[s,Mt(i)])),agents:e.graph.nodes.filter(s=>s.kind==="agent").map(s=>({id:s.id,label:s.label??s.id,loaded:Mt([...o.get(s.id)?.loaded??[]]),notRead:Mt([...o.get(s.id)?.notRead??[]])})),...Kp(e.passFindings)}}function Hc(e){return e.CF_RECALL_SIGNALS!=="0"}import{createHash as qp}from"node:crypto";function fn(e,t){return e==="finding"?Ur(t):qp("sha256").update(Ve(t)).digest("hex")}function Uc(e,t,n,o){let s=fn(e,t);return Gc({target:e,index:n,fingerprint:s},o)}function Gc(e,t){let n={status:"rejected",reason:"attachment_mismatch"};if(!Number.isInteger(e.index)||e.index<0)return n;let o=t.filter(i=>i.target===e.target&&i.index===e.index);if(!o.length)return{status:"absent"};if(o.length!==1||o[0].fingerprint!==e.fingerprint)return n;let s=Kt(o[0]);return s?{status:"accepted",wording:s}:n}function Ts(e,t){let n=new Map(t.map(c=>[c.key,c])),o=e.evidence.flatMap(c=>{let a=n.get(c.key);if(!a)return[];let l=e.positions.filter(p=>p.key===c.key),d=l.length===1&&l[0].target===c.kind?l[0]:null;return[{key:c.key,pair:a,position:d}]}),s=o.flatMap(({pair:c,position:a})=>a?[{target:a.target,index:a.index,fingerprint:a.fingerprint,headline:c.headline,ifLeft:c.ifLeft}]:[]),i=[],r=[];for(let{key:c,position:a}of o){let l=a?Gc(a,s):null;if(!a||l?.status!=="accepted"){r.push({key:c,reason:"attachment_mismatch"});continue}i.push({target:a.target,index:a.index,fingerprint:a.fingerprint,...l.wording})}return{rows:i,rejected:r}}function Xc(e,t,n,o){let s=[],i=new Set,r=0;for(let c of n){let a=`${c.target}:${c.index}`;if(i.has(a))continue;i.add(a);let l=c.target==="finding"?e[c.index]:void 0,d=c.target==="structure"?t[c.index]:void 0;if((l?Uc("finding",l,c.index,n):d?Uc("structure",d,c.index,n):null)?.status!=="accepted"){r++;continue}s.push(c)}return{rows:s,...o?{diagnostics:r?{...o,accepted:o.accepted-r,rejected:o.rejected+r,byReason:{...o.byReason,attachment_mismatch:(o.byReason.attachment_mismatch??0)+r}}:o}:{}}}function Wc({state:e,settings:t}){let n=e.repos??[],o=[],s=ne(e).map(({repoKey:b,fragment:y},w)=>{let k=Hr(y,n[w]?.files??{},b,t);return o.push(...k.warnings),{repoKey:b,fragment:k.fragment,files:k.nodes}}),i=Ge(s),{findings:r,warnings:c}=Re(be(e.findingsRaw??[]),Ne(e),Be(e),t),a=e.structuresRaw??[],l=St(t)?e.findingHeadlines:void 0,d=l?.done?l.version===2?l.rows:l.rows.map(b=>({...b,target:"finding"})):[],p=Xc(r,a,d,St(t)?l?.version===2?l.diagnostics:e.findingHeadlineDiagnostics:void 0),u=p.rows,g=e.readPaths??Object.fromEntries(n.map(b=>[b.key,Object.keys(b.files??{})])),h;if(Hc(t)){let b=Bc(i,e.findingQuality?.codeEvidence),y=e.inspectPlan?.passes.map((w,k)=>e.passResults?.[k]?.findings??e.passFindings?.[k]??[])??e.passFindings??[];h={log:qc({plan:e.inspectPlan??null,readByRepo:g,loaded:b,graph:i,passFindings:y.filter(w=>Array.isArray(w))}),unreachedIndexes:b===null?null:Kc(b,r.map(w=>({siteRepo:w.siteRepo??null,sitePath:w.site?.path??null})))}}let f=0,m=0;for(let b of n)for(let y of Object.values(b.files??{}))f++,m+=y.length;let S=Et(e);return{graph:i,model:A.generate,analyzedShaByRepo:Object.fromEntries(n.map(b=>[b.key,b.headSha??""])),sourceStats:{files:f,bytes:m,...S===void 0?{}:{sawCode:S}},...h?{recall:h}:{},warnings:[...new Set([...e.warnings??[],...o,...c])],findings:r,...u.length?{findingHeadlines:u}:{},...p.diagnostics?{findingHeadlineDiagnostics:p.diagnostics}:{},structures:a,loadModes:e.loadModes??[],structurePassFailed:e.structurePassFailed??!1,splitCheckRan:e.splitCheckRan??!1,splitPassFailed:e.splitPassFailed??!1,sourceFilesByRepo:Object.fromEntries(n.map(b=>[b.key,b.files??{}])),readPaths:g,rechecks:e.rechecks??[],recheckedChangeIds:e.recheckedChangeIds??[],newVerdicts:e.newVerdicts??[],...e.findingQuality?{findingQuality:e.findingQuality}:{}}}import{createHash as Hp}from"node:crypto";function Vc({repo:e,body:t}){let[n,...o]=t.evidence,s=t.split,i=r=>r.map(c=>({path:c.path??null,startLine:c.startLine,endLine:c.endLine}));return{kind:"structure",impact:t.kind,cause:t.cause,category:null,question:null,fixSummaries:[],site:n?{repo:e,path:n.path,line:n.line}:null,excerpt:n?.excerpt??null,otherSites:o.map(r=>({repo:e,path:r.path,line:r.line,excerpt:r.excerpt})),structure:{title:t.title,subKind:t.subKind,files:t.files.map(r=>({path:r.path,action:r.action,role:r.role,unit:r.unit,loadMode:r.loadMode,loadVia:r.loadVia,purpose:r.purpose})),segments:t.segments.map(r=>({path:r.path,startLine:r.startLine,endLine:r.endLine,to:r.to,disposition:r.disposition,into:r.into?{path:r.into.path,line:r.into.line}:null,reason:r.reason})),reorder:t.reorder?{path:t.reorder.path,startLine:t.reorder.startLine,endLine:t.reorder.endLine,steps:t.reorder.steps.map(r=>({from:r.from,reason:r.reason}))}:null,toolMoves:t.toolMoves.map(r=>({tool:r.tool,fromUnit:r.fromUnit,toUnit:r.toUnit,reason:r.reason})),split:s?{frontDoor:{job:s.frontDoor.job,skills:[...s.frontDoor.skills]},subAgents:s.subAgents.map(r=>({job:r.job,description:r.description,path:r.path,handoff:r.handoff??null,skills:r.skills.map(c=>({from:c.from,to:c.to})),tools:[...r.tools],movedKnowledge:i(r.movedKnowledge),neededKnowledge:i(r.neededKnowledge)}))}:null}}}function zc(e,t=[]){return{evidence:[...e.map((n,o)=>({key:`f${o}`,kind:"finding",impact:n.kind,structure:null,cause:n.cause,category:n.category??null,question:n.question,site:n.site?{repo:n.siteRepo,path:n.site.path,line:n.site.line}:null,excerpt:n.excerpt,otherSites:n.otherSites.map(s=>({repo:s.repo,path:s.path,line:s.line,excerpt:s.excerpt})),fixSummaries:n.fixes.flatMap(s=>typeof s.summary=="string"&&s.summary.trim()?[s.summary]:[])})),...t.map((n,o)=>({key:`s${o}`,...Vc(n)}))],positions:[...e.map((n,o)=>({key:`f${o}`,target:"finding",index:o,fingerprint:fn("finding",n)})),...t.map((n,o)=>({key:`s${o}`,target:"structure",index:o,fingerprint:fn("structure",n)}))]}}function Jc(e,t){return Hp("sha256").update(Ve({batch:e,requestIdentity:t})).digest("hex")}import{z as Gp}from"zod";function Ns(e){let t=e.trim();return/[.!?…。!?][\u0022'\u201d\u2019)\]]*$/u.test(t)?t:`${t}.`}function Qc(e,t,n){return t.kind==="structure"?`${Ns(e)} ${Ns(t.structure.title)}`:Up(e,t,n)}function Up(e,t,n){let o=e.trim();if(!Mn(t.category))return o;let s=[...t.site?[t.site]:[],...t.otherSites],i=new Map;for(let l of s){let d=i.get(l.path)??new Set;d.add(l.repo),i.set(l.path,d)}let r=new Set,c=s.flatMap(l=>{let d=JSON.stringify([l.repo,l.path]);return r.has(d)?[]:(r.add(d),[i.get(l.path).size>1&&l.repo?`${l.repo}:${l.path}`:l.path])}),a=t.question?.trim()||n.trim();return`${Ns(o)} ${a}${c.length?` (${c.join(", ")})`:""}`}var Yc=e=>e.match(/\d+(?:[.,]\d+)*/g)??[];function lt(e,t,n=0){let o={};for(let{reason:s}of t)o[s]=(o[s]??0)+1;return{version:qe,rows:[...e],rejected:[...t],diagnostics:{requested:e.length+t.length,accepted:e.length,rejected:t.length,unexpectedRows:n,byReason:o}}}function Ls(e,t){let n=ir.safeParse(e);if(!n.success)return null;let o=n.data,s=new Set(t.map(r=>r.key));for(let r of[...o.rows,...o.rejected])if(!s.delete(r.key))return null;if(s.size)return null;let i=lt(o.rows,o.rejected,o.diagnostics.unexpectedRows);return i.diagnostics.requested===t.length&&Ve(i.diagnostics)===Ve(o.diagnostics)?o:null}function So(e,t,n){let o={version:qe,rows:[],rejected:[],diagnostics:{requested:t.length,accepted:0,rejected:0,unexpectedRows:0,byReason:{}}},s=(d,p)=>{o.rejected.push({key:d,reason:p})},i=zo.safeParse(e),r=new Map,c=new Set(t.map(d=>d.key)),a=i.success?i.data.rows:[];for(let d of a)r.set(d.key,(r.get(d.key)??0)+1),c.has(d.key)||o.diagnostics.unexpectedRows++;let l=new Map(a.map(d=>[d.key,d]));for(let d of t){let p=d.key,u=l.get(p);if(!i.success){s(p,"malformed_answer");continue}if(!u){s(p,"missing_row");continue}if(r.get(p)!==1){s(p,"duplicate_key");continue}if(u.headline===null&&u.ifLeft===null){s(p,"model_declined");continue}if(!u.headline?.trim()||!u.ifLeft?.trim()){s(p,"incomplete_pair");continue}let g=Kt(u);if(!g){s(p,"invalid_wording");continue}let h=new Set([d.excerpt??"",...d.otherSites.map(m=>m.excerpt)].flatMap(Yc));if([g.headline,g.ifLeft].some(m=>Yc(m).some(S=>!h.has(S)))){s(p,"unsupported_number");continue}if(Mn(d.category)){if(!d.site||!d.excerpt?.trim()||!d.otherSites.some(m=>m.excerpt.trim())){s(p,"insufficient_question_evidence");continue}if([d.site,...d.otherSites].some(m=>!m.path.trim())||!(d.question?.trim()||n.trim())){s(p,"invalid_source");continue}}if(d.kind==="structure"&&!d.structure.title.trim()){s(p,"invalid_source");continue}let f=Qc(g.headline,d,n);if(!Kt({...g,headline:f})){s(p,"invalid_wording");continue}o.rows.push({key:p,headline:f,ifLeft:g.ifLeft})}return lt(o.rows,o.rejected,o.diagnostics.unexpectedRows)}var un=48e3;function Vb(e,t){return e?[ie(t,{template:"finding-headlines"},"Finding headlines",zt,pe(un),Jt)]:[]}async function Zc(e,t,n){let o=es(t.evidence),s=e.tools.headlinePlan(o),i=Jc(t,{prompt:e.tools.promptVersion(o.template),model:o.model,limits:o.limits,maxInputBytes:un,request:s.identity,compositionVersion:2,resultVersion:qe}),r=a=>{let l=Ts(t,a.rows);if(l.rejected.length){let d=new Set(l.rejected.map(p=>p.key));a=lt(a.rows.filter(p=>!d.has(p.key)),[...a.rejected,...l.rejected],a.diagnostics.unexpectedRows)}return{version:qe,inputHash:i,done:!0,rows:l.rows,rejected:a.rejected,diagnostics:a.diagnostics}},c=a=>r(lt([],t.evidence.map(l=>({key:l.key,reason:a}))));if(n?.done)return n.version===qe&&n.inputHash===i?n:c("stale_checkpoint");if(!t.evidence.length)return r(lt([],[]));if(!e.available)return c("model_unavailable");if(s.inputBytes>un)return c("over_input_allowance");try{let a=await F(e,o,{},{maxInputBytes:un}),l=s.relayValidated?Ls(a,t.evidence):So(a,t.evidence,s.fallbackQuestion??"");return l?r(l):c("incompatible_relay_result")}catch(a){return e.rethrow(a),c(a instanceof Ei||a instanceof Gp.ZodError?"malformed_answer":"provider_failure")}}function mO(e){return St(e)?[H(e,"finding-headlines","findingHeadlines",zt,1,_e,Jt)]:[]}var hO=async(e,t)=>{if(t.progress.assertHeld(),t.progress.signal?.throwIfAborted(),!St(e.settings))return{next:"persisting",set:{},clear:[]};let n=await je(t),o=Se(t.model,n,a=>{t.progress.signal?.throwIfAborted(),t.progress.assertHeld(),t.progress.rethrow?.(a)},t.progress.signal),{findings:s,structures:i}=Wc(e),r=zc(s,i),c=await Zc(o,r,e.state.findingHeadlines);return t.progress.signal?.throwIfAborted(),t.progress.assertHeld(),await t.progress.checkpoint({findingHeadlines:c}),{next:"persisting",set:{findingHeadlines:c},clear:[]}};function yo(e){let t=e,n=t.expectedOutcome?.trim();return{motivation:t.motivation??[],outcomes:t.outcomes??(n?[{improvement:n,measurement:""}]:[])}}import{createHash as nf}from"node:crypto";import{basename as ml}from"node:path";var js=["split_monolith","single_source","fold_patches","extract_subagent","merge_subagents","move_rule","move_tool","reorder"],Ds=["create","shrink","edit","delete"],Bs=["system prompt","soul","knowledge","skill","config","tools","mcp","template","reference","log","code"],Ks=["always","on_demand","never"],qs=["move","fold_into","remove_duplicate","remove_superseded"],Hs=["pointer","handoff","reference_update"];var Us=/^ {0,3}(`{3,}|~{3,})/,el=/^(#{1,6})\s+\S/,Gs=/^(\s*)([-*+]|\d+[.)])\s+/,Xs=/^\s*\|/;function X(e){let t=e.split(`
31
- `);return t.length>1&&t[t.length-1]===""&&t.pop(),t}function le(e,t){let n=X(t),o=[],s=(c,a,l,d=0)=>o.push({kind:c,start:a+1,end:l+1,level:d,text:n[a]}),i=0,r=Sr(t,Ut(e)?void 0:"outline");if(r){let c=r.raw.length+1;s("frontmatter",0,c),i=c+1}for(;i<n.length;){let c=n[i];if(c.trim()===""){i++;continue}let a=Us.exec(c);if(a){let u=i+1;for(;u<n.length;){let h=Us.exec(n[u]);if(h&&h[1][0]===a[1][0]&&h[1].length>=a[1].length&&!n[u].slice(h[0].length).trim())break;u++}let g=Math.min(u,n.length-1);s("fence",i,g),i=g+1;continue}let l=el.exec(c);if(l){s("heading",i,i,l[1].length),i++;continue}if(Xs.test(c)){let u=i;for(;u+1<n.length&&Xs.test(n[u+1]);)u++;s("table",i,u),i=u+1;continue}let d=Gs.exec(c);if(d){let u=d[1].length,g=i;for(;g+1<n.length&&n[g+1].trim()!==""&&!Gs.test(n[g+1])&&n[g+1].length-n[g+1].trimStart().length>u;)g++;s("list_item",i,g,u),i=g+1;continue}let p=i;for(;p+1<n.length&&n[p+1].trim()!==""&&!Us.test(n[p+1])&&!el.test(n[p+1])&&!Xs.test(n[p+1])&&!Gs.test(n[p+1]);)p++;s("paragraph",i,p),i=p+1}return o}function Xp(e){return e.kind==="frontmatter"||e.kind==="fence"||e.kind==="table"||e.kind==="list_item"}function xo(e,t,n){let o=t,s=n,i=!0;for(;i;){i=!1;for(let r of e){if(!Xp(r))continue;r.start<=s&&r.end>=o&&(r.start<o||r.end>s)&&(o=Math.min(o,r.start),s=Math.max(s,r.end),i=!0)}}return{start:o,end:s,snapped:o!==t||s!==n}}var Wp=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),tl=(e,t)=>new RegExp(`(^|[\\s\`'"(])${Wp(t)}($|[\\s\`'"),.:;])`).test(e);function Vp(e,t){let n=e.segments.map((r,c)=>({...r,index:c})),o=n.filter(r=>(r.disposition==="move"||r.disposition==="remove_superseded")&&t.has(r.to)),s=new Set([...o.filter(r=>r.disposition==="move").map(r=>r.path),...t]),i=n.filter(r=>(r.disposition==="remove_duplicate"||r.disposition==="fold_into")&&(s.has(r.path)||t.has(r.to)));return[...o,...i].sort((r,c)=>r.index-c.index)}var ol=(e,t,n)=>e.find(o=>o.path===t&&n>=o.startLine&&n<=o.endLine)??null;function Ws(e,t,n){let o=ol(e,t,n);return o?o.disposition==="move"||o.disposition==="remove_superseded"?o.to:o.into?Ws(e,o.into.path,o.into.line):o.to:t}function dt(e){return e===""||e.includes(`
32
- `)||e.includes(": ")||e.endsWith(":")||/^[\s"'[\]{}#>|*&!%@`,]/.test(e)||/\s$/.test(e)?JSON.stringify(e):e}var zp=e=>{let t=/^(#{1,6})\s+(.*)$/.exec(e);return t?t[2].trim():null};function nl(e,t,n,o,s){let i=()=>{t.lines.length&&t.lines[t.lines.length-1].trim()!==""&&(t.lines.push(""),t.prov.push("heading"))};if(n){let r=le(e,t.lines.join(`
33
- `)).filter(a=>a.kind==="heading"),c=r.findIndex(a=>zp(a.text)===n.trim());if(c>=0){let a=r[c],l=t.lines.length;for(let d=c+1;d<r.length;d++)if(r[d].level<=a.level){l=r[d].start-1;break}t.lines.splice(l,0,...o),t.prov.splice(l,0,...s);return}i(),t.lines.push(`## ${n}`,""),t.prov.push("heading","heading")}else i();t.lines.push(...o),t.prov.push(...s)}function sl(e,t){let n=new Set(t.ticked),o=Vp(t.body,n),{files:s}=t.body,i=[],r=[],c=[],a=new Map,l=f=>X(t.contents[f]??""),d=f=>({lines:l(f),prov:l(f).map((m,S)=>`${f}:${S+1}`),created:!1});for(let f of[...new Set(o.map(m=>m.path))]){let m={lines:[],prov:[],created:!1};l(f).forEach((y,w)=>{ol(o,f,w+1)||(m.lines.push(y),m.prov.push(`${f}:${w+1}`))});let S=s.find(y=>y.path===f),b=m.lines.filter(y=>y.trim()!=="").length;if(S?.action==="delete"&&b===0){c.push(f);continue}S?.action==="delete"&&i.push(`${f} keeps ${b} lines this time, so it is shrunk, not deleted`),a.set(f,m)}for(let f of o){if(f.disposition==="move")continue;let m=f.disposition==="remove_duplicate"?`duplicate_of ${f.into?.path??f.to}`:f.disposition==="remove_superseded"?`superseded_by ${f.childRef??""}`:`folded_into ${f.into?.path}:${f.into?.line}`;r.push({quote:l(f.path).slice(f.startLine-1,f.endLine).join(`
34
- `),sourcePath:f.path,sourceLine:f.startLine,reason:m,ref:f.childRef??""})}for(let f of s){if(!n.has(f.path)||f.action==="delete"||f.action==="shrink")continue;let m=a.get(f.path)??(t.contents[f.path]!=null?d(f.path):{lines:[],prov:[],created:!0});if(m.created&&f.frontmatter){let S=["---",`name: ${dt(f.frontmatter.name)}`,`description: ${dt(f.frontmatter.description)}`,...f.frontmatter.tools.length?[`tools: ${kt(e,f.frontmatter.tools)}`]:[],"---"];m.lines.push(...S),m.prov.push(...S.map(()=>"frontmatter"))}for(let S of o.filter(b=>b.to===f.path&&b.disposition==="move")){let b=l(S.path).slice(S.startLine-1,S.endLine);nl(e,m,S.heading,b,b.map((y,w)=>`${S.path}:${S.startLine+w}`))}a.set(f.path,m)}let p=new Set;for(let f of o)f.into&&(f.disposition==="fold_into"||f.disposition==="move")&&p.add(Ws(o,f.into.path,f.into.line));let u=t.body.reorder;u&&p.add(Ws(o,u.path,u.startLine));for(let f of t.childSites)p.add(f.host);for(let f of p)!a.has(f)&&t.contents[f]!=null&&a.set(f,d(f));let g=[];t.body.additions.forEach((f,m)=>{if(!a.has(f.path)&&t.contents[f.path]!=null&&a.set(f.path,d(f.path)),!a.has(f.path)){i.push(`no host found for the addition to ${f.path} (addition:${m})`);return}if(!(f.kind==="pointer"&&!t.ticked.some(S=>tl(f.text,S)))){if(f.kind==="reference_update"){g.push(m),p.add(f.path);return}nl(e,a.get(f.path),f.heading,[f.text],[`addition:${m}`])}});let h=[...p].filter(f=>a.has(f)).sort();return{outputs:[...a.entries()].sort(([f],[m])=>f.localeCompare(m)).map(([f,m])=>({path:f,content:`${m.lines.join(`
35
- `)}
36
- `,provenance:m.prov,created:m.created})),deletes:c.sort(),removals:r,modelHosts:h,pendingAdditions:g,warnings:i}}function bo(e){let t=new Set(e.subKind==="single_source"?e.segments?.filter(n=>n.disposition==="remove_duplicate").map(n=>n.path):[]);return e.files.filter(n=>n.action==="create"||n.action==="edit"||n.action==="shrink"&&t.has(n.path)).map(n=>n.path).sort()}import{basename as rl}from"node:path";var Jp=/(read|open|cat|file)/i;function Qp(e){return e.some(t=>Jp.test(`${t.name} ${t.description??""}`))}function il(e,t){if(!e)return[];let n=e.files.find(i=>i.role==="tools"),o=[];if(n)try{o=jt(t[n.path]).tools.map(i=>({name:i.name,description:i.description??null}))}catch{o=[]}let s=new Map(o.map(i=>[i.name,i]));for(let i of e.tools)i.source!=="mcp"&&(s.has(i.label)||s.set(i.label,{name:i.label}));return[...s.values()]}function Vs(e){return Qp(e)?"on_demand":"never"}function al(e,t){return t.existing?t.existing.mode:e.role==="skill"?xe(e.path,{nested:!0})?"on_demand":"never":e.role==="log"?"never":e.role!=="template"&&e.role!=="reference"?"always":t.prompt?.frontmatter?Vs(t.prompt.frontmatter.tools.map(n=>({name:n}))):Vs(il(t.node,t.files))}var Yp=/sent from (\S+:\d+)\.?\s*$/;function cl(e,t){let{repoKey:n,root:o,files:s,fragment:i}=t,r=[],c=new Set(i.edges.filter(h=>h.kind==="delegates").map(h=>h.to)),a=new Map;for(let h of i.nodes)for(let f of h.files)a.set(f.path,[...a.get(f.path)??[],{nodeId:h.id,label:h.label,role:f.role,skill:f.label,inCode:f.span!==void 0}]);let l=h=>(i.nodes.find(f=>f.id===h)?.files??[]).filter(f=>["system prompt","soul","knowledge","skill"].includes(f.role)).map(f=>f.path),d=(h,f,m=()=>!0)=>{for(let S of l(h)){let y=(s[S]??"").split(`
37
- `).findIndex(w=>w.includes(f)&&m(w));if(y>=0)return`${S}:${y+1}`}return null},p=h=>Pe(h,o)??h,u=new Map,g=[];for(let h of Object.keys(s).filter(f=>_n(f,o)).sort()){let f=a.get(h)?.[0]??null,m=f?`${n}#${f.nodeId}`:null,S={repo:n,path:h,unit:m,role:f?.role??null};if(!f){g.push({...S,mode:"never",via:"not a convention, not referenced",evidence:""});continue}switch(f.role){case"system prompt":{let b="convention";if(c.has(f.nodeId))b="sub-agent file; its parent sees only the frontmatter description";else if(f.inCode){let y=i.nodes.find(k=>k.id===f.nodeId)?.desc??"",w=Yp.exec(y)?.[1];b=w?`system prompt in code, sent from ${w}`:"system prompt in code"}g.push({...S,mode:"always",via:b,evidence:""});break}case"code":g.push({...S,mode:"never",via:"code that sends the prompt; the model never reads it",evidence:""});break;case"soul":case"knowledge":{let b=rl(h),y=d(f.nodeId,b,w=>/\b(not|never)\b.*\b(loaded|read)\b/i.test(w));g.push(y?{...S,mode:"never",via:"a line in the files says it is not loaded",evidence:y}:{...S,mode:"always",via:"Counterfact's runner appends it (src/lib/run/execute.ts:242-243)",evidence:""});break}case"tools":case"mcp":case"config":{let b=!0;try{f.role==="tools"?jt(s[h]):JSON.parse(s[h])}catch{b=!1}g.push(b?{...S,mode:"always",via:f.role==="config"?"config":"tool definitions",evidence:""}:{...S,mode:"unknown",via:"unreadable config",evidence:""});break}case"skill":{let b=wt(e,rl(h),s[h]),y=b.description??null;r.push(...(b.warnings??[]).map(w=>`${n}: ${h}: ${w}`)),g.push({...S,mode:"on_demand",via:y?`skill trigger \u2014 description: ${y}`:"skill trigger",evidence:"",evidenceKind:"skill-frontmatter"});break}default:{let b=d(f.nodeId,p(h))??(f.skill?`skill ${f.skill}`:""),y=i.nodes.find(w=>w.id===f.nodeId)??null;if(Vs(il(y,s))==="on_demand")g.push({...S,mode:"on_demand",via:"named by a file the unit loads",evidence:b});else{let w=u.get(f.nodeId)??{label:f.label,paths:[]};w.paths.push(h),u.set(f.nodeId,w),g.push({...S,mode:"never",via:"pointer, but no file-reading tool",evidence:b})}}}}for(let{label:h,paths:f}of u.values()){let m=f.length;r.push(`${n}: ${m} reference file${m===1?"":"s"} can only be reached by a pointer, and ${h} has no file-reading tool, so it can't open them; for example: ${f.slice(0,5).join(", ")}`)}return{entries:g,warnings:r}}function Oo(e,t,n){return e.find(o=>o.repo===t&&o.path===n)??null}var Zp="<!-- counterfact: proposed file -->";function Ft(e,t){return e.startsWith(`${t}#`)?e.slice(t.length+1):null}function ll(e,t,n){if(Ut(e))return li(t,n);if(!t.startsWith(`---
38
- `)){let a=n([]);return a.length?`---
39
- tools: ${a.join(", ")}
40
- ---
41
- ${t}`:t}let o=t.indexOf(`
42
- ---`,3),s=t.slice(4,o).split(`
43
- `),i=s.findIndex(a=>/^tools\s*:/i.test(a)),r=i>=0?s[i].replace(/^tools\s*:\s*/i,"").replace(/^\[|\]$/g,"").split(",").map(a=>a.trim()).filter(Boolean):[],c=n(r);return i>=0?c.length?s[i]=`tools: ${c.join(", ")}`:s.splice(i,1):c.length&&s.push(`tools: ${c.join(", ")}`),`---
44
- ${s.join(`
45
- `)}${t.slice(o)}`}function dl(e,t){let n=JSON.parse(e);return Array.isArray(n)?`${JSON.stringify(t(n),null,2)}
46
- `:`${JSON.stringify({...n,tools:t(n.tools??[])},null,2)}
47
- `}function ef(e,t){let n=e.nodes.find(o=>o.id===t);return n?n.files.find(o=>o.role==="tools")?.path??n.files.find(o=>o.role==="system prompt")?.path??null:null}function fl(e,t,n,o,s,i=[]){let r={...t};for(let c of n.files)if(c.action==="delete"&&delete r[c.path],c.action==="create"){let a=c.frontmatter?`---
48
- name: ${dt(c.frontmatter.name)}
49
- description: ${dt(c.frontmatter.description)}
50
- ${c.frontmatter.tools.length?`tools: ${kt(e,c.frontmatter.tools)}
51
- `:""}---
52
- `:"";r[c.path]=`${a}${Zp}
53
- `}for(let c of n.additions)c.kind==="reference_update"||r[c.path]==null||(r[c.path]=`${r[c.path].replace(/\n?$/,`
54
- `)}${c.text}
55
- `);for(let c of n.toolMoves){let a=tf(e,r,{tool:c.tool,fromPath:c.fromPath??hn(o,n,c.fromUnit,s),toPath:c.toPath??hn(o,n,c.toUnit,s)});a&&i.push(a)}return r}function hn(e,t,n,o){let s=Ft(n,o);return s?ef(e,s):t.files.find(i=>i.unit===n&&i.role==="system prompt")?.path??null}function tf(e,t,n){let{tool:o,fromPath:s,toPath:i}=n;if(Ut(e)){for(let r of[s,i])if(r&&t[r]!=null&&!r.endsWith(".json")&&ci(t[r]).error)return`${r}: tools could not be read; moving ${o} was skipped.`}return s&&t[s]!=null&&(t[s]=s.endsWith(".json")?dl(t[s],r=>r.filter(c=>c.name!==o)):ll(e,t[s],r=>r.filter(c=>c!==o))),i&&t[i]!=null&&(t[i]=i.endsWith(".json")?dl(t[i],r=>r.some(c=>c.name===o)?r:[...r,{...n.object??{},name:o}]):ll(e,t[i],r=>r.includes(o)?r:[...r,o])),null}function ul(e,t){let n=ct(e,ln(e,t));return An(n.fragment,t.repoKey).fragment}var pl=e=>e.files.map(t=>t.path).sort().join(`
56
- `),mn=(e,t)=>e.nodes.find(n=>n.files.some(o=>o.path===t))??null;function vo(e,t,n,o){let s=m=>`${o}#${m}`,i=new Map(e.nodes.map(m=>[m.id,m])),r=new Map(t.nodes.map(m=>[m.id,m])),c=[];for(let[m,S]of r)i.has(m)?pl(i.get(m))!==pl(S)&&c.push({id:s(m),change:"edited",label:S.label}):c.push({id:s(m),change:"added",label:S.label});for(let[m,S]of i)r.has(m)||c.push({id:s(m),change:"removed",label:S.label});let a=m=>`${m.from}>${m.to}>${m.kind}`,l=new Map(e.edges.map(m=>[a(m),m])),d=new Map(t.edges.map(m=>[a(m),m])),p=[...[...d].filter(([m])=>!l.has(m)).map(([,m])=>({from:s(m.from),to:s(m.to),kind:m.kind,change:"added",detail:null})),...[...l].filter(([m])=>!d.has(m)).map(([,m])=>({from:s(m.from),to:s(m.to),kind:m.kind,change:"removed",detail:null}))],u=(m,S)=>{let b=S?mn(t,m)??mn(e,m):mn(e,m)??mn(t,m);return b?s(b.id):""},g=n.files.map(m=>{let S=n.segments.filter(O=>O.disposition==="move"&&O.to===m.path&&O.path!==m.path),b=n.segments.filter(O=>O.path===m.path),y=u(m.path,m.action!=="delete"),w,k={};if(m.action==="delete")w="removed";else if(m.action==="create"){let O=[...new Set(S.map(I=>I.path))],v=O.length===1&&n.files.some(I=>I.path===O[0]&&I.action==="delete"),_=O.length===1?u(O[0],!1):"";v&&_&&_!==y?(w="moved",k={fromNode:_,fromPath:O[0]}):w="added"}else S.length?w="grown":n.reorder?.path===m.path?w="reordered":b.length||m.action==="shrink"?w="shrunk":w="grown";return{path:m.path,role:m.role,node:y,change:w,...k,segments:S.length}});if(n.split){let m=new Set([...n.segments.map(S=>S.path),...(n.additions??[]).map(S=>S.path)]);for(let S of m){if(g.some(y=>y.path===S))continue;let b=mn(e,S);g.push({path:S,role:b.files.find(y=>y.path===S).role,node:s(b.id),change:n.segments.some(y=>y.path===S)?"shrunk":"grown",segments:0})}}n.reorder&&!g.some(m=>m.path===n.reorder.path)&&g.push({path:n.reorder.path,role:"system prompt",node:u(n.reorder.path,!0),change:"reordered",segments:0});let h=m=>{if(Ft(m,o))return m;let b=n.files.find(y=>y.unit===m);return b?u(b.path,!0):m},f=n.toolMoves.map(m=>({label:m.tool,fromNode:h(m.fromUnit),toNode:h(m.toUnit)}));return{nodes:c,edges:p,files:g,tools:f}}var hl=["ordering","reliability","coverage","cost","safety","correctness"],gn=["low","medium","high","critical"];function zs(e,t=[]){let n=e.split?[...t,...Object.keys(e.sourceHashes??{}),...(e.additions??[]).map(o=>o.path),...e.split.subAgents.flatMap(o=>o.skills.map(s=>s.from))]:[];return[...new Set([...e.segments.map(o=>o.path),...e.files.filter(o=>e.subKind==="single_source"||o.action==="shrink"||o.action==="delete").map(o=>o.path),...n])].sort()}var Ke=(e,t)=>e.includes(t);function of(e){if(!Ke(js,e.subKind))return`sub-kind "${e.subKind}" is not one of ${js.join(", ")}`;if(!Ke(hl,e.kind))return`impact "${e.kind}" is not one of ${hl.join(", ")}`;if(e.reorders.length>1)return"more than one reorder";let t=[];for(let r of e.files){if(!Ke(Ds,r.action))return`${r.path}: action "${r.action}" is not one of ${Ds.join(", ")}`;if(!Ke(Bs,r.role))return`${r.path}: role "${r.role}" is not one of ${Bs.join(", ")}`;if(!Ke(Ks,r.loadMode))return`${r.path}: load mode "${r.loadMode}" is not one of ${Ks.join(", ")}`;let c=r.fmName||r.fmDescription||r.fmTools.length?{name:r.fmName,description:r.fmDescription,tools:r.fmTools}:null;t.push({path:r.path.trim(),action:r.action,role:r.role,unit:r.unit,loadMode:r.loadMode,loadVia:r.loadVia||null,purpose:r.purpose,frontmatter:c})}let n=[];for(let r of e.segments){if(!Ke(qs,r.disposition))return`${r.path}:${r.startLine}-${r.endLine}: disposition "${r.disposition}" is not one of ${qs.join(", ")}`;let c=r.intoPath?{path:r.intoPath.trim(),line:r.intoLine}:null,a=r.disposition==="remove_duplicate"||r.disposition==="fold_into",l=r.to.trim()||(a&&c?c.path:"");n.push({path:r.path.trim(),startLine:r.startLine,endLine:r.endLine,to:l,disposition:r.disposition,into:c,childRef:r.childRef||null,heading:r.heading||null,reason:r.reason})}let o=[];for(let r of e.additions){if(!Ke(Hs,r.kind))return`addition to ${r.path}: kind "${r.kind}" is not one of ${Hs.join(", ")}`;o.push({path:r.path.trim(),text:r.text,kind:r.kind,heading:r.heading||null})}let s=e.reorders[0],i=Ke(gn,e.severity)?e.severity:"medium";return{body:{...yo(e),subKind:e.subKind,kind:e.kind,severity:i,title:e.title.trim(),cause:e.cause,evidence:e.evidence.map(r=>({path:r.path.trim(),line:r.line,excerpt:r.excerpt})),files:t,segments:n,additions:o,reorder:s?{path:s.path.trim(),startLine:s.startLine,endLine:s.endLine,steps:s.order.map((r,c)=>({from:r,reason:s.reasons[c]||null}))}:null,toolMoves:e.toolMoves.map(r=>({...r,fromPath:null,toPath:null}))},children:e.children.map(r=>({ref:r.ref.trim(),how:r.how}))}}function sf(e,t){let n=[],o=[],s=[],i=(r,c)=>{n.push(`proposal "${r}": ${c} \u2014 dropped`),o.push({title:r,reason:c})};for(let r of t.raw){let c=of(r);if(typeof c=="string"){i(r.title,c);continue}let{body:a}=c,l=c.children,d=`proposal "${a.title}"`;if(a.files.length>Qo){i(a.title,`${a.files.length} files (cap ${Qo})`);continue}if(a.segments.length>Yo){i(a.title,`${a.segments.length} segments (cap ${Yo})`);continue}let p=zs(a),u=new Set(a.files.filter(x=>x.action==="create").map(x=>x.path)),g=p.filter(x=>!u.has(x)),h=g.length>0?t.repos.find(x=>g.every(E=>x.files[E]!=null)):void 0;if(!h){i(a.title,`cites ${g[0]??p[0]??"no source file"}, which the analysis never read`);continue}let f=x=>h.files[x]!=null,S=[...a.files.map(x=>x.path),...a.segments.map(x=>x.path),...a.additions.map(x=>x.path),...a.reorder?[a.reorder.path]:[]].map(x=>vn(x)?`${x} is code \u2014 the structural pass moves instructions only`:_n(x,h.root)?u.has(x)?f(x)?`creates ${x}, which exists`:null:f(x)?null:`${x} is not a file the analysis read`:`${x} is outside the agent's root ${h.root}`).find(Boolean);if(S){i(a.title,S);continue}let b=[];for(let x of a.evidence.slice(0,4)){let E=f(x.path)?se(h.files[x.path],x.excerpt):null;E==null?n.push(`${d}: evidence at ${x.path} is not a quote from the file \u2014 dropped`):b.push({...x,line:E})}a.evidence.length>4&&n.push(`${d}: ${a.evidence.length} evidence sites, kept the first 4`),a.evidence=b;let y=new Set(a.files.filter(x=>x.action!=="delete").map(x=>x.path)),w=null;for(let x of a.segments){let E=h.files[x.path];if(E==null){w=`segment ${x.path}:${x.startLine}-${x.endLine} is in a file that does not exist yet`;break}let C=X(E).length;if(x.startLine<1||x.endLine<x.startLine||x.endLine>C){w=`segment ${x.path}:${x.startLine}-${x.endLine} is outside the file`;break}let $=xo(le(e,E),x.startLine,x.endLine);if($.snapped&&(n.push(`${d}: segment ${x.path}:${x.startLine}-${x.endLine} cut an atomic block; widened to ${$.start}-${$.end}`),x.startLine=$.start,x.endLine=$.end),(x.disposition==="move"||x.disposition==="remove_superseded")&&!y.has(x.to)&&x.to!==x.path){w=`segment ${x.path}:${x.startLine}-${x.endLine} sends lines to ${x.to}, which is not a destination`;break}if((x.disposition==="fold_into"||x.disposition==="remove_duplicate")&&!x.into){w=`segment ${x.path}:${x.startLine}-${x.endLine} is ${x.disposition} with no target`;break}if(x.into&&!f(x.into.path)&&!u.has(x.into.path)){w=`segment ${x.path}:${x.startLine}-${x.endLine} folds into ${x.into.path}, which does not exist`;break}if(x.disposition==="move"&&x.into&&a.files.find(P=>P.path===x.to)?.role!=="log"){w=`segment ${x.path}:${x.startLine}-${x.endLine} names a fold target, which only a move into a log may do`;break}if(x.disposition==="remove_superseded"&&!(x.childRef&&l.some(P=>P.ref===x.childRef))){w=`segment ${x.path}:${x.startLine}-${x.endLine} is remove_superseded but names no child`;break}}if(!w){let x=[...a.segments].sort((E,C)=>E.path.localeCompare(C.path)||E.startLine-C.startLine);for(let E=1;E<x.length;E++)if(x[E].path===x[E-1].path&&x[E].startLine<=x[E-1].endLine){w=`overlapping segments in ${x[E].path}`;break}}if(!w){let x=a.segments.filter(C=>C.disposition!=="move"),E=a.segments.find(C=>C.into&&x.some($=>$.path===C.into.path&&C.into.line>=$.startLine&&C.into.line<=$.endLine));E&&(w=`segment ${E.path}:${E.startLine}-${E.endLine} folds into a line this proposal removes`)}if(w){i(a.title,w);continue}let k=new Set,O=bo(a),v=(x,E)=>E!=null&&a.segments.some(C=>C.path===x&&E>=C.startLine&&E<=C.endLine);if(l=l.filter(x=>{if(k.has(x.ref))return!1;k.add(x.ref);let E=/^f(\d+)$/.exec(x.ref),C=E?t.findings[Number(E[1])-1]:void 0;if(!C)return n.push(`${d}: child ${x.ref} is not a finding of this analysis \u2014 link dropped`),!1;let $=C.siteRepo===h.key;return $&&C.site&&v(C.site.path,C.site.line)||$&&C.otherSites.some(P=>v(P.path,P.line))||O.some(P=>x.how.includes(P))?!0:(n.push(`${d}: child ${x.ref} ("${C.title}") is not in a segment and its how names no destination \u2014 link dropped`),!1)}),l.length===0&&a.evidence.length<2){i(a.title,a.evidence.length===0?"no evidence quote is in the files":"no children and fewer than two evidence sites");continue}if(a.reorder){let x=a.reorder,E=le(e,h.files[x.path]??"").filter($=>$.kind==="list_item"&&$.level===0&&/^\s*\d+[.)]/.test($.text)&&$.start>=x.startLine&&$.end<=x.endLine),C=x.steps.map($=>$.from).sort(($,R)=>$-R);if(C.length!==E.length||C.some(($,R)=>$!==R+1)){i(a.title,`reorder of ${x.path}:${x.startLine}-${x.endLine} is not a permutation of its ${E.length} steps`);continue}}let _=s.find(x=>zs(x.body).some(E=>p.includes(E)));if(_){i(a.title,`shares ${zs(_.body).find(x=>p.includes(x))} with "${_.body.title}"`);continue}let I=l.map(x=>t.findings[Number(x.ref.slice(1))-1].severity);a.severity=I.length?I.reduce((x,E)=>gn.indexOf(E)>gn.indexOf(x)?E:x):gn[Math.min(gn.indexOf(a.severity),1)],s.push({repo:h.key,body:a,children:l})}for(let r of s.splice(Wt))i(r.body.title,`over the cap of ${Wt} proposals`);return{kept:s,warnings:n,dropped:o}}var rf=/\b(never|always|must|don't|do not)\b/i,af=/^\s*(?:[-*+]|\d+[.)])?\s*(run|use|open|check|ask|call|write|read|add|remove|keep|make|ensure|avoid|stop|send|create|delete|update|set|follow|wait|confirm|verify|prefer|push|merge|commit|deploy|test|review)\b/i;function cf(e){return rf.test(e)||af.test(e)}function Js(e,t){let n=[...e.segments.map(o=>o.path),...e.segments.flatMap(o=>o.into?[o.into.path]:[]),...e.files.map(o=>o.path),...e.additions.map(o=>o.path),...e.reorder?[e.reorder.path]:[],...e.toolMoves.flatMap(o=>[o.fromPath,o.toPath].filter(s=>!!s))];return[...new Set(n.filter(o=>t[o]!=null))].sort()}function lf(e,t){let n=pr("",t),o=Pe(e.path,t)??e.path,s=o.startsWith(".claude/")?".claude/":"",i=Ee(e.frontmatter?.name||ml(o).replace(/\.md$/i,""));switch(e.role){case"skill":return`${n}${s}skills/${i}/SKILL.md`;case"system prompt":return`${n}${s}agents/${i}.md`;case"template":return`${n}templates/${ml(o)}`;default:return`${n}${o}, with a pointer from a file the agent always loads`}}function gl(e,t){let n=sf(e,t),o=[...n.warnings],s=[...n.dropped],i=[],r=(c,a)=>{o.push(`proposal "${c}": ${a} \u2014 dropped`),s.push({title:c,reason:a})};for(let c of n.kept){let{body:a,repo:l}=c,d=t.repos.find(k=>k.key===l),p=He(d.root),u=t.fragments.find(k=>k.repoKey===l)?.fragment;if(!u){r(a.title,`no architecture graph for ${l}`);continue}let g=k=>`${l}#${k}`,h=k=>u.nodes.find(O=>O.id===Ft(k,l))??null;for(let k of a.toolMoves)k.fromPath=hn(u,a,k.fromUnit,l),k.toPath=hn(u,a,k.toUnit,l);let f=a.toolMoves.find(k=>!k.fromPath||!k.toPath);if(f){r(a.title,`cannot find the tool list of ${f.fromPath?f.toUnit:f.fromUnit}`);continue}let m=ul(e,{repoKey:l,root:p,agentConfigurations:d.agentConfigurations,files:fl(e,d.files,a,u,l,o)}),S=null;for(let k of a.files){if(k.action==="delete"||k.loadMode==="never"||k.action!=="create"&&k.action!=="edit")continue;let O=m.nodes.find(_=>_.files.some(I=>I.path===k.path));if(!O){S=`The agent would not load ${k.path} \u2014 put it at ${lf(k,p)}.`;break}let v=Ft(k.unit,l);if(v&&O.id!==v){S=`${k.path} would attach to ${g(O.id)}, not ${k.unit}`;break}if(!v&&u.nodes.some(_=>_.id===O.id)&&k.role==="system prompt"){S=`${k.path} would not be a new sub-agent`;break}if(!v&&k.role==="system prompt"&&!m.edges.some(_=>_.kind==="delegates"&&_.to===O.id)){S=`${k.path} would not be a sub-agent anyone delegates to`;break}}if(!S)for(let k of a.toolMoves){let O=Ft(k.toUnit,l)??m.nodes.find(_=>_.files.some(I=>a.files.some(x=>x.unit===k.toUnit&&x.path===I.path)))?.id;if(!m.nodes.find(_=>_.id===O)?.tools.some(_=>_.label===k.tool)){S=`${k.tool} would not reach ${k.toUnit}`;break}}if(S){r(a.title,S);continue}for(let k of a.files){if(k.action==="delete"||k.action==="shrink")continue;let O=k.action==="create"?null:Oo(t.loadModes,l,k.path),v=al(k,{existing:O,node:h(k.unit),files:d.files,prompt:a.files.find(_=>_.unit===k.unit&&_.role==="system prompt")});if(v!=="unknown"&&v!==k.loadMode){S=`declares ${k.path} ${k.loadMode}, but the conventions make it ${v}`;break}if(k.loadMode==="on_demand"&&k.role==="skill"&&k.action==="create"){let _=k.frontmatter?.description??"";if(!_||_.length>1024){S=`skill ${k.path} needs a description of at most 1024 characters to be triggered`;break}}if(k.loadMode==="on_demand"&&k.role!=="skill"&&!O){let _=I=>Oo(t.loadModes,l,I)?.mode==="always"&&Oo(t.loadModes,l,I)?.unit===k.unit||a.files.some(x=>x.path===I&&x.unit===k.unit&&x.loadMode==="always");if(!a.additions.some(I=>I.kind==="pointer"&&I.text.includes(k.path)&&_(I.path))){S=`${k.path} is read only on demand, but nothing the agent always loads points to it`;break}}}if(!S)for(let k of a.segments){let O=a.files.find(I=>I.path===k.to);if(k.disposition!=="move"||O?.loadMode!=="never"||k.into)continue;let _=(d.files[k.path]??"").split(`
57
- `).slice(k.startLine-1,k.endLine).findIndex(cf);if(_>=0){S=`moves a rule into a file the agent never reads (${k.path}:${k.startLine+_} \u2192 ${k.to})`;break}}if(S){r(a.title,S);continue}let y=sl(e,{body:a,ticked:bo(a),contents:d.files,childSites:[]}).outputs.map(k=>({path:k.path,bytes:Buffer.byteLength(k.content,"utf8")})).find(k=>k.bytes>Jo);if(y){r(a.title,`would assemble ${y.path} at ${y.bytes} bytes (cap ${Jo})`);continue}let w=Object.fromEntries(Js(a,d.files).map(k=>[k,nf("sha256").update(d.files[k]).digest("hex")]));i.push({...c,sourceHashes:w,delta:vo(u,m,a,l)})}return{structures:i,warnings:o,dropped:s}}var df=["low","medium","high","critical"];function _o(e){return e.map((t,n)=>`f${n+1}`)}function Qs(e,t){let n=_o(e),o=e.flatMap((i,r)=>[i.site,...i.otherSites??[]].some(c=>c&&Dt(c.path,t))?[]:[{...i,ref:n[r]}]),s=e.map(i=>({title:i.title,severity:df.includes(i.severity)?i.severity:"medium",siteRepo:i.siteRepo,site:i.site,otherSites:(i.otherSites??[]).map(r=>({path:r.path,line:r.line}))}));return{items:o,candidates:s,refs:n}}var Ys=A.generate;function pf(e,t){return{template:"derive-structure",model:Ys,answerFormat:"structures",limits:{effort:"high"},inputs:{maxStructures:String(Wt),openStructuresData:t.open,findingsData:t.findings,graph:JSON.stringify(t.graph,null,2),loadModesData:t.loadModes,files:Object.entries(t.files).map(([n,o])=>{let s=/\.mdx?$/i.test(n);return{path:n,text:Ae(o),markdown:s,outline:s?le(e,o).map(i=>({...i,text:i.text.slice(0,60)})):[]}})}}}async function kl(e,t,n){return(await F(t,pf(e,n),e)).structures}async function Co(e,t,n,o={}){let s=o.enforce??$s;if(t.length===0)return{kept:[],dropped:[],flagged:[],ran:!0};let i=await Ic(e,t.map(l=>({subKind:l.body.subKind,title:l.body.title,cause:l.body.cause,evidence:l.body.evidence,resolves:l.children.map(d=>n[Number(d.ref.slice(1))-1]?.title??d.ref)})),{scopeRuleId:o.scopeRuleId??"structure",maxTokens:o.maxTokens});if(!i)return{kept:t,dropped:[],flagged:[],ran:!1};let r=[],c=[],a=[];return t.forEach((l,d)=>{let p=i.get(d);if(p.inScope){r.push(l);return}let u={title:l.body.title,reason:p.reason};s?c.push(u):(a.push(u),r.push(l))}),{kept:r,dropped:c,flagged:a,ran:!0}}function ff(e,t,n,o=15e4){let s=new Set(t.flatMap(l=>[l.site?.path,...(l.otherSites??[]).map(d=>d.path)]).filter(l=>!!l)),i=l=>e.has(l)?0:s.has(l)?1:2,r=Object.keys(n).sort((l,d)=>i(l)-i(d)||n[l].length-n[d].length||(l<d?-1:1)),c={},a=0;for(let l of r)i(l)>0&&a+n[l].length>o||(c[l]=e.has(l)?fe(n[l]):n[l],a+=c[l].length);return c}function wl(e,t,n,o,s={}){return o?ff(V(t),n,ee(s,tn(e),t)):Jn(e,t,void 0,new Set,void 0,{...s,CF_READING_PRIORITY:"0"}).files}function Sl(e){let t=_o(e);return e.flatMap((n,o)=>{if(n.category!=="contradiction"&&n.category!=="ambiguity")return[];let s=n.site?[{...n.site,repo:n.siteRepo,excerpt:n.excerpt}]:[];return s.push(...(n.otherSites??[]).map(i=>({...i,repo:i.repo??n.siteRepo}))),[{id:t[o],title:n.title,category:n.category,sites:s}]})}function yl(e,t,n){return t===void 0?[]:e.filter(o=>o.sites.length>0&&o.sites.every(s=>s.repo===t&&n.some(i=>i.path===s.path&&(!i.span||s.line!==null&&s.line>=i.span.from&&s.line<=i.span.to))))}import{posix as uf}from"node:path";function Eo(e,t,n=1){let o=le(e,t).filter(s=>s.kind==="heading");return o.map((s,i)=>({heading:s.text,startLine:s.start+n-1,endLine:(o.slice(i+1).find(r=>r.level<=s.level)?.start??X(t).length+1)+n-2,level:s.level}))}function xl(e,t,n=1){let o=Eo(e,t,n);return o.length?[{startLine:n,endLine:o[1]?o[1].startLine-1:o[0].endLine},...o.filter(s=>/^#{1,6}\s+(Identity|Mission|Boundaries)\b/i.test(s.heading)).map(({startLine:s,endLine:i})=>({startLine:s,endLine:i}))]:[{startLine:n,endLine:n+X(t).length-1}]}function bl(e,t,n){let o=new Map;for(let s of t.files.filter(i=>i.role==="tools")){let i=n[s.path]??"",r=[];try{r=jt(i).tools}catch{}let c=[...r,...Mr(i).tools,...Fr(i).tools];for(let a of c)o.has(a.name)||o.set(a.name,{name:a.name,description:a.description?.trim()||"no description",declaredIn:s.path})}return t.tools.map(s=>o.get(s.label)??{name:s.label,description:"no description",declaredIn:t.files.find(i=>i.role==="mcp")?.path??""})}function Zs(e){let t=new Set(e.edges.filter(n=>n.kind==="delegates").map(n=>n.to));return e.nodes.filter(n=>n.kind==="agent"&&!t.has(n.id))}function vl(e,t){let n=new Set([t]);for(let o of n)for(let s of e.edges)s.kind==="delegates"&&s.from===o&&n.add(s.to);return n}function _l(e,t){if(!Zs(e).some(o=>o.id===t))return null;let n=vl(e,t);return{nodes:e.nodes.filter(o=>n.has(o.id)),edges:e.edges.filter(o=>n.has(o.from)&&n.has(o.to)),warnings:e.warnings}}function Cl(e,t){return Zs(t.graph).map(n=>hf(e,{...t,unitId:n.id}))}function Ol(e,t,n){let o=t.files.filter(s=>s.role==="skill");return o.map(s=>{if(!s.label)throw new Error(`The graph did not name the skill at ${s.path}.`);let i=s.label,r=t.files.filter(d=>d.role==="reference"&&(d.label===i||d.path.startsWith(uf.dirname(s.path)+"/"))).map(d=>d.path).sort(),c=[s.path,...r],a=c.map(d=>n[d]??"").join(`
58
- `),l=d=>d.filter(p=>Ye(a,{name:p,key:p,paths:[],bytes:0}));return{name:i,path:s.path,description:wt(e,s.path,n[s.path]??"").description?.trim()||"no description",bytes:c.reduce((d,p)=>d+Buffer.byteLength(n[p]??""),0),references:r,tools:l(t.tools.map(d=>d.label)),skills:l(o.flatMap(d=>d.label&&d.label!==i?[d.label]:[]))}}).sort((s,i)=>s.name.localeCompare(i.name))}function mf(e,t,n){return t.files.filter(o=>o.role==="system prompt"||o.role==="soul").map(o=>{let s=n[o.path]??"",i=o.span?.from??1,r=o.span?.to??X(s).length,c=X(s).slice(i-1,r).join(`
59
- `);return{path:o.path,text:c,startLine:i,endLine:r,numberedText:Ae(s).split(`
60
- `).slice(i-1,r).join(`
61
- `),sections:Eo(e,c,i)}})}function hf(e,t){let{graph:n,files:o}=t,s=Zs(n);if(!t.unitId&&s.length!==1)throw new Error("Select one top-level agent for the split inventory.");let i=t.unitId?s.find(l=>l.id===t.unitId):s[0];if(!i)throw new Error(`No top-level agent named ${t.unitId} is available.`);let r=vl(n,i.id),c=Ol(e,i,o),a=mf(e,i,o);return{agent:{id:i.id,name:i.label,description:i.desc,tools:i.tools.map(l=>l.label)},skills:c,tools:bl(e,i,o).map(l=>({...l,skills:c.filter(d=>d.tools.includes(l.name)).map(d=>d.name)})),subAgents:n.nodes.filter(l=>l.id!==i.id&&r.has(l.id)&&l.kind==="agent").map(l=>({id:l.id,name:l.label,description:l.desc,tools:l.tools.map(d=>d.label),skills:Ol(e,l,o)})),prompt:a[0]??null,prompts:a,knowledge:i.files.filter(l=>l.role==="knowledge").map(l=>({path:l.path,sections:Eo(e,o[l.path]??"")})),open:t.open.map(l=>({...l,frozen:[...l.frozen],declined:[...l.declined],files:[...l.files]})),findings:yl(t.findings??[],t.repoKey,n.nodes.filter(l=>r.has(l.id)).flatMap(l=>l.files))}}function Io(e,t){return(t.repos??[]).flatMap((n,o)=>{let s=ts(t,o);return Cl(e,{graph:s,files:n.files??{},open:t.openStructures??[],repoKey:n.key,findings:t.splitFindingsPriced?t.shapeFindings??[]:[]}).filter(i=>!Ue(i.agent)).map(i=>({repo:n,graph:s,inventory:i}))})}function El(e){return e.findings.length>0||e.skills.length>=8||e.subAgents.length>=3||e.tools.length>=20}var er=A.generate;function Il(e){return{template:"derive-shape",model:er,answerFormat:"shape",limits:{effort:"high"},inputs:{inventoryData:e,maxSubAgents:String(Vt),minSkills:String(Kn)}}}function Vv(e,t){return e.tools.analysisRequest(Il(t))}function $l(e,t){return e.tools.validateShapeInput(t),F(e,Il(t))}function Pl(e,t,n){let o=n.nodes.filter(l=>l.kind==="agent"),s=new Set(n.edges.filter(l=>l.kind==="delegates").map(l=>l.to)),i=o.filter(l=>!s.has(l.id)),r=i[0];if(i.length!==1||r.id!==t.agent.id||r.label!==t.agent.name)return`${t.agent.name} would not remain the one original entry point.`;let c=new Map(e.frontDoor.skills.map(l=>[l,r.id])),a=new Set(t.subAgents.flatMap(l=>l.skills.map(d=>JSON.stringify([l.id,d.name,d.path]))));for(let l of e.subAgents){let d=o.filter(p=>p.label===l.name);if(d.length!==1||n.edges.filter(p=>p.kind==="delegates"&&p.from===r.id&&p.to===d[0].id).length!==1)return`sub-agent ${l.name} would not load once with a handoff from ${t.agent.name}.`;for(let p of l.skills)c.set(p,d[0].id)}for(let l of t.skills){let d=o.flatMap(u=>u.files.filter(g=>g.role==="skill"&&g.label===l.name&&!a.has(JSON.stringify([u.id,g.label,g.path]))).map(g=>({node:u.id,path:g.path}))),p=e.frontDoor.skills.includes(l.name);if(d.length!==1||d[0].node!==c.get(l.name)||(p?d[0].path!==l.path:d[0].path===l.path))return`skill ${l.name} would not load once on its intended owner at its ${p?"original":"new"} path.`}for(let l of t.subAgents){let d=o.find(p=>p.id===l.id&&p.label===l.name);if(!d||!s.has(d.id))return`existing sub-agent ${l.name} would no longer load.`;for(let p of l.skills)if(!d.files.some(u=>u.role==="skill"&&u.label===p.name&&u.path===p.path))return`existing skill ${p.name} would no longer load on ${l.name}.`}return null}function Rl(e,t,n,o,s){let i=h=>({section:null,error:h}),{path:r,startLine:c,endLine:a}=t;if(!(n==="prompt"?o.prompts:o.knowledge).find(h=>h.path===r)||s[r]===void 0)return i(`${n} section ${r} is not an available ${n} file.`);let d=n==="prompt"?o.prompts.find(h=>h.path===r):null,p=d?.startLine??1,u=d?.endLine??X(s[r]).length;if(!Number.isInteger(c)||!Number.isInteger(a)||c<p||a<c||a>u)return i(`${n} section ${r}:${c}-${a} is outside its file or prompt span.`);let g=xo(le(e,s[r]),c,a);return g.start<p||g.end>u?i(`${n} section ${r} snaps outside its prompt span.`):d&&xl(e,d.text,d.startLine).some(h=>h.startLine<=g.end&&h.endLine>=g.start)?i(`prompt section ${r}:${g.start}-${g.end} would move the agent's identity.`):{section:{path:r,startLine:g.start,endLine:g.end},error:null}}var $o=(e,t)=>e.path===t.path&&e.startLine<=t.endLine&&t.startLine<=e.endLine,N=e=>({shape:null,warnings:[`Split check discarded: ${e}`]});function Al(e,t,n){if(t.decision==="keep")return{shape:null,warnings:[]};if(t.decision!=="split")return N(`unknown decision "${t.decision}".`);if(t.subAgents.length<1||t.subAgents.length>Vt)return N(`a split needs 1\u2013${Vt} sub-agents.`);let{inventory:o,files:s}=n,i=new Set(o.skills.map(f=>f.name)),r=new Set(o.tools.map(f=>f.name)),c=new Set,a=f=>i.has(f)?c.has(f)?`skill ${f} is placed twice.`:(c.add(f),null):`unknown skill ${f}.`;for(let f of t.frontDoor.skills){let m=a(f);if(m)return N(m)}let l=new Set(o.subAgents.map(f=>Ee(f.name))),d=new Set,p=[],u=new Set,g=[];for(let f of t.subAgents){if(f.skills.length<Kn&&f.promptSections.length===0)return N(`sub-agent ${f.name} needs at least one skill or one prompt section.`);for(let O of f.skills){let v=a(O);if(v)return N(v)}for(let O of f.tools)if(!r.has(O))return N(`unknown tool ${O} on ${f.name}.`);if(!f.handoff.trim())return N(`sub-agent ${f.name} has an empty handoff.`);if(!f.description.trim()||f.description.length>1024)return N(`sub-agent ${f.name} needs a description of 1\u20131024 characters.`);if(!/[a-z0-9]/i.test(f.name))return N(`sub-agent "${f.name}" needs a usable name.`);let m=Ee(f.name);if(l.has(m))return N(`the existing sub-agent ${m} already uses that name.`);let S=m,b=2;for(;d.has(S)||l.has(S);)S=`${m}-${b++}`;d.add(S);for(let O of f.resolves)if(!o.findings.some(v=>v.id===O))return N(`unknown finding ${O} on sub-agent ${S}.`);let y=[];for(let O of f.evidence){let v=s[O.path]===void 0?null:se(s[O.path],O.excerpt);if(v===null)return N(`evidence quote was not found in ${O.path}: "${O.excerpt}".`);y.push({...O,line:v}),u.add(`${O.path}:${v}:${O.excerpt.replace(/\s+/g," ").trim()}`)}let w=[],k=[];for(let[O,v,_]of[["prompt",f.promptSections,w],["knowledge",f.knowledgeSections,k]])for(let I of v){let x=Rl(e,I,O,o,s);if(x.error)return N(x.error);let E=x.section;if(O==="prompt"){if(p.some(C=>$o(E,C)))return N(`prompt section ${E.path}:${E.startLine}-${E.endLine} is placed twice.`);p.push(E)}else if(k.some(C=>$o(E,C)))return N(`knowledge section ${E.path}:${E.startLine}-${E.endLine} is listed twice on ${S}.`);_.push(E)}g.push({...f,name:S,skills:[...f.skills],tools:[...f.tools],resolves:[...new Set(f.resolves)],evidence:y,handoff:f.handoff.trim(),promptSections:w,knowledgeSections:k,movedKnowledge:[],neededKnowledge:[]})}for(let f of i)if(!c.has(f))return N(`skill ${f} is missing from the split.`);if(u.size<2)return N("a split needs at least two distinct evidence quotes.");for(let f of g)for(let m of f.knowledgeSections)(n.retainedKnowledge===void 0||n.retainedKnowledge.some(b=>$o(b,m))||g.some(b=>b!==f&&b.knowledgeSections.some(y=>$o(y,m)))?f.neededKnowledge:f.movedKnowledge).push(m);let h={...t,decision:"split",frontDoor:{...t.frontDoor,skills:[...t.frontDoor.skills]},subAgents:g};if(!n.afterGraph){let f=g[0].skills[0]?`moved skill ${g[0].skills[0]}`:`sub-agent ${g[0].name}`;return N(`cannot prove that ${f} would load without a loadability checker.`)}try{let f=Pl(h,o,n.afterGraph(h));return f?N(f):{shape:h,warnings:[]}}catch(f){return N(`loadability check failed: ${f instanceof Error?f.message:String(f)}.`)}}import{posix as Ml}from"node:path";function kn(e,t,n){let o=n.scoped[0]??"",s=o.slice(0,o.length-n.stripRoot(o).length),i=n.scoped.some(a=>n.stripRoot(a).startsWith(`${Or}/`)),r=`${s}${vr[i?0:1]}`,c=`${r}/${e}/skills/${t}`;return{agent:`${r}/${e}.md`,folder:c,skill:`${c}/SKILL.md`}}function Po(e,t,n,o){return e.subAgents.flatMap(s=>s.skills.flatMap(i=>{let r=t.skills.find(l=>l.name===i),c=Ml.dirname(r.path),a=kn(s.name,Ml.basename(c),o).folder;return Object.keys(n).filter(l=>l.startsWith(`${c}/`)).sort().map(l=>({name:i,owner:s.name,from:l,to:a+l.slice(c.length),fromFolder:c,toFolder:a}))}))}import{posix as gf}from"node:path";var tr=e=>e.replace(/(?<!\.)[.!]$/,""),kf=e=>[...e.matchAll(/\bmcp__[^\s`"'()[\]{},;:<>]+/g)].map(t=>tr(t[0])),Fl=(e,t)=>Ye(e,{name:t,key:t,paths:[],bytes:0});function Tl(e,t,n,o){if(e.CF_SPLIT_HELPER_TOOLS==="0")return[...t.tools];if(t.noTools)return[];let s=n.skills.filter(f=>t.skills.includes(f.name)),i=Object.keys(o).filter(f=>s.some(m=>f.startsWith(gf.dirname(m.path)+"/"))),r=[...t.promptSections,...t.movedKnowledge,...t.neededKnowledge],c=[...i.map(f=>o[f]),...r.map(f=>X(o[f.path]??"").slice(f.startLine-1,f.endLine).join(`
62
- `))].join(`
63
- `),a=new Set([...n.agent.tools,...n.tools.map(f=>f.name)].filter(f=>!/[*?]/.test(f))),l=kf(c);if(l.some(f=>!a.has(f))||t.tools.some(f=>!a.has(f)))return null;let d=new Set(l.map(f=>f.slice(0,f.lastIndexOf("__")+2))),p=f=>{if(a.has(f))return f;let m=[...a].filter(y=>y.endsWith(`__${f}`)),S=m.filter(y=>d.has(y.slice(0,y.lastIndexOf("__")+2))),b=m.length===1?m:S;return b.length===1?b[0]:null},u=new Set(l);for(let f of a)Fl(c,f)&&u.add(f);let g=new Set([...a].flatMap(f=>/^mcp__.+__(.+)$/.exec(f)?.[1]??[]));for(let f of g){if(!Fl(c,f))continue;let m=p(f);if(!m)return null;u.add(m)}let h=[...[...c.matchAll(/`([^`\n]+)`/g)].flatMap(f=>{let m=f[1];return a.has(m)?[m]:/^[\w*?./-]+(?:\([^)]*\))?$/.test(m)?[m.replace(/\([^)]*\)$/,"")]:[]}),...[...c.matchAll(/(?:[*?]+[\w-]+|[\w-]+[*?])[\w*?.-]*/g)].map(f=>f[0]),...[...c.matchAll(/\b[a-z][\w*?.-]*_[\w*?.-]+/gi)].map(f=>tr(f[0])),...[...c.matchAll(/\b(?:call|invoke)\s+(?:the\s+)?(?:tool\s+)?`?([\w*?.-]+)/gi)].map(f=>tr(f[1]))];for(let f of h){let m=p(f);if(!m)return null;u.add(m)}return t.tools.length?[...t.tools]:u.size?[...u].sort():null}function Ro(e,t,n,o,s={}){let i={...o},r=te(e,Object.keys(o),s.root);for(let c of t.subAgents){let a=Tl(e,c,n,o);i[kn(c.name,"",r).agent]=["---",`name: ${c.name}`,`description: ${dt(c.description.replace(/\s+/g," "))}`,...a===null?[]:[`tools: ${a.length?kt(e,a):"[]"}`],"---",c.job].join(`
64
- `)}for(let c of Po(t,n,o,r))delete i[c.from],i[c.to]=o[c.from];return i}function wf(e,t){return e.split?e.additions.some(n=>n.kind==="handoff"&&n.path===t)?"grown":e.segments.some(n=>n.path===t)||e.split.subAgents.some(n=>[...n.movedKnowledge,...n.neededKnowledge].some(o=>o.path===t))?"unchanged":null:null}function Nl(e,t){return e.split?{...t,files:t.files.flatMap(n=>{if(n.change!=="shrunk"&&n.change!=="grown")return[n];let o=wf(e,n.path);return o==="grown"?[{...n,change:o}]:o==="unchanged"?[]:[n]})}:t}import{createHash as yf}from"node:crypto";var Ll=e=>e.replace(/\s+/g," ").trim().replace(/[.!?]+$/,"").replace(/^./,t=>t.toLowerCase());function jl(e,t){let n=e.frontDoor.name??t,o=e.subAgents.map(s=>Ll(Sf(s)));return{title:o.length===0?`Keep ${n} together`:o.length===1?`Move ${n}'s ${o[0]} into its own helper`:`Split ${n} into a main agent and ${o.length} helpers: ${o.join(", ")}`,summary:`${n} keeps its main job: ${Ll(e.frontDoor.job)}.${o.length?` Each helper gets its own skills and rules, and ${n} hands work to it.`:""}`}}function Sf(e){return(e.name.replace(/[-_]/g," ").replace(/\s+/g," ").trim()||e.job.trim()).replace(/^./,n=>n.toUpperCase())}function Dl(e,t,n,o,s){if(!n.prompt)throw new Error("An original prompt is needed for each handoff.");let i=n.prompt,{files:r,root:c}=s,a=te(e,Object.keys(r),c),l=Po(t,n,r,a),d=w=>kn(w,"",a).agent,p=n.agent.name.replace(/^./,w=>w.toUpperCase()),u=new Map;for(let w of t.subAgents)for(let k of w.resolves){let O=u.get(k)??[];O.push(`${w.name} in ${d(w.name)}`),u.set(k,O)}let g=t.subAgents.flatMap(w=>[...w.promptSections,...w.movedKnowledge].map(k=>({...k,to:d(w.name),disposition:"move",into:null,childRef:null,heading:null,reason:w.job}))),h={...yo(t),subKind:"extract_subagent",kind:"reliability",severity:"medium",...jl({frontDoor:{...t.frontDoor,name:p},subAgents:t.subAgents},p),cause:t.reason,evidence:t.subAgents.flatMap(w=>w.evidence.map(k=>({...k}))),files:t.subAgents.map(w=>{let k=w.tools.filter(O=>!n.tools.find(v=>v.name===O).skills.some(v=>t.frontDoor.skills.includes(v)));return{path:d(w.name),action:"create",role:"system prompt",unit:`new:${w.name}`,loadMode:"always",loadVia:null,purpose:`${w.job}${k.length?` ${k.join(", ")}: only the sub-agent uses this.`:""}`,frontmatter:{name:w.name,description:w.description,tools:[...w.tools]}}}),segments:g,additions:t.subAgents.map(w=>({path:i.path,kind:"handoff",text:w.handoff,heading:null})),reorder:null,toolMoves:[],split:{...c?{root:c}:{},frontDoor:{name:p,job:t.frontDoor.job,skills:[...t.frontDoor.skills]},subAgents:t.subAgents.map(w=>({name:w.name,job:w.job,description:w.description,path:d(w.name),handoff:w.handoff,tools:[...w.tools],...w.noTools===void 0?{}:{noTools:w.noTools},resolves:[...w.resolves],skills:w.skills.map(k=>{let O=n.skills.find(_=>_.name===k),v=l.find(_=>_.from===O.path);if(!v)throw new Error(`The skill definition at ${O.path} is unavailable for its move.`);return{name:k,from:O.path,to:v.to}}),movedKnowledge:w.movedKnowledge.map(k=>({...k})),neededKnowledge:w.neededKnowledge.map(k=>({...k}))}))}},f=s.agentConfigurations?{agentConfigurations:s.agentConfigurations}:{},m=s.graphs?.before??ct(e,ln(e,{repoKey:o,files:r,root:c,...f})).fragment,S=s.graphs?.after??ct(e,ln(e,{repoKey:o,files:Ro(e,t,n,r,{root:c}),root:c,...f})).fragment,b=Nl(h,vo(m,S,h,o));for(let w of l){let k=S.nodes.find(v=>v.files.some(_=>_.path===d(w.owner)));if(!k)throw new Error(`The sub-agent at ${d(w.owner)} is missing from the discovered graph.`);let O=m.nodes.flatMap(v=>v.files).find(v=>v.path===w.from)?.role??(vn(w.from)?"code":"reference");b.files.push({path:w.to,fromPath:w.from,role:O,node:`${o}#${k.id}`,fromNode:`${o}#${n.agent.id}`,change:"moved",segments:0})}let y=[...new Set([...Js(h,r),...l.map(w=>w.from),...t.subAgents.flatMap(w=>w.neededKnowledge.map(k=>k.path))])].sort();return{repo:o,body:h,children:[...u].map(([w,k])=>({ref:w,how:`Isolating ${k.join(" and ")} gives each job its own rules.`})),delta:b,sourceHashes:Object.fromEntries(y.map(w=>[w,yf("sha256").update(r[w]).digest("hex")]))}}var xf=1e3,D_=Si+4e3;function Bl(e,t,n={}){return Co(e,t,[],{...n,scopeRuleId:"split",maxTokens:xf})}function Kl(e,t,n){return t>0?[H(e,"derive-shape","shape",er,t,n)]:[]}async function ql({state:e,settings:t},n,o,s){let i=[...e.warnings??[]],r=[...e.structuresRaw??[]],c=!1,a=!1;function l(d){return M("derive-shape",d,p=>o.rethrow(p)),n.progress.log({level:"warn",code:"analysis.shape_check_failed"}),{structures:[],warnings:["The split check failed; other results were kept and earlier splits were left unchanged."],failed:!0}}try{if(J(t,e).splitCheck&&e.splitCheckPriced){a=!0;let d=Io(t,e).filter(({inventory:u})=>El(u)),p=await q(d,4,async({repo:u,graph:g,inventory:h})=>{n.progress.assertHeld(),n.progress.signal?.throwIfAborted();try{let f=u.files??{},m=await $l(o,h),S=g,b=Al(t,m,{inventory:h,files:f,afterGraph(O){return S=dn(t,{...u,files:Ro(t,O,h,f,{root:u.root})},go(t,e),e.modelReader??!1,e.projectAgents,s,{verdicts:e.newVerdicts??[],failed:[]}).fragment,_l(S,h.agent.id)??S}});if(!b.shape)return{structures:[],warnings:b.warnings,failed:b.warnings.length>0};let y=Dl(t,b.shape,h,u.key,{files:f,root:u.root,graphs:{before:g,after:S}}),w=await Bl(o,[y]),k=w.ran?w.flagged.length?["The split proposal was flagged by the scope check, but kept because that verdict is not enforced."]:[]:["The split scope check did not run; the proposal was kept unchecked."];return w.ran||n.progress.log({level:"warn",code:"analysis.shape_check_failed"}),{structures:w.kept,warnings:k,failed:!w.ran}}catch(f){return l(f)}},o);for(let u of p)r.push(...u.structures),i.push(...u.warnings),c||=u.failed}}catch(d){i.push(...l(d).warnings),c=!0}return{next:"persisting",clear:[],set:{structuresRaw:r,warnings:i,splitCheckRan:a,splitPassFailed:c}}}var nr=A.mechanical,Hl=20;function bf(e,t){if(!t)return null;for(let[n,o]of Object.entries(e).sort(([s],[i])=>s.localeCompare(i))){let s=se(o,t);if(s!=null)return{path:n,line:s}}return null}function Of(e){return e.children.map(t=>{if(!t.excerpt?.trim())return{childId:t.id,kind:"keep",reason:"no_excerpt"};let n=e.filesByRepo[t.repo];if(!n)return{childId:t.id,kind:"keep",reason:"repo_not_analysed"};let o=bf(n,t.excerpt);if(!o)return{childId:t.id,kind:"gone"};let s=e.newFindings.find(i=>i.category===t.category&&i.repo===t.repo&&i.sites.some(r=>r.path===o.path&&r.line!=null&&Math.abs(r.line-o.line)<=Hl));return s?{childId:t.id,kind:"match",matchIndex:s.index,location:o}:{childId:t.id,kind:"ask",location:o}})}function vf(e,t){return e.split(`
65
- `).map((n,o)=>({text:n,line:o+1})).filter(n=>Math.abs(n.line-t)<=Hl).map(n=>`${n.line} ${n.text}`).join(`
66
- `)}function _f(e){return{template:"structure-recheck",model:nr,answerFormat:"recheck",inputs:e}}async function Ul(e,t,n){let o=[],s=[],i=`C-${t.change.seq}`;for(let r of Of(t)){n?.assertHeld(),n?.signal?.throwIfAborted();let c=t.children.find(l=>l.id===r.childId),a={childId:c.id,changeId:t.change.id};if(r.kind==="match"){s.push({...a,outcome:"present",note:`Still present in ${r.location.path} after ${i}`,matchIndex:r.matchIndex,location:r.location});continue}if(r.kind==="keep"&&r.reason==="repo_not_analysed"){o.push(`F-${c.seq}'s repository was not analysed after ${i}; it stays open.`),s.push({...a,outcome:"not_checked",note:`Not re-checked after ${i} \u2014 its repository was not analysed`,matchIndex:null,location:null});continue}if(r.kind==="keep"){o.push(`F-${c.seq} has no excerpt to re-check after ${i}; it stays open.`),s.push({...a,outcome:"present",note:`Still present after ${i}`,matchIndex:null,location:null});continue}if(r.kind==="gone"){s.push({...a,outcome:"resolved",note:`Resolved by ${i}`,matchIndex:null,location:null});continue}try{let l=await F(e,_f({childId:c.id,seq:c.seq,title:c.title,cause:c.cause,path:r.location.path,line:r.location.line,window:vf(t.filesByRepo[c.repo][r.location.path],r.location.line)}));l.verdict==="resolved"?s.push({...a,outcome:"resolved",note:`Resolved by ${i}: ${l.reason.slice(0,200)}`,matchIndex:null,location:null}):s.push({...a,outcome:"present",note:`Still present in ${r.location.path} after ${i}`,matchIndex:null,location:r.location})}catch(l){M("structure-recheck",l,d=>e.rethrow(d)),n?.log({level:"warn",code:"analysis.structure_recheck_failed"}),o.push(`F-${c.seq} could not be re-checked after ${i}; it stays open.`),s.push({...a,outcome:"present",note:`Still present in ${r.location.path} after ${i}`,matchIndex:null,location:r.location})}}return{outcomes:s,warnings:o}}function Gl(e,t){return e>0?[H({},"structure-recheck","recheck",nr,e,t)]:[]}async function Xl(e,t,n,o){let s=Object.fromEntries((e.repos??[]).map(a=>[a.key,a.files??{}])),i={outcomes:[],changeIds:[],warnings:[]},r;try{r=await t.context.loadPendingRechecks?.()??[]}catch(a){return n.rethrow(a),t.progress.log({level:"warn",code:"analysis.structure_recheck_load_failed"}),i}let c=o.map((a,l)=>({index:l,category:a.category??null,repo:a.siteRepo,sites:[a.site,...a.otherSites].filter(d=>!!d)}));for(let a of r){if(t.progress.assertHeld(),t.progress.signal?.throwIfAborted(),!s[a.repo])continue;let l=await Ul(n,{change:a.change,children:a.children,filesByRepo:s,newFindings:c},t.progress);i.outcomes.push(...l.outcomes),i.warnings.push(...l.warnings),l.outcomes.some(d=>d.outcome==="not_checked")||i.changeIds.push(a.change.id)}return i}function PC(e,t,n={}){let o=_e,s=ae(e).splitCheck?n.structureState?Io(e,n.structureState).length:t.length:0;return[H(e,"derive-structure","structures",Ys,1,o),H(e,"scope-items","structureScope",Pt,1+s,o),...Gl(n.pendingRecheckChildren??0,o),...Kl(e,s,o)]}var RC=async(e,t)=>{if(t.progress.assertHeld(),t.progress.signal?.throwIfAborted(),!t.model)throw new re("llm","llm gone mid-job");let n=await je(t),o=Se(t.model,n,t.progress.rethrow,t.progress.signal);if(e.state.structurePhase==="shape"){let w=e.execution.forLocal?"":n.modelReaderPrompt();return ql(e,t,o,w)}let{state:s,settings:i}=e,r=s.repos??[],c=ne(s),a=Ge(c),{findings:l}=Re(be(s.findingsRaw??[]),Ne(s),Be(s),i),d=Nr(a),p=c.map(({repoKey:w,fragment:k})=>{let O=k.nodes.filter(_=>!Ue(_)),v=new Set(O.map(_=>_.id));return{repoKey:w,fragment:{...k,nodes:O,edges:k.edges.filter(_=>v.has(_.from)&&v.has(_.to))}}}),u=r.map(w=>({...w,files:Object.fromEntries(Object.entries(w.files??{}).filter(([k])=>!Dt(k,d)))})),g=Ge(p),h=Qs(l,d),f=[...s.warnings??[]],m=c.flatMap(({repoKey:w,fragment:k},O)=>{let v=cl(i,{repoKey:w,root:r[O]?.root,files:r[O]?.files??{},fragment:k});return f.push(...v.warnings),v.entries}),S;try{let k=a.nodes.some(Ue)&&!g.nodes.some(x=>x.kind==="agent")?[]:await kl(i,o,{graph:g,files:wl(u,De(p),l,J(i,s).multiPass,i),findings:h.items,loadModes:m.filter(x=>!Dt(x.path,d)),open:s.openStructures??[]}),O=gl(i,{raw:k,findings:h.candidates,repos:u,fragments:p,loadModes:m});f.push(...O.warnings);let v=await Co(o,O.structures,l),_=v.dropped.length,I=v.flagged.length;_&&f.push(`${_} structural proposal${_===1?"":"s"} removed as out of scope`),I&&f.push(`${I} structural proposal${I===1?"":"s"} flagged by the scope check's model pass, but kept \u2014 that verdict is not enforced`),v.ran||f.push("the structural scope check did not run; proposals were kept unchecked"),S={structuresRaw:v.kept,structurePassFailed:!1,structureScopeCheck:{ran:v.ran},structureStats:{raw:k.length,flagged:I,droppedByValidation:O.dropped}}}catch(w){M("derive-structure",w,k=>o.rethrow(k)),t.progress.log({level:"warn",code:"analysis.structure_pass_failed"}),f.push("The structural pass failed; no structural proposals this time."),S={structuresRaw:[],structurePassFailed:!0}}let b=await Xl(s,t,o,l);f.push(...b.warnings);let y=J(i,s).splitCheck&&s.splitCheckPriced;return{next:y?"structuring":"persisting",clear:[],set:{...S,loadModes:m,warnings:f,rechecks:b.outcomes,recheckedChangeIds:b.changeIds,...y?{structurePhase:"shape"}:{},...y&&s.splitFindingsPriced?{shapeFindings:Sl(l)}:{}}}};export{$t as a,fo as b,tc as c,cn as d,Za as e,ce as f,ec as g,bs as h,Ra as i,ot as j,gc as k,Cs as l,mo as m,ct as n,Sc as o,$a as p,ao as q,sp as r,an as s,Ma as t,mk as u,Ba as v,dp as w,Ua as x,it as y,Xa as z,zk as A,Wa as B,Va as C,Jk as D,za as E,pp as F,Qk as G,Yk as H,fp as I,Zk as J,Ya as K,yc as L,Ql as M,ts as N,Ii as O,ne as P,Ne as Q,oe as R,ae as S,J as T,ho as U,go as V,uy as W,my as X,hy as Y,gy as Z,dn as _,na as $,qn as aa,j as ba,z as ca,qf as da,Je as ea,su as fa,Rt as ga,At as ha,Ac as ia,Pc as ja,By as ka,Vb as la,Io as ma,Se as na,er as oa,Vv as pa,xf as qa,D_ as ra,_h as sa,ax as ta,cx as ua,Zx as va,eb as wa,Xc as xa,Wc as ya,mO as za,hO as Aa,PC as Ba,RC as Ca};
@@ -1 +0,0 @@
1
- import{f as D,l as G,m as I,n as L}from"./FOKDE64Y.js";import{f as B,n as g}from"./KTNA2KTN.js";import{V as v,aa as C,d as M,ea as E,i as O,l as k,ra as c}from"./NIOS7U6C.js";import{c as p,e as R}from"./C6X5GDG4.js";function $(a,d,t={},l={}){let{root:r}=t,f=d.map(o=>o.path),w=M(a)?B(a,f,r):void 0,h=d.filter(o=>{let e=c(a,o,{...t,purpose:"source",route:"github"});return e.admitted||e.reason==="wrong-type"||e.reason==="too-large"}),i=k(a)?g(a,h.map(o=>o.path),r,{files:l.files,listedPaths:f,agentConfigurations:w}):void 0,P=new Set([...i?.pluginDeclarations?.map(o=>o.path)??[],...v(a,i?.files.map(o=>o.path)??[])]),S=i??(l.measureAnalysisSize?g(a,h.map(o=>o.path),r,{listedPaths:f,agentConfigurations:w}):void 0),T=new Map(S?.files.map(o=>[o.path,o])),U=l.measureAnalysisSize?new Map(d.map(o=>[o.path,o.size])):void 0,u=i?{files:i.files.map(o=>({...o,path:p(o.path,r)})),ownerOf:o=>{let e=i.ownerOf(R(o,r));return e?{...e,folder:e.key===null?"":p(e.folder,r)}:null}}:void 0,j=new Set(i?.ignoredPaths),s=D(a,{paths:h.map(o=>p(o.path,r)),scopes:u});return{descriptions:d.flatMap(o=>{if(j.has(o.path))return[];let e=p(o.path,r),b=e===null?{size:o.size}:G(s,e,o.size),n=c(a,{...o,size:b.size},{...t,purpose:"source",route:"github",scopes:u}),A=e===null?99:L(a,e,u),F=e!==null&&!P.has(o.path)&&!I(s,e)&&(O(o.path)||E(a,e,u)||A===0)?"instruction":"code",z={};if(l.measureAnalysisSize){let q=n.admitted||n.reason==="too-large",y=c(a,o,{...t,purpose:"code-scan",route:"github",listing:U}),m=T.get(o.path),H=m&&(n.admitted||["too-large","wrong-type","empty"].includes(n.reason))&&c(a,{path:o.path},{...t,purpose:C(m.role),route:"github"}).admitted;z.countsTowardAnalysisSize=q||y.admitted||y.reason==="too-large"||!!H,z.analysisPool=m?.role==="skill"||m?.role==="reference"?"instruction":F}return[{entry:o,readEntry:{...o,...b},rel:e,score:A,pool:F,...z,admission:n,...s.enabled&&e!==null?{tier:s.tierOf(e)}:{}}]}),priority:s,declarations:P,discovery:S}}export{$ as a};
@@ -1 +0,0 @@
1
- import{j as n}from"./X7WZAA7S.js";function r(e){return e.CF_FINDING_HEADLINES==="1"}function o(e){return e.CF_RESULT_SAFETY_CHECK==="1"}function i(e){return e.CF_IMPORT_OUTSIDE_LOADERS==="1"}function E(e){return e.CF_PROMPT_AGREE==="1"}function u(e){return n(e,"saved")}export{r as a,o as b,i as c,E as d,u as e};