@counterfact-labs/cli 0.1.3 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +176 -42
- package/bundle/client-release.json +7 -0
- package/bundle/sealed.json +908 -0
- package/dist/adapters/anthropic.js +151 -0
- package/dist/adapters/completion.js +112 -0
- package/dist/adapters/durable-write.js +34 -0
- package/dist/adapters/files.js +140 -0
- package/dist/adapters/folder-path.js +6 -0
- package/dist/adapters/git-ignore.js +49 -0
- package/dist/adapters/git.js +44 -0
- package/dist/adapters/ignored-files.js +36 -0
- package/dist/adapters/instructions.js +35 -0
- package/dist/adapters/models.js +51 -0
- package/dist/adapters/output-paths.js +92 -0
- package/dist/adapters/prompt-cache.js +28 -0
- package/dist/adapters/public-instructions.js +36 -0
- package/dist/adapters/quality.js +6 -0
- package/dist/adapters/relay-plan.js +15 -0
- package/dist/adapters/release.js +57 -0
- package/dist/adapters/report.js +29 -0
- package/dist/adapters/repository-files.js +199 -0
- package/dist/adapters/repository-root.js +120 -0
- package/dist/adapters/results.js +9 -0
- package/dist/adapters/settings.js +25 -0
- package/dist/adapters/snapshot.js +68 -0
- package/dist/analysis-core/analysis/analysis-flags.js +1 -0
- package/dist/analysis-core/analysis/code-agents/skipped-files.js +1 -0
- package/dist/analysis-core/analysis/finding-quality/config.js +1 -0
- package/dist/analysis-core/analysis/finding-quality/policy.js +1 -0
- package/dist/analysis-core/analysis/headlines/attachment.js +1 -0
- package/dist/analysis-core/analysis/headlines/input.js +1 -0
- package/dist/analysis-core/analysis/headlines/types.js +1 -0
- package/dist/analysis-core/analysis/schemas.js +1 -0
- package/dist/analysis-core/analysis/source-notes/types.js +1 -0
- package/dist/analysis-core/chunks/2PSNOSJ2.js +1 -0
- package/dist/analysis-core/chunks/3227KXHF.js +1 -0
- package/dist/analysis-core/chunks/326F4XNG.js +1 -0
- package/dist/analysis-core/chunks/3MTXB4MK.js +6 -0
- package/dist/analysis-core/chunks/4F6ZIHXU.js +1 -0
- package/dist/analysis-core/chunks/57M4OQJM.js +1 -0
- package/dist/analysis-core/chunks/6YCABS5T.js +1 -0
- package/dist/analysis-core/chunks/724WZMYW.js +2 -0
- package/dist/analysis-core/chunks/74FPPPIG.js +1 -0
- package/dist/analysis-core/chunks/7QDOHWSY.js +27 -0
- package/dist/analysis-core/chunks/BZNHHLNP.js +1 -0
- package/dist/analysis-core/chunks/DTMHXKP6.js +7 -0
- package/dist/analysis-core/chunks/E7TFIHC5.js +1 -0
- package/dist/analysis-core/chunks/EH3QQ3T4.js +1 -0
- package/dist/analysis-core/chunks/EQTIRIMU.js +37 -0
- package/dist/analysis-core/chunks/FSLWD2PE.js +1 -0
- package/dist/analysis-core/chunks/G322LST6.js +1 -0
- package/dist/analysis-core/chunks/HTLIRVP7.js +1 -0
- package/dist/analysis-core/chunks/IBCFGUHI.js +1 -0
- package/dist/analysis-core/chunks/IL2KRP3T.js +1 -0
- package/dist/analysis-core/chunks/J4AXGE5W.js +1 -0
- package/dist/analysis-core/chunks/JF4GYMOZ.js +1 -0
- package/dist/analysis-core/chunks/KEKTZDIK.js +1 -0
- package/dist/analysis-core/chunks/KU5DINLW.js +1 -0
- package/dist/analysis-core/chunks/M7MMAUAK.js +1 -0
- package/dist/analysis-core/chunks/OFBJNHC6.js +1 -0
- package/dist/analysis-core/chunks/ORCYIIHB.js +60 -0
- package/dist/analysis-core/chunks/PVPEY7NF.js +1 -0
- package/dist/analysis-core/chunks/PYKAERZZ.js +1 -0
- package/dist/analysis-core/chunks/QDYMR6KS.js +1 -0
- package/dist/analysis-core/chunks/QPXNXMLC.js +1 -0
- package/dist/analysis-core/chunks/SL27GMEN.js +1 -0
- package/dist/analysis-core/chunks/STZOC7LN.js +1 -0
- package/dist/analysis-core/chunks/T5TREZCQ.js +1 -0
- package/dist/analysis-core/chunks/TDNTU4TF.js +1 -0
- package/dist/analysis-core/chunks/U5HOEVPE.js +1 -0
- package/dist/analysis-core/chunks/UEWL3GMQ.js +1 -0
- package/dist/analysis-core/chunks/VER355VN.js +1 -0
- package/dist/analysis-core/chunks/VFENG4MR.js +1 -0
- package/dist/analysis-core/chunks/VGYWI4X2.js +1 -0
- package/dist/analysis-core/chunks/Y5AUKKYG.js +1 -0
- package/dist/analysis-core/chunks/Y7JGSUOA.js +1 -0
- package/dist/analysis-core/chunks/YVDCJN7D.js +14 -0
- package/dist/analysis-core/chunks/ZAA44GPI.js +1 -0
- package/dist/analysis-core/chunks/ZMUBMYWN.js +1 -0
- package/dist/analysis-core/contracts/requests.js +1 -0
- package/dist/analysis-core/conventions/file-admission.js +1 -0
- package/dist/analysis-core/data/finding-types.js +1 -0
- package/dist/analysis-core/errors.js +1 -0
- package/dist/analysis-core/findings/presentation.js +1 -0
- package/dist/analysis-core/github/repo-key.js +1 -0
- package/dist/analysis-core/import/outside-loader-sources.js +1 -0
- package/dist/analysis-core/index.js +6 -0
- package/dist/analysis-core/llm/cache-policy.js +1 -0
- package/dist/analysis-core/llm/cost.js +1 -0
- package/dist/analysis-core/llm/execution.js +1 -0
- package/dist/analysis-core/llm/output-limit.js +1 -0
- package/dist/analysis-core/llm/slots.js +1 -0
- package/dist/analysis-core/llm/stable-json.js +1 -0
- package/dist/analysis-core/llm/structured-output-error.js +1 -0
- package/dist/analysis-core/map-limit.js +1 -0
- package/dist/analysis-core/requests/answer-formats.js +1 -0
- package/dist/analysis-core/requests/check-diagnostics.js +1 -0
- package/dist/analysis-core/requests/headline-request.js +1 -0
- package/dist/analysis-core/requests/instruction-text.js +1 -0
- package/dist/analysis-core/requests/local-plan.js +1 -0
- package/dist/analysis-core/requests/registry.js +1 -0
- package/dist/analysis-core/requests/schema-descriptions.js +1 -0
- package/dist/analysis-core/requests/shape-finding-input.js +1 -0
- package/dist/analysis-core/requests/template-version.js +1 -0
- package/dist/analysis-core/requests/tools.js +1 -0
- package/dist/analysis-core/settings.js +1 -0
- package/dist/bundle/seal/deserialise.js +75 -0
- package/dist/bundle/seal/encryption.js +25 -0
- package/dist/bundle/seal/metadata.js +69 -0
- package/dist/bundle/seal/open.js +38 -0
- package/dist/bundle/seal/planned-calls.js +20 -0
- package/dist/bundle/seal/signature.js +51 -0
- package/dist/cli/agent-folder.js +17 -0
- package/dist/cli/api-types.js +2 -0
- package/dist/cli/api.js +1 -0
- package/dist/{claude-code-permission.js → cli/claude-code-permission.js} +4 -3
- package/dist/cli/commands/analyze.js +73 -0
- package/dist/cli/commands/login.js +51 -0
- package/dist/cli/completion-recovery.js +18 -0
- package/dist/{context.js → cli/context.js} +8 -14
- package/dist/cli/email-sign-in.js +56 -0
- package/dist/{git.js → cli/git.js} +12 -8
- package/dist/cli/intake-payload.js +18 -0
- package/dist/{main.js → cli/main.js} +23 -12
- package/dist/{mcp.js → cli/mcp.js} +109 -40
- package/dist/cli/output.js +10 -0
- package/dist/cli/relay-check.js +239 -0
- package/dist/cli/relay-preparation.js +31 -0
- package/dist/cli/sign-in-input.js +97 -0
- package/dist/{sign-in.js → cli/sign-in.js} +2 -1
- package/dist/cli/suggested-email.js +10 -0
- package/dist/cli/summary.js +30 -0
- package/dist/contract/cli-api-messages.js +5 -0
- package/dist/contract/cli-refusals.js +22 -0
- package/dist/contract/cli-version.js +1 -0
- package/dist/contract/console-url.js +8 -0
- package/dist/contract/console.js +111 -0
- package/dist/contract/email-sign-in-messages.js +18 -0
- package/dist/contract/messages.js +252 -0
- package/dist/contract/release-key.js +2 -0
- package/dist/contract/runtime-environment.js +37 -0
- package/dist/core/analysis/finding-quality/config.js +4 -0
- package/dist/core/analysis/run-to-end.js +55 -0
- package/dist/core/analysis/structural-run.js +16 -0
- package/dist/gatekeeper/attestation.js +67 -0
- package/dist/gatekeeper/certificate-algorithms.js +18 -0
- package/dist/gatekeeper/certificate-path.js +99 -0
- package/dist/gatekeeper/cli-api.js +174 -0
- package/dist/gatekeeper/client.js +76 -0
- package/dist/gatekeeper/connection-exchange.js +60 -0
- package/dist/gatekeeper/connection.js +140 -0
- package/dist/gatekeeper/console.js +168 -0
- package/dist/gatekeeper/loopback.js +5 -0
- package/dist/gatekeeper/model.js +70 -0
- package/dist/gatekeeper/production-attestation.js +149 -0
- package/dist/gatekeeper/trust/hardware.js +21 -0
- package/dist/gatekeeper/trust/policy.js +42 -0
- package/dist/gatekeeper/trust/production.json +25 -0
- package/dist/setup-pings/client.js +31 -0
- package/dist/setup-pings/contract.js +2 -0
- package/dist/setup-pings/policy.js +3 -0
- package/dist/setup-pings/state.js +261 -0
- package/dist/setup-pings/worker.js +95 -0
- package/dist/transport/base64url.js +9 -0
- package/dist/transport/http-response.js +89 -0
- package/dist/transport/tls-exporter.js +5 -0
- package/package.json +57 -11
- package/LICENSE +0 -1
- package/dist/api-types.js +0 -2
- package/dist/api.js +0 -97
- package/dist/commands/check.js +0 -104
- package/dist/commands/login.js +0 -9
- package/dist/files.js +0 -99
- package/dist/gitignore.js +0 -70
- package/dist/output.js +0 -23
- package/dist/secret-files.js +0 -5
- /package/dist/{browser.js → cli/browser.js} +0 -0
- /package/dist/{commands → cli/commands}/balance.js +0 -0
- /package/dist/{commands → cli/commands}/finding.js +0 -0
- /package/dist/{commands → cli/commands}/logout.js +0 -0
- /package/dist/{credentials.js → cli/credentials.js} +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import{a as ii}from"./QPXNXMLC.js";import{b as B,k as ri}from"./YVDCJN7D.js";import{a as Ro,b as Mt,c as _o,d as Io,e as Po,f as Co,g as At,h as yn,i as oi}from"./TDNTU4TF.js";import{a as si}from"./QDYMR6KS.js";import{a as ai}from"./4F6ZIHXU.js";import{a as ci}from"./VGYWI4X2.js";import{a as li}from"./J4AXGE5W.js";import{a as wn}from"./PYKAERZZ.js";import{A as Xr,B as Qr,C as Yr,D as Zr,E as ge,F as we,G as ei,I as ti,K as ni,a as Pt,b as Ur,c as qr,d as te,e as rt,f as Hr,g as Gr,h as kn,i as it,l as $o,m as vo,n as Eo,o as $e,p as Sn,q as at,r as Wr,s as Vr,t as zr,u as Ct,v as ct,w as lt,x as he,y as pt,z as Jr}from"./7QDOHWSY.js";import{a as G}from"./326F4XNG.js";import{a as dt}from"./IL2KRP3T.js";import{a as nn,b as K,c as on}from"./2PSNOSJ2.js";import{a as Fs,b as Me,c as Ae,d as Ts,e as sn,f as St,g as rn,h as ee,i as fo,j as Rr,l as ue,m as z,n as Cr,o as je,p as Mr,s as ot}from"./G322LST6.js";import{g as Pr,k as M}from"./PVPEY7NF.js";import{d as Ir,e as nt}from"./STZOC7LN.js";import{c as Oe}from"./VFENG4MR.js";import{b as yo,c as _r}from"./UEWL3GMQ.js";import{a as Ce,b as tn,c as W}from"./OFBJNHC6.js";import{a as me,b as Ar,c as Fr,d as st,e as gn,f as Tr,g as Rt,h as De,i as Lr}from"./DTMHXKP6.js";import{a as Dr,b as Br}from"./ZMUBMYWN.js";import{a as _t,b as It,c as jr}from"./ZAA44GPI.js";import{a as N}from"./3227KXHF.js";import{c as Oo,d as Nr}from"./M7MMAUAK.js";import{b as xo}from"./57M4OQJM.js";import{a as bo}from"./IBCFGUHI.js";import{a as Be,e as Kr}from"./KU5DINLW.js";import{$ as Xs,$a as tt,A as Ws,Aa as $t,Ab as be,Ba as or,C as Ot,Ca as ho,D as Vs,Da as go,E as zs,Ea as wo,Fa as pn,Ga as ko,Ha as sr,Ja as vt,Ka as Te,N as Js,Pa as rr,Ra as ir,Sa as ar,Ua as cr,Va as lr,Wa as dr,Xa as pr,Ya as fr,_a as ur,a as X,ab as mr,b as ye,bb as hr,cb as Le,d as j,db as gr,e as dn,eb as Et,f as bt,g as Ze,ga as ae,gb as wr,h as qs,ha as mo,hb as kr,ib as Sr,jb as yr,kb as xr,la as Qs,lb as br,nb as fn,ob as Or,pb as Ne,q as D,qa as Ys,qb as $r,ra as Zs,rb as mn,sa as er,sb as vr,tb as Er,ub as So,v as Hs,va as tr,vb as hn,w as et,wb as xe,xa as nr,ya as fe,z as Gs,zb as V}from"./EQTIRIMU.js";import{b as un}from"./74FPPPIG.js";import{b as xt,f as uo}from"./EH3QQ3T4.js";import{f as Ye}from"./KEKTZDIK.js";import{b as an,c as Ls,d as Ns,f as yt,g as js,h as Ds}from"./FSLWD2PE.js";import{a as Z,b as re}from"./BZNHHLNP.js";import{a as cn,b as Fe,c as ie,d as ln,e as Bs,h as Ks,i as Us}from"./T5TREZCQ.js";var ol={repos:void 0,codeAgents:void 0,modelReader:void 0,codeImportV2: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},sl=Object.freeze(Object.keys(ol));function Mo(e,t){return xt.parse(e.mapped?.[t])}function Rp(e,t){return xt.safeParse(e.mapped?.[t])}function Q(e){return(e.mapped??[]).map((t,n)=>({repoKey:e.repos?.[n]?.key??`repo-${n}`,fragment:Mo(e,n)}))}function ve(e){return Object.fromEntries((e.repos??[]).map(t=>[t.key,new Set(Object.keys(t.files??{}))]))}function Y(e){return Object.fromEntries(sl.filter(t=>Object.hasOwn(e,t)).map(t=>[t,e[t]]))}function ce(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),r=new Set(s.map(({path:c})=>c)).size,i=r?[`${r} ${r===1?"file was":"files were"} skipped, so some findings may be missing.`]:[];return{sources:n,skipped:s,warnings:i}}function Ao(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:r,line:i}=e,c=Object.hasOwn(o,e.path)?o[e.path]:void 0;if(!r||i===null||typeof c!="string")return!1;let a=Ar(c,r,i);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(h=>h.from>=p.sourceLine&&h.to<=(p.sourceEndLine??p.sourceLine)):a.some(h=>h.from<=p.sourceLine&&h.to>=p.sourceLine))}):!1}var rl={"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 di(e){let t={files:{},sources:[],skipped:[]},{agent:n,files:o,allowance:s}=e;if(!e.enabled||!n.codeInputsJson)return t;let r=new Set(s.skipped.map(({path:p})=>p)),i=s.paths.filter(p=>!r.has(p)),c=new Set(i),a=(p,h)=>{t.skipped.some(f=>f.path===p&&f.reason===h)||t.skipped.push({path:p,reason:h})};s.skipped.forEach(({path:p,reason:h})=>{let f=rl[h];f&&a(p,f)});let l=(p,h)=>{let{sourcePath:f,sourceLine:g}=p;if(r.has(f))return!1;if(!c.has(f))return a(f,"File was not admitted for this agent."),!1;let u=Object.hasOwn(o,f)?o[f]:void 0;return typeof u!="string"?(a(f,"Source file is missing."),!1):!Number.isInteger(g)||g<1||g>u.split(`
|
|
2
|
+
`).length?(a(f,"Source line is missing or stale."),!1):p.name.trim()?(t.files[f]=u,t.sources.some(m=>m.kind===h&&m.name===p.name&&m.sourcePath===f&&m.sourceLine===g)||t.sources.push({...p,unitKey:n.unitKey,kind:h}),!0):(a(f,"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 h=qr([p.name],i,o,i);h.length||a(p.sourcePath,`Tool implementation was not admitted or found: ${p.name}.`);for(let f of h){let g=Ur([p.name],[f],o);g.length||a(f,"Tool implementation is missing."),g.forEach(u=>l(u,"tool"))}}if(n.codeInputsJson.contextInputs.forEach(p=>l(p,"context")),n.site){let{path:p,span:h}=n.site,f=Object.hasOwn(o,p)?o[p]:void 0;Number.isInteger(h.to)&&h.to>=h.from&&(typeof f!="string"||h.to<=f.split(`
|
|
3
|
+
`).length)?l({name:n.unitKey,sourcePath:p,sourceLine:h.from,sourceEndLine:h.to},"prompt"):a(p,"Prompt source lines are missing or stale.")}return t}function xn(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=>ce(s.inputs,s.files).sources),o=[...new Map(t.flatMap(s=>s.inputs.flatMap(r=>Object.entries(r.files).flatMap(([i,c])=>{let a=Object.hasOwn(s.files,i)?s.files[i]:void 0;return a!==void 0&&c.startsWith(a)?[{repo:s.repo,path:i,text:be(a),truncated:a!==c}]:[]}))).map(s=>[JSON.stringify([s.repo,s.path,s.text]),s])).values()];return{scopes:t,sources:n,files:o}}function le(e,t,n,o){return{tools:t,rethrow(s){n?.(s),re(s)},available:e!==null,settleStartedOnError:e?.settleStartedOnError,withRetry:s=>le(e?ci(e,s):null,t,n,o),async execute(s,r={}){if(o&&(r={...r,signal:r.signal?AbortSignal.any([o,r.signal]):o}),r.signal?.throwIfAborted(),!e)throw new Error("model unavailable");return"execute"in e?e.execute(s,r):ai(e,t,s,r)}}}function A(e,t,n={},o={}){return e.execute(Pr(t,n,o.maxInputBytes),o)}async function Ee(e){return e.requestTools?e.requestTools():ii(si(await e.instructions()))}var Ft=2,il=10*6e4;function bn(e,t,n){return new Z("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 pi(e){let{data:t,plan:n,progress:o}=e,s=n.passes.length,r={...t.passResults};if(!t.passResults){for(let d=0;d<(t.passCursor??0);d++)r[d]={findings:t.passFindings?.[d],retries:0};t.passRetries&&(r[t.passCursor??0]={retries:t.passRetries})}await o.checkpoint({inspectPlan:n,passResults:r});let i={...t,inspectPlan:n,passResults:r},c=n.passes.map((d,p)=>p).filter(d=>r[d]?.findings===void 0);for(let d of c)if((r[d]?.retries??0)>Ft)throw bn(d,s,r[d].retries);let a;if(await G(e.onePartPerStep?c.slice(0,1):c,e.concurrency,async d=>{if(!(o.elapsedMs()>=il||a))try{let p=r[d]?.retries??0;for(;!a;){o.assertHeld(),o.signal?.throwIfAborted();let h;try{h=await e.run(d,p)}catch(g){if(o.rethrow?.(g),re(g),e.forLocal)throw g instanceof Z?g: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 u={retries:p};if(await o.checkpoint({},{index:d,result:u}),r[d]=u,p>Ft)throw bn(d,s,p);if(e.onePartPerStep)break;await new Promise(m=>setTimeout(m,1e3));continue}let f={findings:h,retries:p};await o.checkpoint({},{index:d,result:f}),r[d]=f;break}}catch(p){a??=p}}),a)throw a;let l=n.passes.every((d,p)=>r[p]?.findings!==void 0);return{...i,...l?{passCursor:s,passRetries:0,passFindings:n.passes.map((d,p)=>r[p].findings)}:{}}}var al=new Set(["system prompt","soul","knowledge","config","tools","mcp"]);function U(e){let t=new Set;for(let o of e.nodes)for(let s of o.files??[])al.has(s.role)&&t.add(s.path);let n=new Set(e.edges.filter(o=>o.kind==="delegates").map(o=>o.to));for(let o of e.nodes)n.has(o.id)&&o.sourceRef&&t.add(o.sourceRef.path);return t}function Re(e){return new Set([...e.nodes,...e.edges].flatMap(t=>t.sourceRef?[t.sourceRef.path]:[]))}var On=6e4,ne=e=>{if(e.length<=On)return e;let t=e.endsWith(mo)?mo:"";return(t?e.slice(0,-t.length):e).slice(0,On)+t};function $n(e,t){let n=[...e].filter(o=>t[o]!==void 0&&ne(t[o])!==t[o]).sort();return n.length===0?null:`${n.length} core file${n.length===1?" was":"s were"} longer than ${On/1e3} KB, so only the first ${On/1e3} KB ${n.length===1?"was":"were"} read: ${n.join(", ")}`}var vn={critical:0,high:1,medium:2,low:3},ui=e=>(e.line??0)>0,En=e=>ui(e)&&!!e.excerpt?.trim();function Fo(e,t){let n=i=>{let c=mn(i);return[c.filter(En).length,c.filter(ui).length,Number(!!i.site&&En({...i.site,excerpt:i.excerpt}))]},[o,s]=[n(e),n(t)],r=o.findIndex((i,c)=>i!==s[c]);return r>=0&&o[r]>s[r]}function fi(e,t,n={}){let o=[];if(n.semanticMatching)for(let s of e){let r=$r({previous:o.map((i,c)=>So(i,String(c))),current:s.map((i,c)=>So(i,String(c))),enabled:!0});for(let i of r.matches){let c=Number(i.previousId),a=s[Number(i.currentId)];Fo(a,o[c])&&(o[c]=a)}for(let i of r.unmatchedCurrent)o.push(s[Number(i.id)])}else for(let s of e.flat()){let r=o.findIndex(i=>vr(i,s));r<0?o.push(s):Fo(s,o[r])&&(o[r]=s)}return o.sort((s,r)=>vn[s.severity]-vn[r.severity]).slice(0,t)}function cl(e,t){let n=vn[e.severity]-vn[t.severity];if(n)return n<0;let o=mn(e).filter(En).length-mn(t).filter(En).length;return o?o>0:Fo(e,t)}function mi(e,t={}){let n=t.deferCap?1/0:24;if(t.dedupe===!1)return e.length<2?e[0]??[]:fi(e,n,t);let o=e.length<2?e[0]??[]:fi(e,1/0,t),s=o.map((a,l)=>o.map((d,p)=>l===p||Er(a,d))),r=new Set,i=new Map;for(let a=0;a<o.length;a++){if(r.has(a))continue;let l=[a];r.add(a);for(let p=0;p<l.length;p++)for(let h=0;h<o.length;h++)r.has(h)||!s[l[p]][h]||(r.add(h),l.push(h));if(!l.every(p=>l.every(h=>s[p][h]))){for(let p of l)i.set(p,o[p]);continue}let d=l.reduce((p,h)=>cl(o[h],o[p])?h:p,a);i.set(a,o[d])}let c=i.size===o.length?o:o.flatMap((a,l)=>i.has(l)?[i.get(l)]:[]);return e.length<2?c:c.slice(0,n)}var hi=e=>e.CF_FINDING_DEDUPE!=="0";var ll=15*6e4;async function gi(e,t){let n=new AbortController,o={...e,execute:(i,c={})=>e.execute(i,{...c,signal:c.signal?AbortSignal.any([c.signal,n.signal]):n.signal})},s,r=new Promise((i,c)=>{s=setTimeout(()=>{let a=new Z("llm","The reading part's model call timed out.");c(a),n.abort(a)},ll)});try{return await Promise.race([Promise.resolve().then(()=>t(o)),r])}finally{clearTimeout(s)}}var dl=N.generate;function pl(e,t){let n=t.qualityConfig;return{template:je("derive",e,n),inputs:{maxFindings:String(hn),graph:JSON.stringify(t.graph,null,2),pass:t.pass??null,codeSources:t.codeSources??[],files:Object.entries(t.files).map(([s,r])=>({path:s,text:be(r)}))},answerFormat:"findings",model:n?.switches.enabled?n.models.derive:dl,limits:{effort:"high"}}}async function wi(e,t,n){n.qualityConfig&&ot(n.qualityConfig,t.tools,e);let o=await A(t,pl(e,n),e);return Ir(o)}function ki(e,t,n){return e.flatMap(o=>{let s=o.site?{path:o.site.path,line:o.site.line,excerpt:o.excerpt}:null,r=[...s?[s]:[],...o.otherSites??[]].filter(l=>t.has(l.path));if(!r.some(l=>n.has(l.path)))return[];let i=o.site&&r[0]===s?0:Math.max(0,r.findIndex(l=>(l.line??0)>0)),c=r[i],a=r.filter((l,d)=>d!==i);return[{...o,site:{path:c.path,line:c.line},excerpt:c.excerpt,otherSites:a}]})}var Si="Some of this agent's files weren't read, so findings may be missing.";var yi=e=>e.CF_READING_PRIORITY!=="0";var Lo=e=>e.split("/").slice(0,-1).join("/"),fl=/(agent|prompt|tool|llm|model)/i,ul=2.5;function ke(e,t){if(!yi(e))return{enabled:!1,tierOf:()=>6};if(t.repos?.some(f=>f.kind==="github"&&cn(f.root)))return ml(e,t,t.repos);let n=t.scopes??(Ze(e)?kn(e,t.paths):void 0),o=t.graph?U(t.graph):new Set,s=new Set(t.graph?.nodes.flatMap(f=>(f.files??[]).filter(g=>g.role==="code"&&X(g.path)).map(g=>g.path))??[]),r=new Set(t.graph?.nodes.flatMap(f=>(f.files??[]).filter(g=>g.role==="system prompt").map(g=>g.path))??[]),i=f=>ye(f)&&(Zs.includes(f.split("/").pop().toLowerCase())||/(^|\/)system_prompt_[^/]+\.md$/i.test(f)||sr.test(f)),c=f=>{if(o.has(f))return 1;if(s.has(f))return 2;let g=ho(e,f,n),u=et(g,{nested:!0});if(u?.reference)return 5;if(u?.definition||nr.test(g))return 4;if(u||/(^|\/)(docs?|references)\//i.test(g)||or.test(f.split("/").pop()))return 5;if($t(g)||go(e,f,n)&&$t(f.split("/").pop())||i(f))return 1;if(X(f)){if(fl.test(f))return ul;if(ko.test(f))return 3}return 6};for(let f of t.paths)c(f)===1&&i(f)&&r.add(f);let a=[...r].flatMap(f=>{let g=Lo(f);return[g,...g?[Lo(g)]:[]]}),l=f=>X(f)&&a.some(g=>Lo(f)===g),d=new Map(t.paths.map(f=>{let g=c(f);return[f,g>2&&l(f)?2:g]})),p=[...d].filter(([f,g])=>g<=2&&X(f)).map(([f])=>f),h=cr(Object.fromEntries(p.flatMap(f=>t.files?.[f]===void 0?[]:[[f,t.files[f]]])),t.paths);for(let f of h)X(f)&&!et(ho(e,f,n),{nested:!0})&&(d.get(f)??6)>2&&d.set(f,2);return{enabled:!0,tierOf:f=>d.get(f)??c(f)}}function ml(e,t,n){let o=new Map;for(let s of n){let r=s.kind==="github"?s.root:void 0,i=t.paths.filter(f=>s.files?.[f]!==void 0&&!o.has(f)),c=f=>ie(f,r)??(s.files?.[f]!==void 0?f:null),a=f=>{let g=f?c(f.path):null;return g===null?null:{path:g}},l=t.graph&&{nodes:t.graph.nodes.map(f=>({...f,sourceRef:a(f.sourceRef),files:f.files?.flatMap(g=>{let u=c(g.path);return u===null?[]:[{...g,path:u}]})})),edges:t.graph.edges.map(f=>({...f,sourceRef:a(f.sourceRef)}))},d=i.flatMap(f=>{let g=c(f);return g===null?[]:[g]}),p=Object.fromEntries(i.flatMap(f=>{let g=c(f);return g===null||t.files?.[f]===void 0?[]:[[g,t.files[f]]]})),h=ke(e,{paths:d,files:p,graph:l});for(let f of i)o.set(f,h.tierOf(c(f)??f))}return{enabled:!0,tierOf:s=>o.get(s)??6}}function hl(e,t){return e.enabled?t.filter(n=>["too-large","total","allowance"].includes(n.reason)&&e.tierOf(n.path)<3).map(n=>n.path):[]}function gl(e){return e.slice(0,3)}function wl(e,t=!1){let n=gl(e);if(!n.length)return;let o=t?". "+Si:", so some findings may be missing";return`${n.join(", ")} ${n.length===1?"was":"were"} left out${o}`}function Tt(e,t){return wl(hl(e,t))}function xi(e,t){return e.enabled&&e.tierOf(t)<3}function yf(e,t,n){let o=D.sourceFetch.codeFileBytes;return e.enabled&&e.tierOf(t)<3&&X(t)&&n>o?{size:o,readBytes:o}:{size:n}}function xf(e,t){return e.enabled&&e.tierOf(t)<3&&X(t)}function No(e){return e.split("/").length-1}function bf(e,t,n){return go(e,t,n)?0:ko.test(t)?1+Math.min(No(t),3)/10:No(t)<=2?2:No(t)<=4?3:4}function Of(e,t){return(e.tier??0)-(t.tier??0)||e.score-t.score||e.size-t.size}function jo(e,t,n,o){return[...e].sort((s,r)=>(o?.enabled?o.tierOf(s)-o.tierOf(r):0)||Number(n.has(r))-Number(n.has(s))||t[s].length-t[r].length||(s<r?-1:1))}function Ke(e,t,n,o){return[...e].sort((s,r)=>(o?.enabled?o.tierOf(s.path)-o.tierOf(r.path):0)||Number(t.has(r.path))-Number(t.has(s.path))||Number(n.has(r.path))-Number(n.has(s.path))||s.text.length-r.text.length)}function Ue(e){let t=[],n=[],o=new Set;for(let s of e)for(let[r,i]of Object.entries(s.files??{})){if(o.has(r)){n.push({repo:s.key,path:r});continue}o.add(r),t.push({repo:s.key,path:r,text:i})}return{all:t,shadowed:n}}function Lt(e){return Object.fromEntries(Ue(e).all.map(t=>[t.path,t.text]))}function kl(e,t){return Object.keys(t).filter(n=>fe(n,{nested:!0})).sort().map(n=>{let o=n.split("/").slice(-2,-1)[0]??"skill",{name:s,description:r}=lt(e,`${o}.md`,t[n]);return{name:s,description:r??""}})}function bi(e,t,n,o,s,r,i){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=ke(e,{paths:Object.keys(o),files:o,graph:s,repos:i}),p=Ke(l.map(g=>({repo:"",path:g,text:c.has(g)?ne(o[g]):o[g]})),c,Re(s),d),h=Object.fromEntries(p.map(g=>[g.path,g.text])),f=r?.enabled?ce(r.inputs,h):void 0;return{files:h,...t.passes.length>1?{pass:{part:n+1,count:t.passes.length,own:a,context:t.passes[n].context??[],skills:kl(e,o)}}:{},read:p.map(g=>g.path),own:a,...f?{codeSources:f.sources,codeSkipped:f.skipped}:{}}}function Oi(e){return e.find(t=>!t.notFoundAt)??e[0]??null}function Sl(e,t){return t.startsWith(`${e}#`)?t.slice(e.length+1):null}function yl(e,t){let n=[];for(let o of e?.nodes??[]){let s=o.kind==="agent"?t?Sl(t,o.id):o.id.slice(o.id.indexOf("#")+1):null;s!==null&&n.push({node:o,unitId:s})}return n}function xl(e,t,n){if(n==null)return e[0];let o=e.flatMap(i=>(i.node.files??[]).flatMap(c=>(c.role==="system prompt"||c.role==="knowledge")&&c.path===t&&c.span?[{c:i,span:c.span}]:[])),s=o.find(i=>i.span&&i.span.from<=n&&n<=i.span.to);if(s)return s.c;let r=null;for(let i of o)i.span&&i.span.to<n&&(!r||i.span.to>r.to)&&(r={c:i.c,to:i.span.to});return r?.c??e[0]}function $i(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)&&Ao({path:e.file,line:e.line??null,excerpt:e.excerpt},[{...n,sources:[o]}],o.unitKey,n.files)).map(o=>o.unitKey)))]}function bl(e,t,n,o){let s=$i(e,n);if(s.length)return{unitKey:s.length===1?s[0]:null,anchors:s,code:!0};let r=e.file?yl(t,e.repo??"").filter(i=>i.node.files?.some(c=>c.path===e.file)):[];return{unitKey:r.length?xl(r,e.file,e.line).unitId:o,anchors:s,code:!1}}function Rn(e,t,n,o){let s=e[0];if(!s)return!0;let r=n.map(d=>({...d,input:{...d.input,files:Object.fromEntries(Object.entries(d.input.files).filter(([p,h])=>typeof d.files[p]=="string"&&h.startsWith(d.files[p])))}})),i=d=>r.filter(p=>!d.repo||!p.repo||p.repo===d.repo),c=i(s),a=$l(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=i(d).filter(f=>!s.repo||!f.repo||f.repo===s.repo),h=a.unitKey?[]:$i(d,p.map(f=>f.input));return l.every(f=>(!h.length||h.includes(f))&&p.filter(g=>g.unitKey===f).every(g=>Ao({path:d.file??"",line:d.line??null,excerpt:d.excerpt??null},[g.input],f,g.files)))})}function vi(e,t,n=!1){let o=n?Us:Ks,s=t?e.filter(r=>r.repoPath&&o(r.repoPath)===t):[];return{rows:s,unitRows:s.filter(r=>r.unitKey)}}function Ol(e,t,n={}){let{rows:o,unitRows:s}=vi(e,t,n.savedRepoPaths);return Oi(s)?.id??o[0]?.id??(e.length===1?e[0].id:null)}function $l(e,t,n,o,s){let r=o?Ol(o,e.repo,s):null,i=o?.find(d=>d.id===r)?.unitKey??null,{unitRows:c}=vi(o??[],e.repo,s.savedRepoPaths);if(o&&(!e.repo||!c.length))return{unitKey:i,anchors:[],code:!1,agentId:r};let a=bl(e,t,n,i);if(!o)return{...a,agentId:null};let l=c.find(d=>d.unitKey===a.unitKey);return{...a,unitKey:a.code?a.unitKey:l?.unitKey??i,agentId:a.unitKey?l?.id??(a.code?null:r):null}}async function Do(e,t){let n=bi(e,t.plan,t.index,t.files,t.reading,t.codeEvidence,t.repos),o=await gi(t.llm,i=>wi(e,i,{graph:t.graph,...n,qualityConfig:t.qualityConfig})),s=ki(o,new Set(n.read),new Set(n.own));if(!t.codeEvidence?.enabled)return s;let r=t.codeEvidence.inputs.flatMap(i=>i.unitKey?[{repo:i.repo,unitKey:i.unitKey,input:i,files:n.files}]:[...new Set(i.sources.map(c=>c.unitKey))].map(c=>({repo:i.repo,unitKey:c,input:i,files:n.files})));return s.filter(i=>Rn([...i.site?[{...i.site,excerpt:i.excerpt}]:[],...i.otherSites??[]].map(c=>({repo:t.codeEvidence?.repoByPath?.[c.path]??null,file:c.path,line:c.line,excerpt:c.excerpt})),t.graph,r,t.codeEvidence?.agentRows))}function _n(e,t,n=15e4,o,s,r){let{all:i,shadowed:c}=Ue(e),a=o??U(t),l={},d=[],p={},h=0,f=ke(r,{paths:i.map(y=>y.path),files:Object.fromEntries(i.map(y=>[y.path,y.text])),graph:t,repos:e});for(let y of Ke(i,a,Re(t),f)){if(!a.has(y.path)&&h+y.text.length>n){d.push(y.path);continue}let k=a.has(y.path)?ne(y.text):y.text;l[y.path]=k,(p[y.repo]??=[]).push(y.path),h+=k.length}let g=vl(l,a),u=[...g>n?[`The agent's core files (${Math.round(g/1e3)} KB) are larger than one reading pass, so they were read in full and nothing else was read`]:[],...[$n(a,Object.fromEntries(i.map(y=>[y.path,y.text])))].filter(y=>!!y)],m=Tt(f,d.map(y=>({path:y,reason:"total"})));m&&u.push(m);let w=s?.enabled?ce(s.inputs,l):void 0;return{files:l,skipped:d,readByRepo:p,shadowed:c,warnings:[...u,...w?.warnings??[]],...w?{codeSources:w.sources,codeSkipped:w.skipped}:{}}}var vl=(e,t)=>Object.entries(e).reduce((n,[o,s])=>n+(t.has(o)?s.length:0),0);import{posix as _i}from"node:path";var El=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Rl=(e,t)=>new RegExp(`(?<![\\w-])${El(t)}(?![\\w-])`).test(e);function He(e,t){return t.name!==null&&Rl(e,t.name)||he(t.paths,[e],n=>n).length>0}function Ei(e,t){let n=e.map(c=>c.paths.map(a=>t[a]).join(`
|
|
4
|
+
`)),o=(c,a)=>He(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 r=new Set,i=[];for(let c=0;c<e.length;c++){if(r.has(c))continue;let a=[],l=[c];r.add(c);for(let d=l.shift();d!==void 0;d=l.shift()){a.push(d);for(let p of s[d])r.has(p)||(r.add(p),l.push(p))}a.sort((d,p)=>d-p),i.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 i.sort((c,a)=>a.bytes-c.bytes||(c.bundles[0].key<a.bundles[0].key?-1:1))}function Ri(e){let t=new Map(e.bundles.map(r=>[r.key,r])),n=new Set,o=r=>e.adjacent[r.key].filter(i=>n.has(i)).length,s=[];for(;t.size>0;){let r=[...t.values()].sort((i,c)=>o(c)-o(i)||e.adjacent[c.key].length-e.adjacent[i.key].length||c.bytes-i.bytes||(i.key<c.key?-1:1))[0];t.delete(r.key),n.add(r.key),s.push(r)}return s}function Ii(e,t,n,o,s){if(e.length<2)return{passes:e};let r=new Set(e.flatMap(l=>l.own)),i=[...r].filter(l=>/\.md$/i.test(l)).sort(),c=l=>[...new Set([...he(i,[n[l]],d=>d),...he(i,[n[l]],d=>_i.relative(_i.dirname(l),d))])];return{passes:e.map(l=>{let d=new Set([...t,...l.own]),p=new Map,h=new Set;for(let m of l.own){let w=new Set;for(let k of o)if(He(n[m],k))for(let b of k.paths.filter(x=>fe(x,{nested:!0})))w.add(b);for(let k of c(m))w.add(k);for(let k of[...w].filter(b=>fe(b,{nested:!0})))for(let b of c(k))w.add(b);for(let k of w)h.add(k);let y=[...w];for(let k=0;k<y.length;k++){let b=y[k];for(let x of c(b))w.has(x)||(w.add(x),y.push(x))}for(let k of w)r.has(k)&&!d.has(k)&&p.set(k,(p.get(k)??0)+1)}let f=[...p.keys()].sort((m,w)=>Number(h.has(w))-Number(h.has(m))||p.get(w)-p.get(m)||(m<w?-1:1)),g=[],u=0;for(let m of f){let w=n[m].length;u+w<=s&&(g.push(m),u+=w)}return{own:l.own,context:g.sort()}})}}import{basename as Pi}from"node:path";function Bo(e,t,n,o){let s=[...n].sort();return{key:e,name:t,paths:s,bytes:s.reduce((r,i)=>r+o[i].length,0)}}function Ci(e,t){let n=U(t),o=new Set(Object.keys(e).filter(a=>!n.has(a))),s=[],r=a=>a.filter(l=>o.delete(l)),i=new Set(t.edges.filter(a=>a.kind==="delegates").map(a=>a.to));for(let a of t.nodes){if(!i.has(a.id)||!a.sourceRef)continue;let l=a.sourceRef.path.replace(/\.md$/i,"")+"/",d=(a.files??[]).filter(g=>g.role==="skill").map(g=>et(g.path,{nested:!0})?.folder).filter(g=>!!g),p=[...o].filter(g=>g.startsWith(l)||d.some(u=>g.startsWith(u+"/"))),h=(a.files??[]).filter(g=>g.role==="reference"||g.role==="skill").map(g=>g.path),f=r([...p,...h]);f.length&&s.push(Bo(l,Pi(l),f,e))}let c=new Map;for(let a of o){let l=et(a,{nested:!0})?.folder;l&&c.set(l,[...c.get(l)??[],a])}for(let[a,l]of c)s.push(Bo(a,Pi(a),r(l),e));for(let a of o)s.push(Bo(a,null,[a],e));return s.sort((a,l)=>a.key<l.key?-1:a.key>l.key?1:0)}var _l=(e,t)=>e.reduce((n,o)=>n+t[o].length,0);function Mi(e,t,n,o){let s=n-t;return e<=n||s<=0?1:Math.min(o,Math.ceil((e-t)/s))}function Il(e,t,n){return e.bytes<=t?[e.bundles]:Ri(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 Pl(e,t){let n=e.split("/").slice(0,-1);for(let o=n.length;o>0;o--){let s=n.slice(0,o).join("/"),r=t.find(i=>i.own.some(c=>c.startsWith(`${s}/`)));if(r)return r}}function Ai(e){let{passMaxBytes:t,maxPasses:n,graph:o}=e,s=U(o),r=Object.keys(e.files).filter(S=>s.has(S)).sort(),i=Object.fromEntries(Object.entries(e.files).map(([S,R])=>[S,s.has(S)?ne(R):R])),c=t-_l(r,i),a=Object.keys(i).filter(S=>!s.has(S)),l=ke(e.settings,{paths:Object.keys(i),graph:o,files:i,repos:e.repos}),d=Re(o),p=jo(a.filter(S=>xi(l,S)),i,d,l),h=new Set(p),f=new Set(o.nodes.flatMap(S=>(S.files??[]).map(R=>R.path))),g=Object.fromEntries(a.filter(S=>!h.has(S)).map(S=>[S,i[S]])),u=Ci(g,o),m=S=>S.name!==null||ye(S.paths[0])&&f.has(S.paths[0]),w=u.filter(S=>!m(S)).flatMap(S=>S.paths),y=[$n(r,e.files)].filter(S=>!!S),k=[],b=[];if(c<=0){y.push("The agent's core files fill a whole reading pass, so nothing else was read");let S=Tt(l,a.map(R=>({path:R,reason:"total"})));return S&&y.push(S),{core:r,passes:[{own:[]}],skipped:[...a].sort(),warnings:y}}for(let S of p){let R=i[S].length,_=b.find(I=>I.bytes+R<=c);!_&&R<=c&&b.length<n&&(_={own:[],bytes:0},b.push(_)),_?(_.own.push(S),_.bytes+=R):k.push(S)}let x=new Set(b);for(let S of Ei(u.filter(m),g)){let R=S.bytes>c,_;for(let I of Il(S,c,i)){let C=I.reduce((L,kt)=>L+kt.bytes,0),P=I.flatMap(L=>L.paths),H=(R&&_&&_.bytes+C<=c?_:void 0)??b.find(L=>(!R||x.has(L))&&L.bytes+C<=c);H?(R&&(_=H),H.own.push(...P),H.bytes+=C):C>c||b.length>=n?k.push(...P):(_={own:[...P],bytes:C},b.push(_))}}b.length===0&&b.push({own:[],bytes:0});let O=jo(w,i,d,l);for(let S of O){let R=C=>C.bytes+i[S].length<=c,_=Pl(S,b),I=_&&R(_)?_:b.find(R);if(!I){k.push(S);continue}I.own.push(S),I.bytes+=i[S].length}let $=b.map(S=>({own:S.own.sort()})),v=Tt(l,k.map(S=>({path:S,reason:"total"})));v&&y.push(v);let E=Ii($,r,e.files,u,e.contextMaxBytes??6e4);return{core:r,passes:E.passes,skipped:k.sort(),warnings:y}}function _e(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 Fi}from"node:crypto";function Ti(e){let t=e.findingQuality;if(!t?.config.switches.codeInputs||t.codeEvidence)return e;let n=[],o={};for(let[s,r]of(e.repos??[]).entries()){let i=r.files??{},c=xt.safeParse(e.mapped?.[s]),a=c.success?c.data.nodes:[],l=e.projectAgents,d=l?.enabled?[...l.byRepo[r.key]??[],...l.codeByRepo?.[r.key]??[]]:[];for(let p of d){if(!p.codeInputsJson)continue;let h=p.codeInputsJson.admittedPaths!==void 0,f={paths:h?[...p.codeInputsJson.admittedPaths]:[],skipped:[]},g=[],u=b=>b.filter(x=>{let O=i[x.sourcePath],$=p.codeInputsJson?.sourceHashes?.[x.sourcePath];return h&&O!==void 0&&$&&Fi("sha256").update(O).digest("hex")===$?!0:(g.push({path:x.sourcePath,reason:h?$?"The source revision differs from the imported source.":"The imported source revision is unknown.":"The imported file admission is unknown."}),!1)}),m={tools:u(p.codeInputsJson.tools),contextInputs:u(p.codeInputsJson.contextInputs)},y=a.find(b=>b.id===p.unitKey)?.files.find(b=>b.role==="system prompt"&&b.span),k=di({agent:{...p,codeInputsJson:m,...y?.span?{site:{path:y.path,span:y.span}}:{}},files:i,allowance:f,enabled:!0});k.skipped.push(...g),n.push({repo:r.key,unitKey:p.unitKey,input:k})}for(let[p,h]of Object.entries(i))o[JSON.stringify([r.key,p])]=Fi("sha256").update(h).digest("hex")}return{...e,findingQuality:{...t,codeEvidence:n,sourceHashes:o}}}function Li(e,t){let n=e.findingQuality;if(!n?.config.switches.codeInputs)return e;let o=(n.codeEvidence??[]).flatMap(r=>ce([r.input],t[r.repo]??{}).skipped.map(i=>({...i,repo:r.repo}))),s=new Set(o.map(r=>JSON.stringify([r.repo,r.path]))).size;return{...e,findingQuality:{...n,readingSkipped:o},warnings:[...new Set([...e.warnings??[],...s?[`${s} ${s===1?"file was":"files were"} skipped, so some findings may be missing.`]:[]])]}}function Ni(e){if(!e.findingQuality?.config.switches.codeInputs)return;let{all:t}=Ue(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(r=>r.repo===o.repo&&r.path===s))),sources:o.input.sources.filter(s=>t.some(r=>r.repo===o.repo&&r.path===s.sourcePath))})),agentRows:e.projectAgents?.agentRows,repoByPath:Object.fromEntries(t.map(o=>[o.path,o.repo]))}}function Uo(e,t,n){return Object.fromEntries(Object.entries(n).map(([o,s])=>[o,Object.fromEntries(s.map(r=>{let i=e.repos?.find(c=>c.key===o)?.files?.[r]??"";return[r,t.core.includes(r)?ne(i):i]}))]))}function ji(e,t,n){if(!e.findingQuality?.config.switches.codeInputs)return;let o=Uo(e,t,n);return e.findingQuality.codeEvidence?.map(s=>({repo:s.repo,unitKey:s.unitKey,enabled:!0,inputs:[s.input],files:o[s.repo]??{},agentRows:e.projectAgents?.agentRows}))}var Ho=e=>e>1?24:hn,Ie=e=>Ho(e.inspectPlan?.passes.length??1);function Cl(e,t,n){let o=_n(e,t,void 0,void 0,void 0,n),s=U(t),r=Object.keys(o.files);return{core:r.filter(i=>s.has(i)),passes:[{own:r.filter(i=>!s.has(i))}],skipped:o.skipped,warnings:o.warnings}}function Go(e,t,n,o){return n?Ai({files:Lt(e),graph:t,passMaxBytes:15e4,maxPasses:4,settings:o,repos:e}):Cl(e,t,o)}function Di(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 Bi(e,t){let{graph:n,llm:o}=t,s=Ti(t.data),r=s.findingQuality?.config,i=s.repos??[],{all:c,shadowed:a}=Ue(i),l=Ni(s),d=Lt(i),p=_e(t.fragments),h=s.inspectPlan??Go(i,p,W(e,s).multiPass,e),f=s.passCursor??0,g=h.passes.length,u=(s.passFindings??[]).map(x=>uo.shape.findings.parse(x)),m={...s,inspectPlan:h},w=t.parallel??tn(e);if(g>1&&t.checkpoint&&(w.enabled||s.passResults)){if(!(s.passResults&&h.passes.every((O,$)=>s.passResults?.[$]?.findings!==void 0)))return{done:!1,data:await pi({data:s,plan:h,progress:{...t.progress,checkpoint:($,v)=>t.progress.checkpoint(v?$:{...Y(m),...$},v)},concurrency:w.concurrency,onePartPerStep:!w.enabled,forLocal:t.forLocal,run:($,v)=>Do(e,{llm:o.withRetry(v),qualityConfig:r,graph:n,plan:h,index:$,files:d,reading:p,codeEvidence:l,repos:i})})};u=h.passes.map((O,$)=>uo.shape.findings.parse(s.passResults[$].findings))}else if(f<g){let x;try{x=await Do(e,{llm:o.withRetry(s.passRetries??0),qualityConfig:r,graph:n,plan:h,index:f,files:d,reading:p,codeEvidence:l,repos:i})}catch(O){if(o.rethrow(O),re(O),t.forLocal)throw O instanceof Z?O:new Error("A findings reading pass failed; no completed report was written.");if(g<2)throw O;let $=s.passRetries??0;if(t.progress.log({level:"warn",code:"analysis.pass_failed",counts:{part:f+1,parts:g,retries:$}}),$<Ft)return{done:!1,data:{...m,passRetries:$+1}};throw bn(f,g,$+1)}if(u=[...u,x],m={...m,passCursor:f+1,passRetries:0,passFindings:u},await t.checkpoint?.(Y(m)),g>1)return{done:!1,data:m}}let y=new Set([...h.core,...h.passes.flatMap(x=>x.own)]),k={},b=ke(e,{paths:c.map(x=>x.path),files:d,graph:p,repos:i});for(let x of Ke(c,U(p),Re(p),b))y.has(x.path)&&(k[x.repo]??=[]).push(x.path);return m.findingQuality&&r?.switches.codeInputs&&(m=Li(m,Uo(m,h,k))),{done:!0,data:m,findings:mi(u,{semanticMatching:r?.switches.semanticMatching,dedupe:hi(e),deferCap:t.forLocal||an(e)}),plan:h,readByRepo:k,shadowed:a}}import{posix as ft}from"node:path";function In(e,t,n,o={}){let s=t.replace(/\[[^\]]*\]\([^)]*\)/g,"").replace(/\b[a-z][a-z\d+.-]*:\/\/[^\s)>]+|\/\/[^\s)>]+/gi,""),r=[...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}))],i=[];for(let c of r){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=ft.normalize(l?a.slice(1):ft.join(ft.dirname(e),a)),h=(l||c.relative||a.startsWith(".")?[d]:[d,ft.normalize(a)]).filter(g=>g!==".."&&!g.startsWith("../")),f=h.find(g=>Object.hasOwn(n,g))??(o.includeMissing?h[0]:void 0);f&&!i.includes(f)&&i.push(f)}if(o.includeNamed)for(let c of Object.keys(n))[c,ft.relative(ft.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))&&!i.includes(c)&&i.push(c);return i}function Ge(e,t,n,o=Ts,s=t){let r=e.split(`
|
|
5
|
+
`),i=Math.max(0,Math.min(r.length-1,(t??1)-1)),c=t===null||r.length<=o*2+1,a=c?0:Math.max(0,i-o),l=c?r.length:Math.min(r.length,Math.max(i,(s??1)-1)+o+1),d=()=>r.slice(a,l).map((f,g)=>`${a+g+1} ${f}`).join(`
|
|
6
|
+
`),p=d();for(;l-a>1&&Buffer.byteLength(d())>n;)i-a>l-i-1?a++:l--;let h=B(d(),n);return{text:h,truncated:h!==p||t!==null&&(t<1||t>r.length)}}function We(e,t,n=0,o="legacy",s){let r=Ml(e,t,n);return o==="whole-file"?Ll(e,t,n,r,s):r}function Ml(e,t,n){let o=[],s=[],r=[],i=sn,c=t.repos.flatMap(l=>{let d=t.fragments.filter(g=>g.repoKey===l.key),p=U(_e(d)),h=new Map(d.flatMap(g=>g.fragment.nodes.flatMap(u=>u.files.map(m=>[m.path,m.role])))),f=g=>["system prompt","soul","knowledge"].indexOf(h.get(g)??"");return[...p].map(g=>({repo:l,path:g,rank:f(g)<0?3:f(g)}))}).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],h=p===void 0?"":p.split(`
|
|
7
|
+
`).map((u,m)=>`${m+1} ${u}`).join(`
|
|
8
|
+
`),f=B(h,i),g=p===void 0||f!==h;r.push({repo:l.key,path:d,line:1,text:f,truncated:g}),i-=Buffer.byteLength(f),g&&o.push({kind:"core-incomplete",repo:l.key,path:d})}r.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(js(l.category)&&p.length<yt(l.category))return s.push({id:`f${n+d+1}`,reason:`${l.category} requires ${yt(l.category)} cited sites; ${p.length} supplied.`}),[];let h=p.map(m=>{let w=t.repos.find(k=>k.key===m.repo),y=w?.files?.[m.path];return y===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:w.key,path:m.path,line:m.line??0,...Ge(y,m.line,Math.floor(St/p.length))}}),f=B(l.title,Math.floor(ee/4)),g=l.category??"",u=B(l.cause,ee-Buffer.byteLength(f)-Buffer.byteLength(g));return[{id:`f${n+d+1}`,title:f,body:u,category:g,sites:h,truncated:u!==l.cause||f!==l.title}]});return{coreFiles:r,findings:a,diagnostics:o,skipped:s}}var de=e=>Buffer.byteLength(JSON.stringify(e)),J=e=>JSON.stringify([e.repo,e.path]),Wo=e=>[...new Map(e.map(t=>[J(t),t])).values()],Al=({repo:e,path:t})=>({repo:e,path:t});function Vo(e,t,n){if(de(n(e))<=t)return e;let o=0,s=Buffer.byteLength(e);for(;o<s;){let r=Math.ceil((o+s)/2);de(n(B(e,r)))<=t?o=r:s=r-1}return B(e,o)}function Fl(e,t){let n=[];for(let s of e)de([...n,s].map(r=>({...r,text:""})))<=sn?n.push(s):t.push({kind:"core-omitted",repo:s.repo,path:s.path});let o=[];for(let[s,r]of n.entries()){let i=n.slice(s+1).map(l=>({...l,text:""})),c=Vo(r.text,sn,l=>[...o,{...r,text:l},...i]),a=r.truncated||c!==r.text;a&&t.push({kind:"core-incomplete",repo:r.repo,path:r.path}),o.push({...r,text:c,truncated:a})}return o}function Tl(e,t){let n=t.repos.find(s=>s.key===e.repo)?.files??{},o=n[e.path];return o===void 0?[]:In(e.path,o,n,{includeMissing:!0,includeNamed:!0,rootRelative:!0}).filter(s=>s!==e.path).sort().map(s=>({repo:e.repo,path:s}))}function Ll(e,t,n,o,s){let r=[...o.diagnostics],i=Fl(o.coreFiles,r),c=o.coreFiles.map(Al),a=e.map($=>{let v=[...$.site?[{repo:$.siteRepo??"",path:$.site.path}]:[],...$.otherSites.map(S=>({repo:S.repo??"",path:S.path}))],E=Wo([...c,...v]);return Wo([...E,...E.flatMap(S=>Tl(S,t))])}),l=$=>t.repos.find(v=>v.key===$.repo)?.files?.[$.path],d=new Set(c.map(J)),p=new Set(o.findings.map($=>$.id)),f=Wo(a.flatMap(($,v)=>p.has(`f${n+v+1}`)?$:[])).filter($=>!d.has(J($))).flatMap($=>{let v=l($);return v===void 0?(r.push({kind:"linked-unavailable",repo:$.repo,path:$.path}),[]):[{...$,line:1,text:v.split(`
|
|
9
|
+
`).map((E,S)=>`${S+1} ${E}`).join(`
|
|
10
|
+
`),truncated:!1}]}),g=[],u=de(f)<=rn;for(let[$,v]of f.entries()){let E=u?rn:Math.floor((rn-de(g))/(f.length-$))-1;if(u||de(v)<=E){g.push(v);continue}let S=o.findings.flatMap(I=>I.sites.filter(C=>J(C)===J(v)).map(C=>({line:C.line||null,cap:Math.floor(St/I.sites.length)}))),R=I=>{let C=new Map;for(let P of S.length?S:[{line:null,cap:St}])for(let H of Ge(l(v),P.line,Math.min(P.cap,I)).text.split(`
|
|
11
|
+
`)){let L=/^(\d+) /.exec(H);L&&H.length>(C.get(Number(L[1]))?.length??0)&&C.set(Number(L[1]),H)}return{...v,text:[...C].sort((P,H)=>P[0]-H[0]).map(([,P])=>P).join(`
|
|
12
|
+
`),truncated:!0}},_=R(St);if(de(_)>E){let I=Math.max(0,Math.floor((E-de({...v,text:"",truncated:!0}))/6/Math.max(1,S.length)));_=R(I)}de(_)<=E&&g.push(_),r.push({kind:"whole-file-incomplete",repo:v.repo,path:v.path})}let m=new Map([...i,...g].map($=>[J($),$])),w=$=>{let v=l($);return v!==void 0&&(!Number.isInteger($.line)||$.line<1||$.line>v.split(`
|
|
13
|
+
`).length)},y=[...o.skipped??[]],k=o.findings.flatMap($=>{let v=$.sites.map(_=>({..._,text:"",truncated:!m.has(J(_))||m.get(J(_)).truncated||w(_)})),E={...$,title:"",body:"",sites:v};if(de(E)>ee-2)return y.push({id:$.id,reason:"The cited paths exceed the serialized claim allowance."}),[];let S=Vo($.title,ee-2,_=>({...E,title:_})),R=Vo($.body,ee-2,_=>({...E,title:S,body:_}));return[{...$,title:S,body:R,sites:v,truncated:$.truncated||S!==$.title||R!==$.body}]}),b=i.length>0&&i.length===o.coreFiles.length&&i.every($=>!$.truncated),x=e.map(($,v)=>{let E=`f${n+v+1}`,S=k.find(_=>_.id===E),R=o.findings.find(_=>_.id===E)?.sites.filter(w).map(J)??[];return{fingerprint:V($),requested:a[v],included:a[v].filter(_=>l(_)!==void 0&&m.has(J(_))),missing:a[v].filter(_=>l(_)===void 0),truncated:a[v].filter(_=>l(_)!==void 0&&(!m.has(J(_))||m.get(J(_)).truncated||R.includes(J(_)))),claimTruncated:S?.truncated??!0,coreComplete:b}}),O={coreFiles:i,citedFiles:g,findings:k,diagnostics:[...new Map(r.map($=>[JSON.stringify($),$])).values()],skipped:y,coverage:x};return O.serializedBytes=s.checkPayloadBytes(O),O}import{createHash as Nl}from"node:crypto";var Ki=e=>Nl("sha256").update(JSON.stringify(e)).digest("hex"),Pn=e=>[...new Set(e)],jl=e=>!e.trim()||/^[\s"'“”‘’]*none found[\s."'“”‘’]*$/i.test(e);function Dl(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 Oe(n,{template:"second-opinion"},"Shadow finding opinion",t.models.secondOpinion,(Ye(t.caps.secondOpinionInputBytes)+t.caps.checkOverheadTokens)*o,t.caps.secondOpinionOutputTokens*o)}function Bl(e){let t=[...e.skipped??[]],n=e.coreFiles.length>0&&e.coreFiles.every(r=>!r.truncated&&r.text.trim()),o=new Map(e.assessments?.map(r=>[r.fingerprint,r]));return{findings:e.findings.filter(r=>{let i=o.get(e.fingerprints?.[r.id]??""),c=e.coverage?.filter(u=>u.fingerprint===e.fingerprints?.[r.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(u=>c[0].included.some(m=>m.repo===u.repo&&m.path===u.path)&&l.some(m=>m.repo===u.repo&&m.path===u.path&&!m.truncated)),p=n&&!r.truncated&&r.sites.length>0&&r.sites.every(u=>!u.truncated&&(a?l.some(m=>m.repo===u.repo&&m.path===u.path&&!m.truncated&&m.text.trim()):u.text.trim()))&&d&&i?.support!=="incomplete",h=e.disputedIds?.includes(r.id)??!1,f=i===void 0||i.weak||i.confidence==="not sure",g=p?!f&&!h?"Strong, uncontested finding needs no shadow check.":null:"Second opinion needs complete fetched evidence.";return g&&t.push({id:r.id,reason:g}),g===null}),skipped:t}}function Kl(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(`
|
|
14
|
+
`).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 r=s.findIndex(a=>Number(a[1])===e.line);if(r<0)return!1;let i=s.slice(r).map(a=>a[2]).join(`
|
|
15
|
+
`),c=i.indexOf(e.quote);return c>=0&&!i.slice(0,c).includes(`
|
|
16
|
+
`)&&me(i,e.quote)===1}):!1}function Ul(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(jl(s)||e.verdict==="drop"&&!e.decisive)return"The shadow verdict has no decisive evidence.";let r=e.quotes.filter(i=>i.side===o);return r.length===0||e.quotes.some(i=>!Kl(i,[...n,...t.sites]))||r.some(i=>!s.includes(i.quote))?"The shadow verdict lacks exact deciding quotes at the supplied file lines.":null}function ql(e,t){return{template:"second-opinion",answerFormat:"opinion",model:t.models.secondOpinion,inputs:{checkTemplate:Cr(t).check,checkInput:e},limits:{maxTokens:t.caps.secondOpinionOutputTokens,thinking:"disabled"}}}async function zo(e,t,n,o){let{findings:s,skipped:r}=Bl(t),{saved:i,...c}=t,a=Ki(c),l=Ki(Ns(o)?n:{config:n,categories:Ls(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:r},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=i?structuredClone(i):d;return{...O,done:!0,verdicts:[],disagreements:[],diagnostics:[...O.diagnostics,p]}}if(i&&(i.inputHash!==a||i.configHash!==l))return{...structuredClone(i),done:!0,verdicts:[],disagreements:[],diagnostics:[...i.diagnostics,"Second opinion snapshot changed or is missing; no replacement calls were made."]};let h=i?structuredClone(i):d;if(h.done)return h;if(h.cursor>=s.length)return{...h,done:!0};if(!e.available)return{...h,done:!0,diagnostics:[...h.diagnostics,"Second opinion provider is unavailable."]};if(!Rt(t.findings,Pn(t.findings.map(O=>O.id))))return{...h,done:!0,diagnostics:[...h.diagnostics,"Second opinion input contains duplicate ids."]};let f=s.slice(h.cursor,h.cursor+n.caps.secondOpinionBatchSize),g=f.map(O=>O.id),u={...t,findings:f,diagnostics:[]};try{ot(n,e.tools,o)}catch{return{...h,done:!0,diagnostics:[...h.diagnostics,"Second opinion prompt changed since its frozen snapshot."]}}let m=ql(u,n),w=0,y=!1,k=n.caps.secondOpinionInputBytes,b;try{let O=await A(e,m,o,{maxInputBytes:k,onSend($){w=$,y=!0,h.estimate=Dl(f.length,n,o),h.coverage.sentIds=Pn([...h.coverage.sentIds,...g])}});b=Co.parse(O).verdicts}catch(O){if(!y){if(O instanceof ri)return{...h,done:!0,diagnostics:[...h.diagnostics,"Second opinion serialized evidence exceeds its priced input budget."]};throw O}M("second-opinion",O,v=>e.rethrow(v));let $=O instanceof Error?O.message:"Unreadable shadow response.";return h.batches.push({ids:g,attempt:h.retries+1,inputBytes:w,rawVerdicts:[],failure:$}),h.diagnostics.push($),h.retries<n.caps.secondOpinionMaxRetries?{...h,retries:h.retries+1}:(h.coverage.failedIds=Pn([...h.coverage.failedIds,...g]),{...h,done:!0})}if(h.batches.push({ids:g,attempt:h.retries+1,inputBytes:w,rawVerdicts:b}),!Rt(b,g))h.diagnostics.push("Shadow verdict ids did not match this batch; every answer in the batch was rejected.");else for(let O of b){let $=f.find(S=>S.id===O.id),v=Ul(O,$,[...t.coreFiles,...t.citedFiles??[]]);if(v){h.diagnostics.push(`${O.id}: ${v}`);continue}h.verdicts.push(O);let E=t.originalVerdicts?.find(S=>S.id===O.id);E&&E.verdict!==O.verdict&&h.disagreements.push({id:O.id,original:E.verdict,shadow:O.verdict,reason:O.reason})}h.coverage.answeredIds=Pn(h.verdicts.map(O=>O.id)),h.coverage.missingIds=s.filter(O=>!h.coverage.answeredIds.includes(O.id)).map(O=>O.id);for(let O of g.filter($=>!h.coverage.answeredIds.includes($)))h.diagnostics.push(`${O}: No validated shadow verdict; the original finding is unchanged.`);let x=h.cursor+f.length;return{...h,cursor:x,retries:0,done:x>=s.length}}async function Jo(e,t,n,o,s){if(s.qualityConfig?.switches.secondOpinion&&s.secondOpinion&&e?.qualityAudit){let r=s.qualityConfig,i=s.secondOpinion.saved??t.qualityAudit?.shadow,c=Ve(e,e.qualityAudit.coverage,n,o,s),a={...We(n,o,0,Cn(r),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}`,V(d)])),assessments:c.assessments},l=await zo(s.secondOpinion.llm,{...a,...i?{saved:i}:{}},r,s.settings);for(;;){let d=Ve(e,c.coverage,n,o,s,l);if(t={...t,qualityAudit:d},await s.onCheckpoint?.(t),l.done||s.secondOpinion.oneBatch)break;l=await zo(s.secondOpinion.llm,{...a,saved:l},r,s.settings)}}return t}function Cn(e){return e?.switches.fullContext?"whole-file":"legacy"}function Hl(e,t,n,o){return e.coverage?e.coverage:t.map((s,r)=>{let i=e.findings.find(h=>h.id===`f${o+r+1}`),c=[...s.site?[{repo:s.siteRepo??"",...s.site}]:[],...s.otherSites],a=[...new Map([...e.coreFiles,...c].map(h=>[JSON.stringify([h.repo,h.path]),{repo:h.repo,path:h.path}])).values()],l=[...e.coreFiles,...i?.sites??[]],d=h=>n.repos.find(f=>f.key===h.repo)?.files?.[h.path],p=h=>l.filter(f=>f.repo===h.repo&&f.path===h.path);return{fingerprint:V(s),requested:a,included:a.filter(h=>d(h)!==void 0&&p(h).length>0),missing:a.filter(h=>d(h)===void 0),truncated:a.filter(h=>{let f=d(h);return f!==void 0&&!p(h).some(g=>!g.truncated&&g.text===f.split(`
|
|
17
|
+
`).map((u,m)=>`${m+1} ${u}`).join(`
|
|
18
|
+
`))}),claimTruncated:i?.truncated??!0,coreComplete:e.coreFiles.length>0&&e.coreFiles.every(h=>!h.truncated)}})}function Ve(e,t,n,o,s={},r){let c=[...s.qualityConfig?.switches.codeInputs?(s.codeEvidence??[]).flatMap(u=>{let m=o.repos.find(w=>w.key===u.repo)?.files??{};return ce([u.input],m).skipped.map(w=>({repo:u.repo,path:w.path}))}):[],...s.qualityConfig?.switches.enabled?s.readingSkipped??[]:[]];t=t.map(u=>({...u,truncated:[...new Map([...u.truncated,...u.requested.filter(m=>c.some(w=>w.repo===m.repo&&w.path===m.path))].map(m=>[JSON.stringify([m.repo,m.path]),m])).values()]}));let a=new Set(e.acceptedIds),l=(e.verdicts??[]).map((u,m)=>({fingerprint:V(n[m]),accepted:a.has(u.id),verdict:u})),d=r?De(n,r.verdicts,{sentIds:r.coverage.sentIds,skipped:r.coverage.skipped,recordAcceptance:!0}):void 0,p=new Set(d?.acceptedIds),h=d?.verdicts?.map((u,m)=>({fingerprint:V(n[m]),accepted:p.has(u.id),verdict:u})),f=r?.coverage.sentIds.map(u=>n[Number(u.slice(1))-1]).filter(Boolean).map(V),g={coverage:t,verdicts:l,assessments:Lr({findings:n,sources:o,coverage:t,verdicts:l,sawCode:s.sawCode,...r?{shadowVerdicts:h??[],shadowRequestedIds:f}:{}}),...r?{shadow:r}:{}};return e.qualityAudit=g,g}var Nt=class extends Error{sent;verdicts;constructor(t,n,o){super(t),this.sent=n,this.verdicts=o}};function Gl(e,t,n){let o=t?.switches.enabled;return{template:je("check",n,t),answerFormat:"check",model:o?t.models.check:Fs,inputs:{checkInput:e},limits:{maxTokens:o?Math.min(t.caps.checkOutputTokens,fo(e.findings.length)):fo(e.findings.length),effort:"medium"}}}async function Wl(e,t,n,o){if(t.findings.length===0)return[];let s=!1,r,i=n?.switches.enabled,c=Gl(t,n,o);try{i&&ot(n,e.tools,o);let a=await A(e,c,o,{maxInputBytes:Rr(t.findings.length,Cn(n)),onSend(){s=!0}});if(r=a.verdicts,!Rt(r,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 Nt(a instanceof Error?a.message:"unreadable response",s,r)}}async function Ui(e,t,n,o,s){if(o?.done)return o;let r=o?{...o,diagnostics:o.diagnostics??[],retries:o.retries??0}:{cursor:0,verdicts:[],diagnostics:[],retries:0,done:!1},i=s.qualityConfig,c=i?.switches.enabled,a=Cn(i),l=c?i.caps.checkBatchSize:Me,d=o&&o.sentIds===void 0?We(t.slice(0,r.cursor),n,0,a,e.tools):void 0,p=o?.sentIds??d?.findings.map(w=>w.id)??[],h=o?.skipped??d?.skipped??[],f=o?.rejectedBatches??[],g=o?.qualityAudit?.coverage??[],u=w=>c?Ve(w,g,t,n,s):void 0;if(r.cursor>=t.length){let w=De(t,r.verdicts,{sentIds:p,skipped:h,rejectedBatches:f,...c?{recordAcceptance:!0}:{}}),y=u(w);return{...r,done:!0,sentIds:p,skipped:h,result:w,...y?{qualityAudit:y}:{}}}let m;try{let w=t.slice(r.cursor,r.cursor+l);if(m=We(w,n,r.cursor,a,e.tools),c&&(g=[...new Map([...g,...Hl(m,w,n,r.cursor)].map(v=>[v.fingerprint,v])).values()]),h=[...new Map([...h,...m.skipped??[]].map(v=>[v.id,v])).values()],!e.available&&m.findings.length)throw new Error("model unavailable");let y=[...r.verdicts,...m.findings.length?await Wl(e.withRetry(r.retries),m,i,s.settings):[]];p=[...new Set([...p,...m.findings.map(v=>v.id)])];let k=Math.min(t.length,r.cursor+l),b=[...new Set([...r.diagnostics,...e.tools.checkDiagnosticsText(m.diagnostics)])],x=k>=t.length,O=x?De(t,y,{sentIds:p,skipped:h,rejectedBatches:f,...c?{recordAcceptance:!0}:{}}):void 0;O&&(b=[...new Set([...b,...O.diagnostics??[]])],O.diagnostics=b);let $=O?u(O):c?{coverage:g,verdicts:[],assessments:[]}:void 0;return{cursor:k,verdicts:y,diagnostics:b,retries:0,done:x,sentIds:p,skipped:h,rejectedBatches:f,...O?{result:O}:{},...$?{qualityAudit:$}:{}}}catch(w){M(je("check",s.settings,i),w,O=>e.rethrow(O));let y=w instanceof Error?w.message:"unreadable response";w instanceof Nt&&w.verdicts&&m&&(f=[...f,{ids:m.findings.map(O=>O.id),verdicts:w.verdicts}]),w instanceof Nt&&w.sent?p=[...new Set([...p,...m?.findings.map(O=>O.id)??[]])]:h=[...h,...m?.findings.map(O=>({id:O.id,reason:`The model was not called: ${y}`}))??[]];let k=[...r.diagnostics,...e.tools.checkDiagnosticsText(m?.diagnostics??[]),y];if(e.available&&r.retries<(c?i.caps.checkMaxRetries:Ae))return{...r,sentIds:p,skipped:h,rejectedBatches:f,diagnostics:k,retries:r.retries+1,...c?{qualityAudit:{coverage:g,verdicts:[],assessments:[]}}:{}};let b=De(t,r.verdicts,{sentIds:p,skipped:h,rejectedBatches:f,failure:gn,...c?{recordAcceptance:!0}:{}});b.diagnostics=k;let x=u(b);return{...r,sentIds:p,skipped:h,rejectedBatches:f,diagnostics:k,done:!0,result:b,...x?{qualityAudit:x}:{}}}}function Vl(e){let t=e.findingCheck?.original??[];if(!e.sourceNotes?.done)return t;let n=new Map(e.sourceNotes.findings.map(o=>[V(o),o.sourceNotes]));return t.map(o=>n.has(V(o))?{...o,sourceNotes:n.get(V(o))}:o)}function qi(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=Vl(e),r=Ve({...o},t.coverage??[],s,{repos:e.repos??[],fragments:[]},{qualityConfig:t.config,codeEvidence:t.codeEvidence,readingSkipped:t.readingSkipped,sawCode:st(e)},t.shadow);return{...e,findingQuality:{...t,...r}}}function Hi(e,t,n){return!W(e,t).findingCheck||n.length===0?t:{...t,findingCheck:{original:n,state:{cursor:0,verdicts:[],diagnostics:[],retries:0,done:!1}}}}async function Gi(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,r;try{let i=t.repos??[],c=Q(t);r=await Ui(n,o.original,{repos:i,fragments:c},o.state,{settings:e,qualityConfig:s,codeEvidence:t.findingQuality?.codeEvidence,readingSkipped:t.findingQuality?.readingSkipped,sawCode:st(t)})}catch(i){M(je("check",e,s),i,d=>n.rethrow(d)),re(i);let c=[...o.state.diagnostics??[],"unreadable source map"],a=De(o.original,o.state.verdicts,{sentIds:o.state.sentIds??[],skipped:o.state.skipped??[],rejectedBatches:o.state.rejectedBatches,failure:gn,...s?.switches.enabled?{recordAcceptance:!0}:{}});a.diagnostics=c;let l=s?.switches.enabled?Ve(a,o.state.qualityAudit?.coverage??[],o.original,{repos:t.repos??[],fragments:[]},{qualityConfig:s,codeEvidence:t.findingQuality?.codeEvidence,readingSkipped:t.findingQuality?.readingSkipped,sawCode:st(t)}):void 0;r={...o.state,diagnostics:c,done:!0,result:a,...l?{qualityAudit:l}:{}}}return{done:r.done,data:{...t,findingCheck:{...o,state:r},...t.findingQuality&&r.qualityAudit?{findingQuality:{...t.findingQuality,...r.qualityAudit}}:{},...r.result?{findingsRaw:r.result.kept,warnings:[...t.warnings??[],...r.result.warnings]}:{}}}}import{createHash as zl}from"node:crypto";function Wi(e,t,n){let o=[e,t.prompt.path,t.prompt.symbol??"",n,t.link?.callExcerpt??""];return zl("sha256").update(o.join("\0")).digest("hex")}var Jl=200,Xl=6e3,Ql=1200,Yl=[3,4,5],jt=e=>Yl.includes(e.score)&&e.prompt.chars>=Jl,Zl=5;function ed(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-Zl);return o.split(`
|
|
19
|
+
`).slice(s).join(`
|
|
20
|
+
`).slice(0,Ql)}function td(e){let{path:t,line:n,symbol:o}=e.prompt;return o?`${t}:${n} (${o})`:`${t}:${n}`}function Dt(e,t,n){let o=Sn(t,n);return{candidate:t,fingerprint:Wi(e,t,o),text:o.slice(0,Xl),usage:ed(t,n),location:td(t)}}var od=.03,Vi=Oe({},{template:"judge-code-prompt"},"Check possible agents in code",N.mechanical,3e3,200).usd,Xo=3,zi=e=>e.replace(/\s+/g," ").trim(),Mn=e=>Math.round(e*1e6);function sd(e){return{template:"judge-code-prompt",answerFormat:"codeJudge",model:N.mechanical,inputs:e,limits:{effort:"medium",maxTokens:200}}}async function Xi(e,t,n){let o=Mn(n),s=await G(t,Xo,async r=>{if(!e.available)return{fingerprint:r.fingerprint,why:"unavailable"};if(o+Mn(Vi)>Mn(od))return{fingerprint:r.fingerprint,why:"limit"};o+=Mn(Vi);try{let i=await A(e,sd({location:r.location,text:r.text,usage:r.usage,at:{path:r.candidate.prompt.path,line:r.candidate.prompt.line}}));return{fingerprint:r.fingerprint,isPrompt:i.isSystemPrompt,name:i.isSystemPrompt?zi(i.name).slice(0,40).trim():"",reason:zi(i.reason),model:N.mechanical}}catch(i){return M("judge-code-prompt",i,c=>e.rethrow(c)),{fingerprint:r.fingerprint,why:"unavailable"}}},e);return{verdicts:s.filter(r=>"isPrompt"in r),failed:s.filter(r=>"why"in r),spentUsd:o/1e6}}function An(e,t){return{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 Qi(e,t){let{candidates:n,files:o,repoKey:s,stored:r,flags:i}=t,c=i.scan&&i.model&&t.hasClient,a=[],l=[],d=[],p=Math.max(0,6-(t.alreadyDue??0)),h=Math.min(p,Math.max(0,ge(e,{modelReader:t.modelReader??!1,codeImportV2:t.codeImportV2})-t.agentCountSoFar));for(let f of n){let g=c&&jt(f)?Dt(s,f,o):null;!g||!g.text||r.has(g.fingerprint)?d.push(f):a.length<h?a.push(g):a.length>=p?l.push({candidate:f,fingerprint:g.fingerprint}):d.push(f)}return{due:a,overCap:l,ineligible:d}}function Yi(e,t,n){let o=new Map(t.map(i=>[i.fingerprint,i])),s=new Map(n.failed.map(i=>[i.fingerprint,i.why])),r={...An(e,n.scanInfo),possible:[]};for(let i of e.possible){let{fingerprint:c}=Dt(n.repoKey,i,n.files),a=o.get(c),l=s.get(c);a?.isPrompt?r.agents.push({candidate:i,confirmedBy:{model:a.model,name:a.name}}):a?r.rejected.push({candidate:i,reason:a.reason,model:a.model}):l?r.unchecked.push({candidate:i,why:l}):r.possible.push(i)}return r}function Zi(e,t,n,o=""){let s=new Map;if(e?.enabled&&e.grouped){let c=new Map(Sr(e,t).flatMap(d=>d.keys.map(p=>[p,d.node.id]))),a=new Map,l=(d,p)=>JSON.stringify([kr(d,t),p]);for(let d of e.byRepo[t]??[]){let p=d.codeInputsJson?.step;if(!(!d.groupKey||!p))for(let h of[p.at,p.prompt].filter(f=>f!==void 0)){let f=l(h.path,h.line),g=a.get(f)??new Set;g.add(c.get(d.unitKey)),a.set(f,g)}}for(let d of n.nodes){if(d.kind!=="agent"||c.has(d.id))continue;let p=d.files.filter(g=>g.role==="system prompt"&&g.span).map(g=>({path:g.path,line:g.span.from})),h=p.length?p:d.sourceRef?[{path:d.sourceRef.path,line:d.sourceRef.line??1}]:[],f=new Set(h.flatMap(g=>[...a.get(l(g.path,g.line))??[]]));f.size&&s.set(d.id,f.size===1?[...f][0]:null)}}let r={...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}]:[]})},i=yr(e,t,r,o);return{fragment:{...r,nodes:[...r.nodes,...i.nodes],edges:[...r.edges,...i.edges]},files:i.files,addedNodes:i.nodes}}var Fn=e=>e.CF_CODE_PROMPT_LOADERS!=="0";var ta=40,Tn=10,ea=/(agent|prompt|llm|model|chain|fix|plan|assist|bot|ai)/i,rd=new Set(["agent","agents","prompt","prompts","system","instructions"]);function Yo(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").split(/[^a-zA-Z]+/).map(t=>t.toLowerCase()).filter(t=>t.length>=4&&!rd.has(t))}function id(e){let t=e.filter(s=>Ws(s.rel)&&Gs.test(s.rel.slice(0,s.rel.lastIndexOf("/"))));if(t.length<2)return;let n=new Set(t.flatMap(s=>Yo(s.rel.split("/").at(-1).replace(/\.[^.]+$/,"")))),o=s=>s.some(r=>[...n].some(i=>r.startsWith(i)||i.startsWith(r)));for(let s of e){let r=s.rel.split("/"),i=r.pop().replace(/\.[^.]+$/,"");s.promptRank=qs(s.rel)?o(Yo(i))?0:o(r.flatMap(Yo))?1:2:2}}function ad(e,t,n){let o=n?Number(Ot(t.rel))-Number(Ot(e.rel)):0;if(o)return o;let s=(e.promptRank??2)-(t.promptRank??2);if(s)return s;let r=ea.test(e.rel)?0:1,i=ea.test(t.rel)?0:1;if(r!==i)return r-i;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 na(e,t,n="",o=!1){let s=[],r=[],i=new Map(t.map(h=>[h.path,h.size]));for(let h of t){let f=ae(e,h,{purpose:"code-scan",route:"github",root:n,listing:i});f.admitted||r.push({path:h.path,reason:f.reason}),(f.admitted||f.reason==="too-large")&&s.push({entry:h,rel:ie(h.path,n),tooLarge:!f.admitted})}Fn(e)&&id(s),s.sort((h,f)=>ad(h,f,Ze(e)));let c=[],a=[],l=0,d=0,p=!1;for(let{entry:h,tooLarge:f}of s){if(f){l+=1,o&&a.push({path:h.path,reason:"too-large"});continue}if(c.length>=D.codeScan.files||d+h.size>D.codeScan.bytes){p=!0,r.push({path:h.path,reason:"scan-limit"}),o&&a.push({path:h.path,reason:"scan-limit"});continue}c.push(h),d+=h.size}return{plan:c,total:s.length,skippedLarge:l,truncated:p,refused:r,...o?{skippedFiles:a}:{}}}function Zo(e){return Hs(e,"CF_IMPORT_SCOPED_SCAN")}function Ln(e,t,n,o="bare"){if(!Zo(e))return;let s=Hr(e,t,n).filter(c=>!c.convention&&(!c.markerPath||c.scope.key===null&&o!=="agents"&&o!=="prompt")).flatMap(c=>c.paths);if(!s.length)return s;let r=cn(n),i=new Set(s);for(let c of t){let a=ie(c,r);a!==null&&!a.includes("/")&&Ot(c)&&i.add(c)}return[...i]}function oa(e,{paths:t,root:n,scanFlag:o,marker:s}){let r={scan:!1,markerToRead:null};if(!o)return r;let i=te(e,t,n);if(i.configPath&&s===null)return{scan:!1,markerToRead:i.configPath};let c=Ln(e,t,n,s);return c?{scan:c.length>0,markerToRead:null,scanPaths:c}:bt({usage:"scan",codeAgentsFound:!1,otherDefinitions:rt(i),codeImportV2:j(e)})==="prompt"?r:{scan:s!=="agents"&&s!=="prompt",markerToRead:null}}function ze(e,t){if(t.phase==="read"){let i=Jr(t.text??"");if(t.pending.scanPaths){let c=pt(t.text??"").config,a=t.pending.markerPath.split("/").slice(0,-1).join("/"),l=new Set(c?Qr(e,c,a):[]),d=i==="bare"?t.pending.scanPaths:(t.pending.scanPathsIfExplicit??[]).filter(p=>!l.has(p));return{kind:"settled",markerPath:t.pending.markerPath,markerKind:i,scan:d.length>0,scanPaths:d}}return{kind:"settled",markerPath:t.pending.markerPath,markerKind:i,scan:t.pending.scanIfBare&&i==="bare"}}let{paths:n,root:o,scanFlag:s}=t,r=oa(e,{paths:n,root:o,scanFlag:s,marker:null});if(!s)return{kind:"off"};if(r.markerToRead){let i=oa(e,{paths:n,root:o,scanFlag:s,marker:"bare"});return{kind:"marker",markerPath:r.markerToRead,scanIfBare:i.scan,...i.scanPaths?{scanPaths:i.scanPaths,scanPathsIfExplicit:Ln(e,n,o,"agents")}:{}}}return{kind:"settled",markerPath:null,markerKind:null,scan:r.scan,...r.scanPaths?{scanPaths:r.scanPaths}:{}}}function Nn(e,t,n="",o=!1,s){return cd(e,t,n,o,s).state}function cd(e,t,n="",o=!1,s=Ln(e,t.map(r=>r.path),n)){let r=Ze(e),i=Fn(e),c=s&&new Set(s),{plan:a,total:l,skippedLarge:d,truncated:p,skippedFiles:h,refused:f}=na(e,c?t.filter(g=>c.has(g.path)):t,n,o);return{state:{plan:a,cursor:0,hits:[],total:l,skippedLarge:d,truncated:p,...h?{skippedFiles:h}:{},...r?{sdk:{layouts:!0}}:{},...ar(e)?{}:{promptFunctions:!1},...i?{}:{promptLoaders:!1}},refused:f}}function Bt(e){return e.cursor>=e.plan.length}async function sa(e,t,n={batch:ta,parallel:Tn}){let o=e.plan.slice(e.cursor,e.cursor+n.batch),s=await G(o,n.parallel,t),r=e.sdk&&{...e.sdk,openaiAgents:e.sdk.openaiAgents===!0||o.some((l,d)=>s[d]!==null&&Vs(l.path,s[d]))},i=o.map((l,d)=>s[d]===null?null:ir(l.path,s[d],{sdk:r,promptFunctions:e.promptFunctions!==!1,promptLoaders:e.promptLoaders!==!1})),c=i.filter(l=>l!==null),a=e.skippedFiles&&[...e.skippedFiles,...o.filter((l,d)=>i[d]===null).map(({path:l})=>({path:l,reason:"unreadable"}))];return{...e,cursor:e.cursor+o.length,hits:[...e.hits,...c],...a?{skippedFiles:a}:{},...r?{sdk:r}:{}}}function ra(e){return{...rr(e.hits),...e.skippedFiles?{skippedFiles:e.skippedFiles}:{}}}function Dh(e){return{scanned:e.hits.length,total:e.total,truncated:e.truncated,skippedLarge:e.skippedLarge}}function Kt(e,t,n,o){if(!it(e))return null;let s=Gr(e,[...o.sizes.keys()],o.root);return Wr(e,t.map(r=>{let i=Te(r.prompt),c=o.modelOverrides?.includes(i);return{id:i,scope:s.ownerOf(r.prompt.path)??s.scopes[0],ownFiles:c?$e({...r,modelId:null},[]):$e(r,n),toolCall:Pt(r)}}),{...o,scopes:s})}function jn(e){return e.refused.filter(t=>t.reason!=="other-agent"&&t.reason!=="provider-transport")}var ia=24;function Dn(e,t,n,o=!1,s=new Map,r=j(e),i={files:{}}){let c=ld(e,t,n,o,s,r);if(!it(e))return c;let a=vo(s,i.replacementBytes),l=Kt(e,c.strong,t.repoModelIds,{...i,sizes:n,total:a}),d=new Set(l.flatMap(y=>y.files.map(k=>k.path))),p=Kt(e,c.window,t.repoModelIds,{...i,sizes:n}),f=[...new Set(p.flatMap(y=>y.files.map(k=>k.path)))].reduce((y,k)=>y+(d.has(k)||i.replacementBytes?.has(k)?0:s.get(k)??0),0),g={left:Math.min(a.left+f,D.candidateFetch.check),chosen:d,replacementBytes:i.replacementBytes,wholeBytesLeft:D.candidateFetch.check},u=Kt(e,c.window,t.repoModelIds,{...i,sizes:n,total:g}),m=[...l,...u],w=K(c.refused,...m.map(jn));return{...c,paths:[...new Set(m.flatMap(y=>y.files.map(k=>k.path)))],manifests:m,refused:w,skippedFiles:K(c.skippedFiles,...m.map(jn))}}function ld(e,t,n,o,s,r){if(r)return dd(e,t,n,s);let i=new Set,c=[],a=[],l=x=>{let O=ae(e,{path:x,size:n.get(x)},{purpose:"pointer",route:"github"});return O.admitted||a.push({path:x,reason:O.reason}),O},d=[],p=0,h=x=>{d.length<10?d.push(x):p++},f=(x,O)=>{if(!x||!l(x).admitted)return!1;if(i.has(x))return!0;let $=n.get(x);return $===void 0||$>O.left?!1:(O.left-=$,i.add(x),c.push(x),!0)},g=x=>[x.link?.callPath,x.link?.wrapper?.path,x.modelId?.path],u={left:D.candidateFetch.strongPrompts},m=[],w=[];for(let[x,O]of t.strong.entries()){if(m.length>=ge(e,{modelReader:o,codeImportV2:r}))break;if(u.left<=0){let S=t.strong.slice(x);w.push(...S),p+=S.length;break}let $=n.get(O.prompt.path),v=l(O.prompt.path);if(!v.admitted&&v.reason!=="too-large"){w.push(O);continue}let E=$===void 0||!v.admitted;!E&&f(O.prompt.path,u)?m.push(O):(w.push(O),h({candidate:O,path:O.prompt.path,kind:E?"prompt-too-large":"prompt-over-limit"}))}let y={left:D.candidateFetch.strongExtras};for(let x of m)for(let O of g(x)){if(!O)continue;let $=l(O);!$.admitted&&$.reason!=="too-large"||f(O,y)||h({candidate:x,path:O,kind:"extra"})}let k={left:D.candidateFetch.check},b=t.possible.filter(jt).slice(0,ia).filter(x=>{if(!f(x.prompt.path,k))return!1;for(let O of g(x))f(O,k);return!0});return t.repoModelIds.length===1&&(m.length>0||b.length>0)&&f(t.repoModelIds[0].path,y),{paths:c,strong:m,window:b,notRead:d,notReadMore:p,skipped:w,refused:K(a)}}var aa=(e,t,n,o=!1,s=new Map,r=j(e))=>Dn(e,t,n,o,s,r).paths;function dd(e,t,n,o){let s=vo(o),r=[],i=[],c=[],a=[],l=[],d=[],p=0,h=m=>{d.length<10?d.push(m):p++},f=m=>{for(let w of m)r.includes(w)||r.push(w)};for(let m of t.strong){if(i.length>=ge(e,{modelReader:!1,codeImportV2:!0}))break;let w=n.get(m.prompt.path),y=ae(e,{path:m.prompt.path,size:w},{purpose:"pointer",route:"github"});if(y.admitted||l.push({path:m.prompt.path,reason:y.reason}),!y.admitted&&y.reason!=="too-large"){c.push(m);continue}let k=w===void 0||!y.admitted;if(k||!s.chosen.has(m.prompt.path)&&w>s.left){c.push(m),a.push({path:m.prompt.path,reason:w===void 0?"missing":k?"too-large":"total"}),h({candidate:m,path:m.prompt.path,kind:k?"prompt-too-large":"prompt-over-limit"});continue}let b=$e(m,t.repoModelIds).map(({path:O})=>O),x=at(e,{ownPaths:b},{files:{},sizes:n,total:s});l.push(...x.refused),i.push(m),f(x.paths),a.push(...x.skipped),x.skipped.forEach(({path:O})=>h({candidate:m,path:O,kind:"extra"}))}let g=D.candidateFetch.check,u=t.possible.filter(jt).slice(0,ia).filter(m=>{let w=$e(m,t.repoModelIds).map(({path:v})=>v),y=w.filter(v=>!s.chosen.has(v)),k=n.get(m.prompt.path),b=ae(e,{path:m.prompt.path,size:k},{purpose:"pointer",route:"github"});if(b.admitted||l.push({path:m.prompt.path,reason:b.reason}),k===void 0||!b.admitted||!s.chosen.has(m.prompt.path)&&k>g)return!1;let x=new Set(s.chosen),O=at(e,{ownPaths:w},{files:{},sizes:n,total:{left:Math.min(g,s.left),chosen:s.chosen}});if(l.push(...O.refused),!O.paths.includes(m.prompt.path))return!1;let $=y.filter(v=>!x.has(v)&&O.paths.includes(v)).reduce((v,E)=>v+n.get(E),0);return g-=$,s.left-=$,f(O.paths),!0});return{paths:r,strong:i,window:u,notRead:d,notReadMore:p,skipped:c,skippedFiles:a,refused:K(l)}}var pd=10,fd=2e5;function ud(e,t,n,o,s,r){let i=new Set(Dn(e,t,n,o,s,r).window),c=[],a=0;for(let[l,d]of t.possible.entries())if(!(l>=pd&&!i.has(d))){if(a+=JSON.stringify(d).length+1,a>fd)break;c.push(d)}return c}var md=1,hd=2;function ca(e,t,n,o=!1,s=new Map,r=j(e)){let i=ge(e,{modelReader:o,codeImportV2:r})+10,c=t.omitted??{strong:0,possible:0},a=Dn(e,t,n,o,s,r),l=new Set(a.skipped),d=t.notRead!==void 0,p=t.strong.filter(f=>!l.has(f)),h=ud(e,t,n,o,s,r);return{...t,strong:p.slice(0,i),possible:h,callsWithoutPrompt:t.callsWithoutPrompt.slice(0,md),repoModelIds:t.repoModelIds.slice(0,hd),omitted:{strong:c.strong+Math.max(0,p.length-i),possible:c.possible+Math.max(0,t.possible.length-h.length)},...r&&(!d||t.skippedFiles)?{skippedFiles:K(t.skippedFiles,d?[]:a.skippedFiles)}:{},notRead:d?t.notRead:a.notRead,notReadMore:d?t.notReadMore??0:a.notReadMore}}var la=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",da=e=>new Map(e.map(t=>[t.path,t.size])),gd=(e,t,n=!1,o=new Map,s=j(e))=>ca(e,ra(t),da(t.plan),n,o,s),pa=e=>e.strong.length===0&&e.possible.length===0;function fa(e,t){let{paths:n,entries:o,root:s,scanFlag:r,modelReader:i,codeImportV2:c,recordSkips:a=!1}=t,l=ze(e,{phase:"start",paths:n,root:s,scanFlag:r});if(l.kind==="marker"){let d=l.scanIfBare,p=d?Nn(e,o,s,a,l.scanPaths):void 0;return p&&l.scanPaths&&(p.markerDecision=l,p.explicitMarkerScan=Nn(e,o,s,a,l.scanPathsIfExplicit??[])),{kind:"marker",markerPath:l.markerPath,scanNeeded:d,...p?{scan:p}:{}}}return l.kind==="off"||!l.scan?{kind:"none"}:{kind:"scan",...Bn(e,{scan:Nn(e,o,s,a,l.scanPaths)},i,c)}}function ua(e,t,n){return{scan:{...t,hits:[]},ranked:gd(e,t,n.modelReader,n.alreadyRead,n.codeImportV2)}}async function ma(e,t,n,o){let s=await sa(t,n,o.size);if(!Bt(s))return{scan:s,selection:null};let{scan:r,ranked:i}=ua(e,s,o);return{scan:r,selection:{ranked:i,paths:aa(e,i,da(s.plan),o.modelReader,o.alreadyRead,o.codeImportV2),refused:s.refused??[]}}}function Bn(e,t,n=!1,o=j(e)){let{scan:s}=t;return!s||!Bt(s)||t.ranked?t:{...t,...ua(e,s,{modelReader:n,alreadyRead:new Map,codeImportV2:o})}}function ha(e,t,n,o){let s=new Map(n.map(a=>[a.path,a])),r=new Set(o),i=[],c=[];for(let a of t){let l=s.get(a);if(!l||r.has(a))continue;r.add(a);let d=ae(e,l,{purpose:"pointer",route:"github"});d.admitted?i.push(l):c.push({path:a,reason:d.reason})}return{entries:i,refused:c}}function Ut(e,t,n,o,s=1/0){let r=ha(e,n,o,new Set(t.filter(p=>p.readBytes===void 0).map(p=>p.path))),i=s,c=r.entries.filter(p=>p.size>i?(r.refused.push({path:p.path,reason:"total"}),!1):(i-=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:r.refused}}function qt(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"secret-file":return Xs(e.path);case"claude-fallback":return"no dedicated prompt file found; used CLAUDE.md as the system prompt";case"no-prompt":return`no system prompt found (looked for ${wo}); 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 oe(e,t){switch(e.code){case"unreadable-crew":return`${t}: ${qt(e)}`;case"duplicate-agent":case"agent-cap":return`${t}: ${qt(e)}`;case"invalid-config":return`${t}: counterfact.json is not valid JSON; ignored`;case"pointer-owned-by-subagent":return`${t}: ${qt(e)}`;case"pointer-missed":return null;case"secret-file":return null;case"claude-fallback":return`${t}: no system prompt file; using ${Ys}`;case"no-prompt":return e.detail==="no-conventions"?`${t}: no agent conventions found (looked for ${pn})`:`${t}: ${e.folderAgentsFound?"the root agent has ":""}no system prompt file (looked for ${wo})`;case"orphan-skill":return`${t}: ${qt(e)}`;case"frontmatter":return fe(e.path,{nested:!0})?null:`${t}: ${qt(e)}`}}import{basename as Pa}from"node:path";import{posix as yd}from"node:path";import{basename as wa}from"node:path";function pe(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"agent"}function Kn(e,t,n){let o=new Set(t);return s=>{let r=`${e}${pe(s)}`,i=r;if(o.has(i)){let c=2;for(;o.has(`${r}-${c}`);)c++;i=`${r}-${c}`,n(s,i)}return o.add(i),i}}var wd=new Set(["system","prompt","prompts","instruction","instructions"]);function ga(e){let t=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9]+/).filter(n=>n&&!wd.has(n.toLowerCase())).map(n=>n.toLowerCase());return t.length?t.join(" ").replace(/^./,n=>n.toUpperCase()):null}function Un(e,t){let{prompt:n,link:o}=e;if(o?.kind==="L1"&&o.shortLabel)return o.shortLabel;let s=n.symbol?ga(n.symbol):null;if(s)return s;if(o?.shortLabel)return o.shortLabel;let r=n.enclosing?ga(n.enclosing):null;return r||t||`${wa(n.path).replace(/\.[^.]*$/,"")}:${n.line}`}function ka(e,t,n){let o=t?`${pe(wa(t))}-`:"";return Kn(o,[],(s,r)=>{n.push(`${e}: two agents are named ${s}; the second is ${r}`)})}var Ht=e=>`${e.prompt.path}:${e.prompt.line}`,Sa=(e,t,n)=>`${e} ${e===1?t:n}`;function qn(e,t,n,o){let s=n.codeImportV2??j(e),r={modelReader:n.modelReader??!1,codeImportV2:s},i=ge(e,r),c=`${n.repoKey}: `,a=[],{kept:l,leftOut:d}=we(e,t.agents,r),p=t.agents.length+t.omitted.strong;if(p>i){let u=d.slice(0,10).map(({candidate:y})=>Ht(y)),m=p-i-u.length,w=[...u,...m>0?[`and ${m} more`]:[]].join(", ");a.push(ei(e,r,{kind:"scan",repoKey:n.repoKey,found:p,list:w}))}l.forEach(({candidate:u,confirmedBy:m},w)=>{m&&a.push(`${c}${o[w]}: included on ${m.model}'s reading of ${Ht(u)} \u2014 the code alone was not conclusive`)}),s&&n.reportSkippedFiles!==!1&&a.push(...on(nn(t),t.skippedFiles?0:t.notReadMore));for(let u of s?[]:t.notRead){let m=Un(u.candidate,null);u.kind==="prompt-too-large"?a.push(`${c}${m}: its prompt file ${u.path} is too large to read (over ${D.codeScan.fileBytes/1e3} KB), so it wasn't added as an agent`):u.kind==="prompt-over-limit"?a.push(`${c}${m}: its prompt file ${u.path} is past the limit of what one run reads, so it wasn't added as an agent`):a.push(`${c}${m}: ${u.path} was not read because the read limit was reached; the agent is added without it`)}!s&&t.notReadMore>0&&a.push(`${c}${Sa(t.notReadMore,"more file was","more files were")} skipped or not read and not listed here`);let h=t.agents.length===0?t.callsWithoutPrompt[0]:void 0;h&&a.push(`${c}found model calls (${h.path}:${h.line}) but no system prompt they send \u2014 point counterfact.json "prompt" at it`);let f=[...t.rejected.map(u=>`${c}not an agent prompt, per ${u.model}: ${Ht(u.candidate)} \u2014 ${u.reason}`),...t.unchecked.map(u=>{let m=u.why==="limit"?`the per-analysis limit of ${6} checks was reached`:"the model check was unavailable; the code alone was not conclusive";return`${c}possible agent prompt not checked: ${Ht(u.candidate)} \u2014 ${m}`}),...t.possible.map(u=>`${c}possible agent prompt not included: ${Ht(u)}${u.prompt.symbol?` (${u.prompt.symbol})`:""} \u2014 nothing in the scanned code sends it to a model`)];a.push(...f.slice(0,10));let g=Math.max(0,f.length-10)+t.omitted.possible;return g>0&&a.push(`${c}${Sa(g,"more possible agent prompt is","more possible agent prompts are")} not listed here`),t.truncated&&(!s||!t.skippedFiles?.some(({reason:u})=>u==="scan-limit"))&&a.push(`${c}scanned ${t.scanned} of ${t.total} code files (the ${D.codeScan.files}-file / ${D.codeScan.bytes/1e6} MB budget); agents defined in the rest were not looked for`),a}function ya(e,t,n,o,s){return t.map(r=>({...r,tools:r.manifest&&it(e)?r.tools:$o(e,{ownPaths:n[r.unitKey]??[],toolCall:r.toolCall},o,s).tools}))}function es(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 kd(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 Sd(e,t,n){if(!t.forImport&&!t.forLocal)return n;let o=n.candidate.prompt,s=i=>i.kind==="file"?null:i.symbol??`line ${i.span.from}`,r=kd(e.agents,o);return[...t.importCandidates??[],...e.agents].find(({candidate:i})=>i.prompt.path===o.path&&i.prompt.span.from===o.span.from&&(!t.codeImportV2||s(i.prompt)===s(o)&&(!r||i.prompt.start===o.start)))??n}function xa(e,t,n){let{codeImportV2:o}=n,s=[],r=ka(n.repoKey,n.root,s),i=[...nn(t)],c=[],a=new Map(Object.entries(n.files).map(([m,w])=>[m,Buffer.byteLength(w)])),{kept:l}=we(e,t.agents,{modelReader:n.modelReader,codeImportV2:o}),d=it(e),p=l.map(({candidate:m},w)=>d&&!es(n,w).model?m.manifest:void 0),h=d&&p.some(m=>!m)?Kt(e,l.map(({candidate:m})=>m),t.repoModelIds,{files:n.files,sizes:a,root:n.root,modelOverrides:l.flatMap(({candidate:m},w)=>es(n,w).model?[Te(m.prompt)]:[])}):null,f=l.map(({candidate:m,confirmedBy:w},y)=>{let k=es(n,y),{prompt:b,link:x}=m,O=k.name??Un(m,w?.name??null),$=r(O),v=[],E=`${n.repoKey}: ${O}: `,S=k.model?null:Eo(m,t.repoModelIds),R=k.model?{value:k.model,from:"marker",path:null,line:null}:S?{...S,from:m.modelId?"call":"only-model-in-code"}:null;S&&!m.modelId&&v.push(`${E}model ${S.value} assumed from ${S.path}:${S.line} (the only model id in the code)`);let _=k.model?$e({...m,modelId:null},[]):$e(m,t.repoModelIds),I=p[y]??h?.[y],C=I?I.files.map(F=>_.find(nl=>nl.path===F.path)??{path:F.path,role:F.roles.includes("config")?"config":"code",label:null,...F.spans.length===1?{span:F.spans[0]}:{}}):_,P=_.map(({path:F})=>F),H=[...P,...n.codingGuides??[]],L=Sd(t,n,{candidate:m,confirmedBy:w}),kt=Pt(m),Zt=L.candidate===m?kt:Pt(L.candidate),Zc=n.forImport?P:H,en=I?.files.map(F=>F.path),Cs=I&&en?{paths:en,skipped:jn(I),...$o(e,{ownPaths:en,toolCall:Zt},Object.fromEntries(en.filter(F=>n.files[F]!==void 0).map(F=>[F,n.files[F]])),o)}:null,lo=Cs??(o?at(e,{ownPaths:P,toolCall:kt},{files:n.files,sizes:a,root:n.root,guides:n.forImport?void 0:n.codingGuides}):{paths:Zc,skipped:[],tools:[],toolWarnings:[]}),po=Cs??(n.forImport&&(H.length!==P.length||Zt!==kt)?o?at(e,{ownPaths:P,toolCall:Zt},{files:n.files,sizes:a,root:n.root,guides:n.codingGuides}):{paths:H,skipped:[],tools:[],toolWarnings:[]}:lo),Ms={paths:po.paths,skipped:po.skipped.filter(({reason:F})=>F!=="missing")};i.push(...lo.skipped.filter(({reason:F})=>F!=="missing")),n.forImport&&c.push(...Ms.skipped),o||v.push(`${E}tools defined in code are not extracted`),v.push(...lo.toolWarnings.map(F=>`${E}${F}`)),s.push(...v);let As=x?`${x.callPath}:${x.callLine}`:null,el=As?`, sent from ${As}`:"",tl=m.shape?` Answers in the shape of ${m.shape.name}.`:"";return{unitKey:$,name:O,description:k.description??`Instructions in ${b.path} (${b.symbol??`line ${b.span.from}`})${el}.${tl}`,model:R,prompt:L.candidate.prompt,instructionText:Sn(m,n.files),...L.candidate.prompt.filledAtRunTime?{filledAtRunTime:!0}:{},sentFrom:L.candidate.link?`${L.candidate.link.callPath}:${L.candidate.link.callLine}`:null,confirmedBy:L.confirmedBy?.model??null,toolCall:Zt,ownFiles:C,reading:Ms,tools:po.tools,warnings:v,...I?{manifest:I}:{}}}),g=new Map(l.map(({candidate:m},w)=>[Te(m.prompt),f[w].unitKey]));for(let[m,{candidate:w}]of l.entries()){let y=(w.links??[]).flatMap(k=>{let b=g.get(k.to);return b?[{to:b,kind:k.kind}]:[]});y.length&&(f[m].links=y)}let u=K(i,c);return{agents:f,skippedFiles:u,warnings:[...s,...qn(e,t,{...n,reportSkippedFiles:!1},f.map(({name:m})=>m)),...o&&n.reportSkippedFiles!==!1?on(u,t.skippedFiles?0:t.notReadMore):[]]}}function ba(e,t,n){let o=n.codeImportV2??j(e),s=xa(e,t,{...n,codeImportV2:o,modelReader:n.modelReader??!1}),r={};return{nodes:s.agents.map(c=>{let{unitKey:a,prompt:l}=c;return r[a]=c.instructionText,{id:a,label:c.name,kind:"agent",desc:c.description,meta:c.model?.value??null,sourceRef:{path:l.path,line:l.span.from},files:[...c.ownFiles],tools:c.tools.map(({tool:d})=>tt(d.name))}}),agents:s.agents,warnings:s.warnings,instructionSpans:r,...o&&s.skippedFiles.length?{skippedFiles:s.skippedFiles}:{}}}function Hn({repoKey:e,files:t,root:n,conventions:o,nodes:s,parentId:r,candidates:i,resolved:c}){let a=s.map(f=>({...f,files:[...f.files]})),l=[],d=[];for(let f of c.notes.filter(g=>g.code==="orphan-skill")){let g=oe(f,e);g&&d.push(g)}let p=r?a.find(f=>f.id===r):a[0];if(!p)return{nodes:a,edges:l,warnings:d};let h=Kn(n?`${p.id}-`:"",a.map(f=>f.id),(f,g)=>{d.push(`${e}: two sub-agents are named ${f}; the second is ${g}`)});for(let f of c.subagents){let{path:g}=f,u=f.files??f.skillPaths.map(y=>o.skillNames[y]?{role:"skill",path:y,label:o.skillNames[y]}:{role:"reference",path:y,label:o.skillRefNames[y]??null}),m=(f.files?[]:he(i,[g,...u.map(y=>y.path)].map(y=>t[y]??""),o.stripRoot)).map(y=>({role:"reference",path:y,label:null})),w=a.slice(1).find(y=>y.sourceRef?.path===g);if(w){let y=new Set(w.files.map(k=>k.path));w.files.push(...[...u,...m].filter(k=>!y.has(k.path)))}else{for(let k of c.notes.filter(b=>b.code==="frontmatter"&&b.path===g)){let b=oe(k,e);b&&d.push(b)}w={id:h(f.name),label:f.name,kind:"agent",desc:f.description??`A sub-agent ${p.label} can hand work to.`,meta:f.model??null,sourceRef:{path:g,line:1},files:[{role:"system prompt",path:g,label:null},...u,...m],tools:(f.tools??[]).map(tt)},a.push(w)}l.push({from:p.id,to:w.id,kind:"delegates",label:null,sourceRef:{path:g,line:1}})}return{nodes:a,edges:l,warnings:d}}function $a(e,{input:t,conventions:n},o){let s=t.code?.resolved;if(Zo(e)){let r=Object.keys(t.files),i=ze(e,{phase:"start",paths:r,root:t.root,scanFlag:!0}),c=i.kind==="marker"?ze(e,{phase:"read",pending:i,text:t.files[i.markerPath]??null}):i,a=c.kind==="settled"?c.scanPaths:void 0;if(a&&a.length<r.length){let l=new Set(a),d=Oa(e,{input:{...t,code:{resolved:null}},conventions:n},o),p=xd(e,t,n,d,o),h=(s?.agents??[]).filter(b=>l.has(b.candidate.prompt.path)),f=[...p.fragment.nodes.filter(b=>b.kind==="agent").map(()=>({code:null})),...h.map(b=>({code:b}))],{kept:g,leftOut:u}=we(e,f,{modelReader:t.modelReader??!1,codeImportV2:t.codeImportV2}),m=g.flatMap(b=>b.code?[b.code]:[]),w=u.flatMap(b=>b.code?[{path:b.code.candidate.prompt.path,reason:"allowance"}]:[]);if(!m.length)return w.length?{...p,skippedFiles:[...p.skippedFiles??[],...w]}:p;let y=ts(e,t,te(e,a,t.root),{agents:[],notes:[]},{...s,agents:m},{}),k=new Map((y.codeAgents??[]).map(b=>[b.unitKey,`code:${Te(b.prompt)}`]));return{...p,fragment:{nodes:[...p.fragment.nodes,...y.fragment.nodes.map(b=>({...b,id:k.get(b.id)??b.id}))],edges:[...p.fragment.edges,...y.fragment.edges.map(b=>({...b,from:k.get(b.from)??b.from,to:k.get(b.to)??b.to}))],warnings:[]},warnings:[...new Set([...p.warnings,...y.warnings])],...y.codeAgents?{codeAgents:[...p.codeAgents??[],...y.codeAgents.map(b=>({...b,unitKey:k.get(b.unitKey)??b.unitKey,...b.links?{links:b.links.map(x=>({...x,to:k.get(x.to)??x.to}))}:{}}))]}:{},...y.skippedFiles?.length||w.length?{skippedFiles:[...p.skippedFiles??[],...y.skippedFiles??[],...w]}:{}}}}return Oa(e,{input:t,conventions:n},o)}function xd(e,t,n,o,s){if(!o.codeAgents?.length||!n.agentScopes)return o;let r=new Set(o.codeAgents?.map(m=>m.prompt.path)),i=new Map(n.agentScopes.map(m=>[m.key,m])),c=n.agents.filter(m=>i.has(m.key)&&i.get(m.key).folder!==(t.root??"")&&(m.prompt.kind==="none"||!r.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}=we(e,a,{modelReader:t.modelReader??!1,codeImportV2:t.codeImportV2}),p=l.flatMap(m=>m.agent?[m.agent]:[]),h=d.flatMap(m=>m.agent?.files[0]?[{path:m.agent.files[0].path,reason:"allowance"}]:[]),f=new Set(p.map(m=>m.key)),g=n.agentScopes.filter(m=>f.has(m.key)),u=s(t,{...n,agents:p,agentScopes:g,notes:g.flatMap(m=>m.notes)});return{...o,fragment:{nodes:[...o.fragment.nodes,...u.fragment.nodes],edges:[...o.fragment.edges,...u.fragment.edges],warnings:[]},warnings:[...new Set([...o.warnings,...u.warnings])],...h.length?{skippedFiles:[...o.skippedFiles??[],...h]}:{}}}function Oa(e,{input:t,conventions:n},o){let s=t.code,{repoKey:r,files:i,root:c}=t,a=te(e,Object.keys(i),c),l=a.configPath?pt(i[a.configPath]):null,d=l?.config??null,p=l?.invalid===!0,h=d?Xr(d):"bare",f=[],g;if(d&&h!=="bare"){let y=yd.dirname(a.configPath).replace(/^\.$/,""),k=Zr(e,d,{repoKey:r,markerDir:y,files:i});g=k.agents.length>0;let b=k.agents.filter($=>ni(e,$.prompt.path,i,c)),x=k.agents.filter($=>!b.includes($)),O=b.flatMap($=>{let v=oe({code:"pointer-owned-by-subagent",path:$.prompt.path},r);return v?[v]:[]});if(x.length>0){let $=ts(e,t,a,n,$d(x),{overrides:x.map(({name:v,model:E,description:S})=>({name:v,model:E,description:S})),configPath:a.configPath});return{...$,markerAgentsFound:g,markerWarnings:k.warnings,warnings:[...k.warnings,...O,...va(e,t,a,x.length),...$.warnings]}}f=[...k.warnings,...O]}let{resolved:u}=s;if(!u||rt(a)||h!=="bare"){let y=o(t);return{fragment:y.fragment,warnings:[...new Set([...f,...y.warnings])],...g===void 0?{}:{markerAgentsFound:g}}}if(u.agents.length>0)return Od(e,t,a,n,u,d,p);let m=bt({usage:"map",codeAgentsFound:u.agents.length>0,otherDefinitions:rt(a),codeImportV2:t.codeImportV2??j(e)}),w=a.claudePath&&m==="prompt"||a.configPath?o(t):{fragment:{nodes:[],edges:[],warnings:[]},warnings:[bd(r,u),...n.notes.filter(y=>y.code==="orphan-skill").flatMap(y=>{let k=oe(y,r);return k?[k]:[]})]};return{fragment:w.fragment,warnings:[...w.warnings,...qn(e,u,{repoKey:r,modelReader:t.modelReader,codeImportV2:t.codeImportV2,reportSkippedFiles:t.reportSkippedFiles},[])]}}function bd(e,t){return`${e}: no agent found \u2014 no convention files (looked for ${pn}) and no system prompt in code (scanned ${t.scanned} code files for prompt constants, prompt files and model calls)`}function va(e,t,n,o){let s=bt({usage:"map",codeAgentsFound:o>0,otherDefinitions:rt(n),codeImportV2:t.codeImportV2??j(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 Od(e,t,n,o,s,r,i){let{repoKey:c}=t,a=s.agents.length,l=ts(e,t,n,o,s,{primaryConfig:r,configPath:r?n.configPath:null}),d=i?oe({code:"invalid-config"},c):null,p=d?[d]:[];return 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`,...va(e,t,n,a)),{...l,warnings:[...p,...l.warnings]}}function $d(e){return{agents:e.map(t=>({candidate:{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 ts(e,{repoKey:t,files:n,root:o,modelReader:s,codeImportV2:r,codingGuides:i,reportSkippedFiles:c,forImport:a,forLocal:l,code:d},p,h,f,g){let u=r??j(e),m=ba(e,f,{repoKey:t,root:o,files:n,modelReader:s,codeImportV2:u,codingGuides:i,reportSkippedFiles:c,forImport:a,forLocal:l,...a&&d?.resolved?{importCandidates:d.resolved.agents}:{},overrides:g.overrides,primaryConfig:g.primaryConfig}),w=h.agents.find(E=>E.key===null)?.subagents??[],y=new Set(w.map(E=>E.path)),k=new Set([...w.flatMap(E=>E.skillPaths),...h.notes.filter(E=>E.code==="orphan-skill").map(E=>E.path)]),{stripRoot:b}=p,x=new Set(m.nodes.flatMap(E=>E.files.map(S=>S.path))),O=p.scoped.filter(E=>!x.has(E)&&!y.has(E)&&!k.has(E)&&E!==g.configPath&&ye(E)).sort();for(let E of m.nodes){let S=he(O,[m.instructionSpans[E.id]??""],b).map(R=>({role:"reference",label:null,path:R}));E.files.push(...S)}g.configPath&&m.nodes[0]&&m.nodes[0].files.push({role:"config",label:null,path:g.configPath});let $=k.size?Hn({repoKey:t,files:n,root:o,conventions:p,nodes:m.nodes,candidates:O,resolved:{subagents:w,notes:h.notes}}):{nodes:m.nodes,edges:[],warnings:[]},v=l?ya(e,m.agents,Object.fromEntries($.nodes.map(({id:E,files:S})=>[E,S.map(({path:R})=>R)])),n,u):m.agents;return{fragment:{nodes:$.nodes,edges:$.edges,warnings:[]},codeAgents:v,warnings:[...m.warnings,...$.warnings],...m.skippedFiles?{skippedFiles:m.skippedFiles}:{}}}import{basename as vd}from"node:path";function Ea(e){let t=e.replace(/^local:/,"");return t.slice(t.lastIndexOf("/")+1)||t}function Ra(e,t,n,o={}){if(e.ranked&&e.scan){let{total:r,truncated:i}=e.scan;return{resolved:n?Yi(e.ranked,n.verdicts,{repoKey:e.key,files:e.files??{},failed:n.failed,flags:t,scanInfo:{total:r,truncated:i}}):An(e.ranked,{total:r,truncated:i})}}let s=o.markerPolicy==="any-read"?!!e.markerPath:e.markerKind==="agents"||e.markerKind==="prompt";return t.scan&&s?{resolved:null}:void 0}function ns(e){let t=Fe(e.root);return t?vd(t):Ea(e.repoKey)}function Gn(e,t,n=t.code&&t.code.resolved?.agents.length!==0?"":ns(t)){let o={...t,root:Fe(t.root)},s=ti(e,{files:o.files,root:o.root,fallbackName:n,skills:!0,listedPaths:o.listedPaths,codeAgentsFound:(o.code?.resolved?.agents.length??0)>0});return s.projection==="conventions"&&delete o.code,{input:o,conventions:s}}function _a(e,t,n,o,s={}){let r={repoKey:t.key,files:br(o.projectAgents,t.key,t.files??{}),...t.root?{root:t.root}:{},code:Ra(t,n,s.checks),modelReader:o.modelReader??!1,codeImportV2:o.codeImportV2??!1};return Gn(e,r)}function Gt(e,t){let n={repoKey:t.repoKey,files:t.files,...t.root?{root:t.root}:{}};return Gn(e,n)}function Je(e,t){return t.input.code?$a(e,t,(n,o)=>Ia(e,o?{input:n,conventions:o}:Gn(e,n,ns(n)))):Ia(e,t)}function Ed(e,t,n){return n?`Instructions in ${t.filter(s=>s.role==="soul"||s.role==="knowledge").map(s=>Pa(s.path)).join(" and ")}.`:e?`Instructions in ${e}.`:"No system prompt file found."}function Ia(e,{input:{repoKey:t,files:n,root:o,codeImportV2:s},conventions:r}){if(!r.agents.length)return{fragment:{nodes:[],edges:[],warnings:[]},warnings:r.notes.flatMap(f=>{let g=oe(f,t);return g?[g]:[]})};let i=r.notes.filter(f=>f.code!=="orphan-skill"&&f.code!=="frontmatter").flatMap(f=>{let g=oe(f,t);return g?[g]:[]}),{scopes:c,ownerOf:a}=kn(e,r.scopePaths??Object.keys(n),o),l=new Map(c.map(f=>[f.folder,[]]));for(let f of Object.keys(n)){let g=a(f);g&&l.get(g.folder).push(f)}let d=r.agents.map(f=>{let g=r.agentScopes?.find(v=>v.key===f.key)??c.find(v=>v.key===f.key),u=Fe(g.folder),m=te(e,l.get(g.folder),u),w=f.tools?.map(tt)??mr(e,t,n,m,i,s),y=f.prompt.kind==="registry",k=f.prompt.kind==="none"||y?null:f.prompt.path,b=(f.prompt.kind==="registry"?f.prompt.path:m.configPath)??k??f.files[0]?.path??f.subagents[0]?.path,x={id:f.key??(o?pe(Pa(o)):"agent"),label:f.name,kind:"agent",desc:f.description??Ed(k,f.files,y),meta:f.model,sourceRef:{path:b,line:null},files:f.files,tools:w},O=new Set([...f.files.filter(v=>v.role!=="reference"||v.label!==null).map(v=>v.path),...f.subagents.flatMap(v=>[v.path,...v.skillPaths]),...r.notes.filter(v=>v.code==="orphan-skill").map(v=>v.path)]),$=m.scoped.filter(v=>!O.has(v)&&ye(v)).sort();return{resolved:f,root:u,conventions:m,agent:x,candidates:$}}),p=d.map(f=>f.agent),h=[];i.push(...r.notes.filter(f=>f.code==="orphan-skill").flatMap(f=>{let g=oe(f,t);return g?[g]:[]}));for(let{resolved:f,root:g,conventions:u,agent:m,candidates:w}of d){let y=Hn({repoKey:t,files:n,root:g,conventions:u,nodes:p,parentId:m.id,candidates:w,resolved:{subagents:f.subagents,notes:r.notes.filter(k=>k.code==="frontmatter")}});p=y.nodes,h.push(...y.edges),i.push(...y.warnings)}return{fragment:{nodes:p,edges:h,warnings:[]},warnings:i}}function Ca(e){let t=e.CF_CODE_AGENTS!=="0";return{scan:t,model:t&&e.CF_CODE_AGENTS_MODEL!=="0"}}async function Ma(e,t){let n=t.admission.exclusions?.length?await t.listing():void 0,o=t.config?Yr(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]:K(l,d),r=s(t.priorRefused,o.refused),{kept:i}=we(e,o.paths,{modelReader:t.modelReader,codeImportV2:t.codeImportV2}),c=t.requestedMode==="kept-and-refused"?[...o.refused.map(l=>l.path),...i]:[];if(!i.length)return{refused:r,requestedPaths:c};let a=Ut(e,t.selected,i,n??await t.listing(),D.candidateFetch.pointers);return r=s(r,a.refused),{selected:a.selected,refused:r,requestedPaths:c}}async function Wn(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 Js)||s.reason!=="secret-content")throw s;return n.push({path:e.path,reason:s.reason}),null}}function Vn(e,t){return t.codeAgents??Ca(e)}function ck(e,t,n,o,s,r=!1,i=!1){let c=[],a=t.filter(d=>{let p=ae(e,d,{purpose:"pointer",route:"github"});return p.admitted||c.push({path:d.path,reason:p.reason}),p.admitted}),l=fa(e,{paths:a.map(d=>d.path),entries:t,root:o,scanFlag:s.scan,modelReader:r,codeImportV2:i});if(l.kind==="marker"){let{markerPath:d,scanNeeded:p,scan:h}=l,f=a.find(u=>u.path===d),g=n.some(u=>u.path===d);return{markerPath:d,refused:c,scanNeeded:p,...h?{scan:h}:{},...f&&!g?{selected:[...n,f]}:{}}}return l.kind==="scan"?{scanNeeded:!0,scan:l.scan,refused:c,...l.ranked?{ranked:l.ranked}:{}}:{}}function Rd(e){return!!(e.root&&e.ranked&&pa(e.ranked)&&e.plumbing===void 0)}var Aa=e=>(e.listAll??e.list).call(e);async function _d(e,t,n,o,s){let r=t.markerPath,i=(t.selected??[]).find(u=>u.path===r);if(!i)throw new Error(`counterfact.json ${r} is not in the selection`);let c={...t.files??{}},a=[],l=c[r]??await Wn(i,u=>n.read(u),a,t.refused);l!==null&&(c[r]=l);let d=ze(e,{phase:"read",pending:t.scan?.markerDecision??{kind:"marker",markerPath:r,scanIfBare:!!t.scanNeeded},text:l}),p=d.markerKind,{scan:h,...f}=t,g={...f,files:c,markerKind:p,...a.length?{refused:K(t.refused,a)}:{}};if(d.scan&&h&&!h.markerDecision)return Bn(e,{...g,scan:h},o,s);if(p!=="bare"){let{config:u}=pt(c[r]),m=await Ma(e,{config:u,markerDir:la(r),selected:t.selected??[],admission:n.admission??{},modelReader:o,codeImportV2:s,priorRefused:t.refused??[],refusalMode:"merge",requestedMode:"none",listing:()=>Aa(n)});g.refused=m.refused,m.selected&&(g.selected=m.selected)}if(d.scan&&h?.markerDecision){let m={...p==="bare"?h:h.explicitMarkerScan};delete m.markerDecision,delete m.explicitMarkerScan;let w=new Set(d.scanPaths),y=m.plan.filter(k=>w.has(k.path));return Bn(e,{...g,scan:{...m,plan:y,total:m.total-m.plan.length+y.length}},o,s)}return g}async function Id(e,t,n,o,s){let r=[],{scan:i,selection:c}=await ma(e,t.scan,l=>Wn(l,d=>n.read(d),r,t.refused),{modelReader:o,alreadyRead:new Map,codeImportV2:s});if(!c)return{...t,scan:i,...r.length?{refused:K(t.refused,r)}:{}};let a=Ut(e,t.selected??[],c.paths,i.plan);return{...t,ranked:c.ranked,scan:i,selected:a.selected,refused:K(t.refused,r,c.refused,a.refused)}}async function Pd(e,t,n){let o=t.root,s=await Aa(n),r=lr(t.files??{},s.map(d=>d.path),o),{selected:i,refused:c}=Ut(e,[],r,s),a=await G(i,Tn,d=>Wn(d,p=>n.read(p),c,t.refused)),l=dr(o,Object.fromEntries(i.flatMap((d,p)=>a[p]===null?[]:[[d.path,a[p]]])),e);return{...t,plumbing:l,refused:K(t.refused,c)}}async function lk(e,t,n,o=!1,s=!1){return n=Qs(e,n),t.markerPath&&!t.markerKind?_d(e,t,n,o,s):t.scan&&!Bt(t.scan)?Id(e,t,n,o,s):(t.cursor??0)>=(t.selected??[]).length&&Rd(t)?Pd(e,t,n):null}function dk(e){return e.root&&e.plumbing?[`${e.key}: ${pr(e.root,e.plumbing)}`]:[]}function Wt(e,t,n,o=!1,s,r=!1,i="",c){let a=_a(e,t,n,{modelReader:o,projectAgents:s,codeImportV2:r},{checks:c}),l=Je(e,a),d=Zi(s,t.key,l.fragment,i),{fragment:p,warnings:h}=fn(d.fragment,t.key);return{fragment:p,warnings:[...xr(t.key,l.warnings,d.addedNodes),...h],...d.addedNodes.length?{virtualFiles:d.files}:{}}}var zn=e=>(e.ranked?.possible.length??0)>0;async function Fa(e,t,n){let o=[];try{o=await t?.()??[]}catch(r){n.rethrow(r)}let s=new Set((e.repos??[]).filter(zn).flatMap(r=>r.ranked.possible.map(i=>Dt(r.key,i,r.files??{}).fingerprint)));return o.filter(r=>s.has(r.fingerprint))}function Cd(e,t,n,o,s){let r=new Set(n.map(c=>c.fingerprint)),i={due:[],overCap:[],ineligible:[]};for(let c of(t.repos??[]).filter(zn)){let a=Qi(e,{candidates:c.ranked.possible,files:c.files??{},repoKey:c.key,stored:r,flags:o,modelReader:t.modelReader??!1,codeImportV2:s,hasClient:!0,agentCountSoFar:c.ranked.strong.length,alreadyDue:i.due.length});i.due.push(...a.due),i.overCap.push(...a.overCap),i.ineligible.push(...a.ineligible)}return i}function os(e,t){let n=[...t];return e.filter(o=>{let s=n.indexOf(o);return s<0?!0:(n.splice(s,1),!1)})}function Ta(e,t,n,o,s){let r=[...t.mapped??[]],i=[...t.warnings??[]];return(t.repos??[]).forEach((c,a)=>{if(!zn(c))return;let l=Wt(e,c,n,t.modelReader??!1,t.projectAgents,s),d=Wt(e,c,n,t.modelReader??!1,t.projectAgents,s,"",o);r[a]=d.fragment,i=[...os(i,os(l.warnings,d.warnings)),...os(d.warnings,l.warnings)]}),{mapped:r,warnings:i}}async function La(e,t,n){let o=Vn(e,t);if(t.codeChecks?.done||!(t.repos??[]).some(zn))return{data:t,pending:!1};let s=dn(t);if(!o.model){let g=await Fa(t,n.load,n.llm);return{pending:!1,data:{...t,...Ta(e,t,o,{verdicts:g,failed:[]},s.remapping),codeChecks:{done:!0,total:0,cursor:0,spentUsd:0,verdicts:[],failed:[],stored:[]}}}}let r=t.codeChecks??{done:!1,total:0,cursor:0,spentUsd:0,verdicts:[],failed:[],stored:await Fa(t,n.load,n.llm)},i=Cd(e,t,r.stored,o,s.selection),c=i.due.slice(r.cursor,r.cursor+Xo),a=await Xi(n.llm,c,r.spentUsd),l=r.cursor+c.length,d=i.due.length,p=[...r.verdicts,...a.verdicts],h=[...r.failed,...a.failed];if(l<d)return{pending:!0,data:{...t,codeChecks:{done:!1,total:d,cursor:l,spentUsd:a.spentUsd,verdicts:p,failed:h,stored:r.stored}}};let f=new Set(h.map(g=>g.fingerprint));for(let{fingerprint:g}of i.overCap)f.has(g)||h.push({fingerprint:g,why:"limit"});return{pending:l>r.cursor,data:{...t,...Ta(e,t,o,{verdicts:[...r.stored,...p],failed:h},s.remapping),newVerdicts:p,codeChecks:{done:!0,total:d,cursor:l,spentUsd:a.spentUsd,verdicts:[],failed:[],stored:[]}}}}var ut=N.mechanical,ss=!1,Na=200;function rs(e){return e.length>Na?`${e.slice(0,Na)}\u2026`:e}function Md(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}]:[],...is(e).map(s=>({repo:s.repo??e.siteRepo??null,file:s.path,line:s.line,excerpt:s.excerpt}))];return Rn(o,n,t.flatMap(s=>s.inputs.map(r=>({repo:s.repo,unitKey:s.unitKey,input:r,files:s.files}))),t[0].agentRows)?null:"Code quotes are outside one agent's admitted source locations."}function is(e){return e.otherSites??[]}function Ad(e,t){if(!Ds(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+is(e).length;return yt(e.category)===2&&n<2?`${e.category} needs two quoted sites, found ${n}`:null}function ja(e,t,n){let o={title:t.title,category:t.category??null,reason:rs(n)};e.push(o)}function Fd(e,t,n){let o={title:t.title,category:t.category??null,reason:rs(n)};e.push(o)}function Td(e,t){return{template:"scope-items",answerFormat:"structureScope",model:ut,inputs:{scopeRuleId:t.scopeRuleId??"",items:e},limits:{...t.maxTokens===void 0?{}:{maxTokens:t.maxTokens}}}}async function Da(e,t,n){try{let o=await A(e,Td(t,n)),s=new Map(o.verdicts.map(r=>[r.index,r]));return o.verdicts.length!==t.length||s.size!==t.length||t.some((r,i)=>!s.has(i))?null:new Map([...s].map(([r,i])=>[r,{inScope:i.inScope,reason:rs(i.reason)}]))}catch(o){return M("scope-items",o,s=>e.rethrow(s)),null}}function Ld(e){return{category:e.category??null,path:e.site?.path??"?",title:e.title,cause:e.cause,excerpt:e.excerpt??"",otherSites:is(e).map(t=>({path:t.path,excerpt:t.excerpt??""}))}}function Nd(e,t,n=xn(t)){return{template:"scope-findings",answerFormat:"scope",model:t.qualityConfig?.switches.enabled?t.qualityConfig.models.scope:ut,inputs:{codeSources:n.sources,codeFiles:n.files,items:e}}}async function jd(e,t,n,o,s){let r=[];for(let p=0;p<n.length;p+=Me)r.push(n.slice(p,p+Me));let i=e.CF_PARALLEL_SCOPE_CHECK==="0"?1:o.scopeConcurrency??4,c=await G(r,i,async(p,h)=>{let f=[],g=h+1;for(let u=0;u<=Ae;u++)try{let m=await A(t,Nd(p,o,s),e),w=Tr(m.verdicts,p.map(y=>y.id));return w.unknownIds.length&&f.push(`Scope check batch ${g}: ignored ${w.unknownIds.length} unknown verdict ids.`),w.duplicateIds.length&&f.push(`Scope check batch ${g}: ignored duplicate verdict ids for ${w.duplicateIds.join(", ")}.`),{verdicts:w.byId,diagnostics:f,ran:!0}}catch(m){M("scope-findings",m,w=>t.rethrow(w)),u===Ae&&f.push(`Scope check batch ${g} failed after ${u+1} attempts; its findings were kept.`)}return{verdicts:new Map,diagnostics:f,ran:!1}},t),a=new Map,l=[];for(let p of c){for(let[h,f]of p.verdicts)a.set(h,f);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 Ba(e,t,n,o={}){let s=[],r=[],i=[],c=xn(o);for(let[d,p]of n.entries()){let h=Ad(p,e)??Md(p,c.scopes,o.graph);h?ja(s,p,h):i.push({id:`f${d+1}`,finding:p})}if(i.length===0)return{kept:[],dropped:s,ran:!0,flagged:r};let a=await jd(e,t,i.map(({id:d,finding:p})=>({id:d,...Ld(p)})),o,c),l=[];return i.forEach(({id:d,finding:p})=>{let h=a.verdicts.get(d);if(!h||h.inScope){l.push(p);return}ss?ja(s,p,h.reason):(Fd(r,p,h.reason),l.push(p))}),{kept:l,dropped:s,ran:a.ran,flagged:r,...a.diagnostics.length?{diagnostics:a.diagnostics}:{},...a.missingIds.length?{missingIds:a.missingIds}:{}}}function Ka(e,t,n=new Set){if(!t)return 1;let o=e.reduce((r,i)=>r+i.size,0),s=Dd(e,n);return Mi(o,s,15e4,4)}function Dd(e,t=new Set){return e.filter(n=>t.has(n.path)||$t(n.path)).reduce((n,o)=>n+o.size,0)}function Tk(e,t){return t>1?Math.min(e,6e4):0}function nS(e,t,n){let o=Ce(e).multiPass,s=n?Go(n.repos??[],_e(Q(n)),o,e).passes.length:Ka([...t],o),r=Mr(e,s,Ho(s),ue);return{findings:r.findings,calls:[r.derive,z(e,"scope-findings","scope",ut,Math.ceil(r.findings/Me)*(Ae+1),ue),...r.check?[r.check]:[]]}}function as(e,t){return W(e,t).sourceNotes&&Array.isArray(t.findingsRaw)&&t.findingsRaw.length>0?"explaining_sources":"structuring"}var oS=async(e,t)=>{t.progress.assertHeld(),t.progress.signal?.throwIfAborted();let{settings:n}=e,{state:o}=e,s=await Ee(t),r=le(t.model,s,t.progress.rethrow,t.progress.signal),i=await Gi(n,o,r);if(i){let k=e.execution.secondOpinion;if(i.done&&k&&o.findingQuality?.config.switches.secondOpinion){if(!o.findingCheck?.state?.done)return{set:Y(i.data),clear:[],next:"inspecting"};let b=o.findingCheck,x=o.findingQuality,O=await Jo(b.state.result,b.state,b.original,{repos:o.repos??[],fragments:Q(o)},{settings:n,qualityConfig:x.config,codeEvidence:x.codeEvidence,readingSkipped:x.readingSkipped,sawCode:o.sawCode??x.sawCode,secondOpinion:{...k,oneBatch:!0,llm:le(t.secondOpinionModel??null,s,t.progress.rethrow,t.progress.signal)},onCheckpoint:async v=>t.progress.checkpoint({findingCheck:{...b,state:v},...v.qualityAudit?{findingQuality:{...x,...v.qualityAudit}}:{}})}),$={...i.data,findingCheck:{...b,state:O},...O.qualityAudit?{findingQuality:{...x,...O.qualityAudit}}:{}};return{set:Y($),clear:[],next:O.qualityAudit?.shadow?.done===!1?"inspecting":as(n,$)}}return{set:Y(i.data),clear:[],next:i.done?as(n,i.data):"inspecting"}}let c=await La(n,o,{llm:r,load:t.context.loadCodeVerdicts});if(c.pending)return{set:Y(c.data),clear:[],next:"inspecting"};if(o=c.data,!t.model)throw new Z("llm","llm gone mid-job");let a=Q(o),l=Ne(a),d=await Bi(n,{data:o,graph:l,fragments:a,llm:r,checkpoint:t.progress.checkpoint,progress:t.progress,forLocal:e.execution.forLocal,parallel:tn(n,e.execution)});if(!d.done)return{set:Y(d.data),clear:[],next:"inspecting"};let p=xe(d.findings,ve(o),Ie(d.data),n),h=await Ba(n,r,p.findings,{graph:l,qualityConfig:d.data.findingQuality?.config,codeEvidence:ji(d.data,d.plan,d.readByRepo),scopeConcurrency:e.execution.scopeConcurrency}),f=h.dropped.length,g=h.flagged.length,u=[...p.warnings,...d.plan.warnings];f&&u.push(`${f} finding${f===1?"":"s"} removed as out of scope`),g&&u.push(`${g} finding${g===1?"":"s"} flagged by the scope check's model pass, but kept \u2014 that verdict is not enforced`),h.ran||u.push("the scope check did not run; findings were kept unchecked");let m=Di(d.plan);m&&u.push(m),d.shadowed.length&&u.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(k=>`${k.repo}:${k.path}`).join(", ")}`);let w=an(n)?{sawCode:Fr(d.readByRepo)}:{},y=Hi(n,{...d.data,...w,...d.data.findingQuality?{findingQuality:{...d.data.findingQuality,...w}}:{},findingsRaw:h.kept,scopeCheck:{dropped:f,ran:h.ran,flagged:g,...h.diagnostics?.length?{diagnostics:h.diagnostics}:{}},readPaths:d.readByRepo,warnings:[...d.data.warnings??[],...u]},h.kept);return{set:Y(y),clear:[],next:y.findingCheck?.state&&!y.findingCheck.state.done?"inspecting":as(n,y)}};function Ua(e,t){return e?[e,...t]:[]}var mt=N.explain,cs=4,Jn=4e4,qa=15,ht=4096,Ha=6e4;function Ga(e,t,n){let o=Ua(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:B(l.excerpt??"",ee)})),s=[],r=[],i=(l,d)=>t.repos.find(p=>p.key===l)?.files?.[d],c=l=>{if(s.some(f=>f.repo===l.repo&&f.path===l.path&&f.text===l.text))return;let d=Math.max(0,Jn-Buffer.byteLength(JSON.stringify([...s,{...l,text:"",truncated:!0}]))),p=B(l.text,d);for(;p&&Buffer.byteLength(JSON.stringify(p))-2>d;)p=B(p,Math.floor(Buffer.byteLength(p)*.9));if(!p){r.push(`Source notes omitted ${l.repo}:${l.path}: context limit`);return}let h=l.truncated||p!==l.text;s.push({...l,text:p,truncated:h}),h&&r.push(`Source notes context incomplete: ${l.repo}:${l.path}`)};for(let l of o){let d=i(l.repo,l.path);if(d===void 0){r.push(`Source notes file unavailable: ${l.repo}:${l.path}`);continue}let p=l.line===null?null:l.line+l.excerpt.split(`
|
|
21
|
+
`).length-1;c({repo:l.repo,path:l.path,...Ge(d,l.line,Jn,qa,p)})}let a=new Set;for(let l of o){let d=`${l.repo}
|
|
22
|
+
${l.path}`;if(a.has(d))continue;a.add(d);let p=i(l.repo,l.path);if(p===void 0)continue;let h=t.repos.find(f=>f.key===l.repo)?.files??{};for(let f of In(l.path,p,h))c({repo:l.repo,path:f,...Ge(h[f],null,Jn)})}for(let l of We([],t,0,"legacy",n).coreFiles)c(l);return{category:e.category??"",title:B(e.title,ee/4),summary:B(e.summary??"",ee/4),cause:B(e.cause,ee/2),roles:wn(e.category),sites:o,files:s,diagnostics:r}}var ls=(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 Bd(e,t,n){let o=e.text.split(`
|
|
23
|
+
`),s=o.findIndex(c=>c.startsWith(`${t} `));if(s<0)return!1;let i=o.slice(s).map(c=>c.replace(/^\d+ /,"")).join(`
|
|
24
|
+
`).indexOf(n);return i>=0&&i<o[s].replace(/^\d+ /,"").length}function Wa(e,t){let n=wn(t.category),o=new Set,s=e.sites.flatMap(a=>{let l=t.sites.find(p=>p.index===a.index),d=ls(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:""}])}),r=new Set,i=e.counterEvidence.flatMap(a=>{let l=ls(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&&Bd(p,a.line,a.excerpt)))return[];let d=JSON.stringify([a.repo,a.path,a.line,a.excerpt]);return r.has(d)?[]:(r.add(d),[{...a,meaning:l}])}).slice(0,2),c=ls(e.supportNote,280);if(!c)throw new Error("Source notes have no support explanation");return _r.parse({sites:s,support:e.support,supportNote:c,counterEvidence:i})}import{z as Kd}from"zod";function Va(e,t,n){let o=Buffer.byteLength(JSON.stringify(e))+t.templateBytes("explain-sources")+Buffer.byteLength(JSON.stringify(Kd.toJSONSchema(yo)));if(o>Ha)throw new Error("Source notes input exceeds its priced limit");return Oe(n,{template:"explain-sources"},"Explain sources",mt,Ye(o),ht)}function Ud(e){return{template:"explain-sources",model:mt,answerFormat:"sourceNotes",inputs:{content:JSON.stringify(e)},limits:{maxTokens:ht,thinking:"disabled"}}}async function qd(e,t,n,o){let s=Ga(n,o,t.tools);Va(s,t.tools,e);let r=await A(t,Ud(s),e);return Wa(r,s)}async function za(e,t,n,o,s){if(s?.done)return s;let r=s??{cursor:0,findings:n.map(l=>({...l,sourceNotes:null})),failures:0,done:!1},i=r.findings.slice(r.cursor,r.cursor+cs),c=await G(i,cs,async l=>{try{if(!t.available)throw new Error("Source notes model unavailable");return{finding:{...l,sourceNotes:await qd(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(r.findings.length,r.cursor+i.length);return{cursor:a,findings:[...r.findings.slice(0,r.cursor),...c.map(l=>l.finding),...r.findings.slice(a)],failures:r.failures+c.filter(l=>l.failed).length,done:a>=r.findings.length}}async function Ja(e,t,n){if(!W(e,t).sourceNotes||t.sourceNotes?.done)return{data:t,done:!0};let o=[],s;try{let i=t.repos??[],c=ve(t);o=xe(nt(t.findingsRaw??[]),c,Ie(t),e).findings;let a=Q(t);if(t.sourceNotes&&(!Array.isArray(t.sourceNotes.findings)||!Number.isInteger(t.sourceNotes.cursor)))throw new Error("Unreadable source notes checkpoint");s=await za(e,n,o,{repos:i,fragments:a},t.sourceNotes)}catch(i){M("explain-sources",i,h=>n.rethrow(h)),re(i);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((h,f)=>f<d?h:{...h,sourceNotes:null}),failures:(a?c.failures:0)+p-d,done:!0}}let r=[...t.warnings??[]];return s.done&&s.failures&&r.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:r,...s.findings.length||Array.isArray(t.findingsRaw)&&!t.findingsRaw.length?{findingsRaw:s.findings}:{}}}}function JS(e,t){return Ce(e).sourceNotes?[z(e,"explain-sources","sourceNotes",mt,t,ue,ht)]:[]}var XS=async(e,t)=>{t.progress.assertHeld(),t.progress.signal?.throwIfAborted();let n=await Ee(t),o=await Ja(e.settings,e.state,le(t.model,n,t.progress.rethrow,t.progress.signal));return{next:o.done?"structuring":"explaining_sources",clear:[],set:Y(o.done?qi(o.data):o.data)}};function Xa(e){let t=e.id.indexOf("#");return e.sourceRef?.repo??(t<0?null:e.id.slice(0,t))}var Vt=(e,t)=>JSON.stringify([e,t]),Qa=(e,t)=>e<t?-1:e>t?1:0;function Ya(e,t=[]){let n=e.nodes.filter(i=>i.kind==="agent");if(n.some(i=>i.files===void 0&&!i.sourceRef))return null;if(!n.length)return[];let o=new Map,s=(i,c,a)=>{let l=Vt(i,c),d=o.get(l);d||(d={repo:i,path:c,agents:new Set},o.set(l,d)),a.forEach(p=>d.agents.add(p))},r=new Map;for(let i of n){let c=Xa(i),a=hr(i),l=Vt(c,a),d=r.get(l)??[];d.push(i.id),r.set(l,d);for(let p of i.files??[])s(c,p.path,[i.id]);i.sourceRef&&s(c,i.sourceRef.path,[i.id]),Le(i)&&s(c,wr(a,c),[i.id]);for(let p of i.sourcePaths??[])s(c,p,[i.id])}for(let i of e.nodes)i.kind==="tool"&&i.sourceRef&&s(Xa(i),i.sourceRef.path,[]);for(let i of t){let c=r.get(Vt(i.repo,i.unitKey))??[];for(let a of i.input.sources)s(i.repo,a.sourcePath,c)}return[...o.values()].map(i=>({...i,agents:[...i.agents].sort()})).sort((i,c)=>Qa(i.repo??"",c.repo??"")||Qa(i.path,c.path))}function Za(e,t){if(e===null)return[];let n=new Set(e.map(s=>s.path)),o=new Set(e.map(s=>Vt(s.repo,s.path)));return t.flatMap((s,r)=>s.sitePath?(s.siteRepo===null?n.has(s.sitePath):o.has(Vt(s.siteRepo,s.sitePath)))?[]:[r]:[])}var gt=e=>({paths:e.slice(0,2e3),omitted:Math.max(0,e.length-2e3)});function Hd(e){let t=e.map((r,i)=>({part:i+1,findings:[]})),n=Buffer.byteLength(JSON.stringify(t)),o=!1,s=0;return e.forEach((r,i)=>{let c=t[i].findings;for(let a of r){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 ec(e){let t=new Map(Object.entries(e.readByRepo).map(([s,r])=>[s,new Set(r)])),n=new Set(Object.values(e.readByRepo).flat()),o=new Map;for(let s of e.loaded??[]){let r=s.repo===null?n.has(s.path):t.get(s.repo)?.has(s.path);for(let i of s.agents){let c=o.get(i);c||(c={loaded:new Set,notRead:new Set},o.set(i,c)),c.loaded.add(s.path),r||c.notRead.add(s.path)}}return{version:1,core:gt(e.plan?.core??[]),parts:(e.plan?.passes??[]).map(s=>({own:gt(s.own)})),skipped:gt(e.plan?.skipped??[]),readByRepo:Object.fromEntries(Object.entries(e.readByRepo).map(([s,r])=>[s,gt(r)])),agents:e.graph.nodes.filter(s=>s.kind==="agent").map(s=>({id:s.id,label:s.label??s.id,loaded:gt([...o.get(s.id)?.loaded??[]]),notRead:gt([...o.get(s.id)?.notRead??[]])})),...Hd(e.passFindings)}}function tc(e){return e.CF_RECALL_SIGNALS!=="0"}function nc({state:e,settings:t}){let n=e.repos??[],o=[],s=Q(e).map(({repoKey:y,fragment:k},b)=>{let x=Or(k,n[b]?.files??{},y);return o.push(...x.warnings),{repoKey:y,fragment:x.fragment,files:x.nodes}}),r=Ne(s),{findings:i,warnings:c}=xe(nt(e.findingsRaw??[]),ve(e),Ie(e),t),a=e.structuresRaw??[],l=dt(t)?e.findingHeadlines:void 0,d=l?.done?l.version===2?l.rows:l.rows.map(y=>({...y,target:"finding"})):[],p=Nr(i,a,d,dt(t)?l?.version===2?l.diagnostics:e.findingHeadlineDiagnostics:void 0),h=p.rows,f=e.readPaths??Object.fromEntries(n.map(y=>[y.key,Object.keys(y.files??{})])),g;if(tc(t)){let y=Ya(r,e.findingQuality?.codeEvidence),k=e.inspectPlan?.passes.map((b,x)=>e.passResults?.[x]?.findings??e.passFindings?.[x]??[])??e.passFindings??[];g={log:ec({plan:e.inspectPlan??null,readByRepo:f,loaded:y,graph:r,passFindings:k.filter(b=>Array.isArray(b))}),unreachedIndexes:y===null?null:Za(y,i.map(b=>({siteRepo:b.siteRepo??null,sitePath:b.site?.path??null})))}}let u=0,m=0;for(let y of n)for(let k of Object.values(y.files??{}))u++,m+=k.length;let w=st(e);return{graph:r,model:N.generate,analyzedShaByRepo:Object.fromEntries(n.map(y=>[y.key,y.headSha??""])),sourceStats:{files:u,bytes:m,...w===void 0?{}:{sawCode:w}},...g?{recall:g}:{},warnings:[...new Set([...e.warnings??[],...o,...c])],findings:i,...h.length?{findingHeadlines:h}:{},...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(y=>[y.key,y.files??{}])),readPaths:f,rechecks:e.rechecks??[],recheckedChangeIds:e.recheckedChangeIds??[],newVerdicts:e.newVerdicts??[],...e.findingQuality?{findingQuality:e.findingQuality}:{}}}import{z as Wd}from"zod";function ds(e){let t=e.trim();return/[.!?…。!?][\u0022'\u201d\u2019)\]]*$/u.test(t)?t:`${t}.`}function oc(e,t,n){return t.kind==="structure"?`${ds(e)} ${ds(t.structure.title)}`:Gd(e,t,n)}function Gd(e,t,n){let o=e.trim();if(!un(t.category))return o;let s=[...t.site?[t.site]:[],...t.otherSites],r=new Map;for(let l of s){let d=r.get(l.path)??new Set;d.add(l.repo),r.set(l.path,d)}let i=new Set,c=s.flatMap(l=>{let d=JSON.stringify([l.repo,l.path]);return i.has(d)?[]:(i.add(d),[r.get(l.path).size>1&&l.repo?`${l.repo}:${l.path}`:l.path])}),a=t.question?.trim()||n.trim();return`${ds(o)} ${a}${c.length?` (${c.join(", ")})`:""}`}var sc=e=>e.match(/\d+(?:[.,]\d+)*/g)??[];function Xe(e,t,n=0){let o={};for(let{reason:s}of t)o[s]=(o[s]??0)+1;return{version:Be,rows:[...e],rejected:[...t],diagnostics:{requested:e.length+t.length,accepted:e.length,rejected:t.length,unexpectedRows:n,byReason:o}}}function ps(e,t){let n=Kr.safeParse(e);if(!n.success)return null;let o=n.data,s=new Set(t.map(i=>i.key));for(let i of[...o.rows,...o.rejected])if(!s.delete(i.key))return null;if(s.size)return null;let r=Xe(o.rows,o.rejected,o.diagnostics.unexpectedRows);return r.diagnostics.requested===t.length&&xo(r.diagnostics)===xo(o.diagnostics)?o:null}function Xn(e,t,n){let o={version:Be,rows:[],rejected:[],diagnostics:{requested:t.length,accepted:0,rejected:0,unexpectedRows:0,byReason:{}}},s=(d,p)=>{o.rejected.push({key:d,reason:p})},r=Ro.safeParse(e),i=new Map,c=new Set(t.map(d=>d.key)),a=r.success?r.data.rows:[];for(let d of a)i.set(d.key,(i.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,h=l.get(p);if(!r.success){s(p,"malformed_answer");continue}if(!h){s(p,"missing_row");continue}if(i.get(p)!==1){s(p,"duplicate_key");continue}if(h.headline===null&&h.ifLeft===null){s(p,"model_declined");continue}if(!h.headline?.trim()||!h.ifLeft?.trim()){s(p,"incomplete_pair");continue}let f=bo(h);if(!f){s(p,"invalid_wording");continue}let g=new Set([d.excerpt??"",...d.otherSites.map(m=>m.excerpt)].flatMap(sc));if([f.headline,f.ifLeft].some(m=>sc(m).some(w=>!g.has(w)))){s(p,"unsupported_number");continue}if(un(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 u=oc(f.headline,d,n);if(!bo({...f,headline:u})){s(p,"invalid_wording");continue}o.rows.push({key:p,headline:u,ifLeft:f.ifLeft})}return Xe(o.rows,o.rejected,o.diagnostics.unexpectedRows)}var zt=48e3;function My(e,t){return e?[Oe(t,{template:"finding-headlines"},"Finding headlines",_t,Ye(zt),It)]:[]}async function rc(e,t,n){let o=jr(t.evidence),s=e.tools.headlinePlan(o),r=Br(t,{prompt:e.tools.promptVersion(o.template),model:o.model,limits:o.limits,maxInputBytes:zt,request:s.identity,compositionVersion:2,resultVersion:Be}),i=a=>{let l=Oo(t,a.rows);if(l.rejected.length){let d=new Set(l.rejected.map(p=>p.key));a=Xe(a.rows.filter(p=>!d.has(p.key)),[...a.rejected,...l.rejected],a.diagnostics.unexpectedRows)}return{version:Be,inputHash:r,done:!0,rows:l.rows,rejected:a.rejected,diagnostics:a.diagnostics}},c=a=>i(Xe([],t.evidence.map(l=>({key:l.key,reason:a}))));if(n?.done)return n.version===Be&&n.inputHash===r?n:c("stale_checkpoint");if(!t.evidence.length)return i(Xe([],[]));if(!e.available)return c("model_unavailable");if(s.inputBytes>zt)return c("over_input_allowance");try{let a=await A(e,o,{},{maxInputBytes:zt}),l=s.relayValidated?ps(a,t.evidence):Xn(a,t.evidence,s.fallbackQuestion??"");return l?i(l):c("incompatible_relay_result")}catch(a){return e.rethrow(a),c(a instanceof li||a instanceof Wd.ZodError?"malformed_answer":"provider_failure")}}function Yy(e){return dt(e)?[z(e,"finding-headlines","findingHeadlines",_t,1,ue,It)]:[]}var Zy=async(e,t)=>{if(t.progress.assertHeld(),t.progress.signal?.throwIfAborted(),!dt(e.settings))return{next:"persisting",set:{},clear:[]};let n=await Ee(t),o=le(t.model,n,a=>{t.progress.signal?.throwIfAborted(),t.progress.assertHeld(),t.progress.rethrow?.(a)},t.progress.signal),{findings:s,structures:r}=nc(e),i=Dr(s,r),c=await rc(o,i,e.state.findingHeadlines);return t.progress.signal?.throwIfAborted(),t.progress.assertHeld(),await t.progress.checkpoint({findingHeadlines:c}),{next:"persisting",set:{findingHeadlines:c},clear:[]}};function Qn(e){let t=e,n=t.expectedOutcome?.trim();return{motivation:t.motivation??[],outcomes:t.outcomes??(n?[{improvement:n,measurement:""}]:[])}}import{createHash as op}from"node:crypto";import{basename as yc}from"node:path";var fs=["split_monolith","single_source","fold_patches","extract_subagent","merge_subagents","move_rule","move_tool","reorder"],us=["create","shrink","edit","delete"],ms=["system prompt","soul","knowledge","skill","config","tools","mcp","template","reference","log","code"],hs=["always","on_demand","never"],gs=["move","fold_into","remove_duplicate","remove_superseded"],ws=["pointer","handoff","reference_update"];var ks=/^ {0,3}(`{3,}|~{3,})/,ic=/^(#{1,6})\s+\S/,Ss=/^(\s*)([-*+]|\d+[.)])\s+/,ys=/^\s*\|/;function q(e){let t=e.split(`
|
|
25
|
+
`);return t.length>1&&t[t.length-1]===""&&t.pop(),t}function se(e,t){let n=q(t),o=[],s=(c,a,l,d=0)=>o.push({kind:c,start:a+1,end:l+1,level:d,text:n[a]}),r=0,i=zs(t,Ct(e)?void 0:"outline");if(i){let c=i.raw.length+1;s("frontmatter",0,c),r=c+1}for(;r<n.length;){let c=n[r];if(c.trim()===""){r++;continue}let a=ks.exec(c);if(a){let h=r+1;for(;h<n.length;){let g=ks.exec(n[h]);if(g&&g[1][0]===a[1][0]&&g[1].length>=a[1].length&&!n[h].slice(g[0].length).trim())break;h++}let f=Math.min(h,n.length-1);s("fence",r,f),r=f+1;continue}let l=ic.exec(c);if(l){s("heading",r,r,l[1].length),r++;continue}if(ys.test(c)){let h=r;for(;h+1<n.length&&ys.test(n[h+1]);)h++;s("table",r,h),r=h+1;continue}let d=Ss.exec(c);if(d){let h=d[1].length,f=r;for(;f+1<n.length&&n[f+1].trim()!==""&&!Ss.test(n[f+1])&&n[f+1].length-n[f+1].trimStart().length>h;)f++;s("list_item",r,f,h),r=f+1;continue}let p=r;for(;p+1<n.length&&n[p+1].trim()!==""&&!ks.test(n[p+1])&&!ic.test(n[p+1])&&!ys.test(n[p+1])&&!Ss.test(n[p+1]);)p++;s("paragraph",r,p),r=p+1}return o}function Vd(e){return e.kind==="frontmatter"||e.kind==="fence"||e.kind==="table"||e.kind==="list_item"}function Yn(e,t,n){let o=t,s=n,r=!0;for(;r;){r=!1;for(let i of e){if(!Vd(i))continue;i.start<=s&&i.end>=o&&(i.start<o||i.end>s)&&(o=Math.min(o,i.start),s=Math.max(s,i.end),r=!0)}}return{start:o,end:s,snapped:o!==t||s!==n}}var zd=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),ac=(e,t)=>new RegExp(`(^|[\\s\`'"(])${zd(t)}($|[\\s\`'"),.:;])`).test(e);function Jd(e,t){let n=e.segments.map((i,c)=>({...i,index:c})),o=n.filter(i=>(i.disposition==="move"||i.disposition==="remove_superseded")&&t.has(i.to)),s=new Set([...o.filter(i=>i.disposition==="move").map(i=>i.path),...t]),r=n.filter(i=>(i.disposition==="remove_duplicate"||i.disposition==="fold_into")&&(s.has(i.path)||t.has(i.to)));return[...o,...r].sort((i,c)=>i.index-c.index)}var lc=(e,t,n)=>e.find(o=>o.path===t&&n>=o.startLine&&n<=o.endLine)??null;function xs(e,t,n){let o=lc(e,t,n);return o?o.disposition==="move"||o.disposition==="remove_superseded"?o.to:o.into?xs(e,o.into.path,o.into.line):o.to:t}function Qe(e){return e===""||e.includes(`
|
|
26
|
+
`)||e.includes(": ")||e.endsWith(":")||/^[\s"'[\]{}#>|*&!%@`,]/.test(e)||/\s$/.test(e)?JSON.stringify(e):e}var Xd=e=>{let t=/^(#{1,6})\s+(.*)$/.exec(e);return t?t[2].trim():null};function cc(e,t,n,o,s){let r=()=>{t.lines.length&&t.lines[t.lines.length-1].trim()!==""&&(t.lines.push(""),t.prov.push("heading"))};if(n){let i=se(e,t.lines.join(`
|
|
27
|
+
`)).filter(a=>a.kind==="heading"),c=i.findIndex(a=>Xd(a.text)===n.trim());if(c>=0){let a=i[c],l=t.lines.length;for(let d=c+1;d<i.length;d++)if(i[d].level<=a.level){l=i[d].start-1;break}t.lines.splice(l,0,...o),t.prov.splice(l,0,...s);return}r(),t.lines.push(`## ${n}`,""),t.prov.push("heading","heading")}else r();t.lines.push(...o),t.prov.push(...s)}function dc(e,t){let n=new Set(t.ticked),o=Jd(t.body,n),{files:s}=t.body,r=[],i=[],c=[],a=new Map,l=u=>q(t.contents[u]??""),d=u=>({lines:l(u),prov:l(u).map((m,w)=>`${u}:${w+1}`),created:!1});for(let u of[...new Set(o.map(m=>m.path))]){let m={lines:[],prov:[],created:!1};l(u).forEach((k,b)=>{lc(o,u,b+1)||(m.lines.push(k),m.prov.push(`${u}:${b+1}`))});let w=s.find(k=>k.path===u),y=m.lines.filter(k=>k.trim()!=="").length;if(w?.action==="delete"&&y===0){c.push(u);continue}w?.action==="delete"&&r.push(`${u} keeps ${y} lines this time, so it is shrunk, not deleted`),a.set(u,m)}for(let u of o){if(u.disposition==="move")continue;let m=u.disposition==="remove_duplicate"?`duplicate_of ${u.into?.path??u.to}`:u.disposition==="remove_superseded"?`superseded_by ${u.childRef??""}`:`folded_into ${u.into?.path}:${u.into?.line}`;i.push({quote:l(u.path).slice(u.startLine-1,u.endLine).join(`
|
|
28
|
+
`),sourcePath:u.path,sourceLine:u.startLine,reason:m,ref:u.childRef??""})}for(let u of s){if(!n.has(u.path)||u.action==="delete"||u.action==="shrink")continue;let m=a.get(u.path)??(t.contents[u.path]!=null?d(u.path):{lines:[],prov:[],created:!0});if(m.created&&u.frontmatter){let w=["---",`name: ${Qe(u.frontmatter.name)}`,`description: ${Qe(u.frontmatter.description)}`,...u.frontmatter.tools.length?[`tools: ${ct(e,u.frontmatter.tools)}`]:[],"---"];m.lines.push(...w),m.prov.push(...w.map(()=>"frontmatter"))}for(let w of o.filter(y=>y.to===u.path&&y.disposition==="move")){let y=l(w.path).slice(w.startLine-1,w.endLine);cc(e,m,w.heading,y,y.map((k,b)=>`${w.path}:${w.startLine+b}`))}a.set(u.path,m)}let p=new Set;for(let u of o)u.into&&(u.disposition==="fold_into"||u.disposition==="move")&&p.add(xs(o,u.into.path,u.into.line));let h=t.body.reorder;h&&p.add(xs(o,h.path,h.startLine));for(let u of t.childSites)p.add(u.host);for(let u of p)!a.has(u)&&t.contents[u]!=null&&a.set(u,d(u));let f=[];t.body.additions.forEach((u,m)=>{if(!a.has(u.path)&&t.contents[u.path]!=null&&a.set(u.path,d(u.path)),!a.has(u.path)){r.push(`no host found for the addition to ${u.path} (addition:${m})`);return}if(!(u.kind==="pointer"&&!t.ticked.some(w=>ac(u.text,w)))){if(u.kind==="reference_update"){f.push(m),p.add(u.path);return}cc(e,a.get(u.path),u.heading,[u.text],[`addition:${m}`])}});let g=[...p].filter(u=>a.has(u)).sort();return{outputs:[...a.entries()].sort(([u],[m])=>u.localeCompare(m)).map(([u,m])=>({path:u,content:`${m.lines.join(`
|
|
29
|
+
`)}
|
|
30
|
+
`,provenance:m.prov,created:m.created})),deletes:c.sort(),removals:i,modelHosts:g,pendingAdditions:f,warnings:r}}function Zn(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 pc}from"node:path";var Qd=/(read|open|cat|file)/i;function Yd(e){return e.some(t=>Qd.test(`${t.name} ${t.description??""}`))}function fc(e,t){if(!e)return[];let n=e.files.find(r=>r.role==="tools"),o=[];if(n)try{o=vt(t[n.path]).tools.map(r=>({name:r.name,description:r.description??null}))}catch{o=[]}let s=new Map(o.map(r=>[r.name,r]));for(let r of e.tools)r.source!=="mcp"&&(s.has(r.label)||s.set(r.label,{name:r.label}));return[...s.values()]}function bs(e){return Yd(e)?"on_demand":"never"}function uc(e,t){return t.existing?t.existing.mode:e.role==="skill"?fe(e.path,{nested:!0})?"on_demand":"never":e.role==="log"?"never":e.role!=="template"&&e.role!=="reference"?"always":t.prompt?.frontmatter?bs(t.prompt.frontmatter.tools.map(n=>({name:n}))):bs(fc(t.node,t.files))}var Zd=/sent from (\S+:\d+)\.?\s*$/;function mc(e,t){let{repoKey:n,root:o,files:s,fragment:r}=t,i=[],c=new Set(r.edges.filter(g=>g.kind==="delegates").map(g=>g.to)),a=new Map;for(let g of r.nodes)for(let u of g.files)a.set(u.path,[...a.get(u.path)??[],{nodeId:g.id,label:g.label,role:u.role,skill:u.label,inCode:u.span!==void 0}]);let l=g=>(r.nodes.find(u=>u.id===g)?.files??[]).filter(u=>["system prompt","soul","knowledge","skill"].includes(u.role)).map(u=>u.path),d=(g,u,m=()=>!0)=>{for(let w of l(g)){let k=(s[w]??"").split(`
|
|
31
|
+
`).findIndex(b=>b.includes(u)&&m(b));if(k>=0)return`${w}:${k+1}`}return null},p=g=>ie(g,o)??g,h=new Map,f=[];for(let g of Object.keys(s).filter(u=>ln(u,o)).sort()){let u=a.get(g)?.[0]??null,m=u?`${n}#${u.nodeId}`:null,w={repo:n,path:g,unit:m,role:u?.role??null};if(!u){f.push({...w,mode:"never",via:"not a convention, not referenced",evidence:""});continue}switch(u.role){case"system prompt":{let y="convention";if(c.has(u.nodeId))y="sub-agent file; its parent sees only the frontmatter description";else if(u.inCode){let k=r.nodes.find(x=>x.id===u.nodeId)?.desc??"",b=Zd.exec(k)?.[1];y=b?`system prompt in code, sent from ${b}`:"system prompt in code"}f.push({...w,mode:"always",via:y,evidence:""});break}case"code":f.push({...w,mode:"never",via:"code that sends the prompt; the model never reads it",evidence:""});break;case"soul":case"knowledge":{let y=pc(g),k=d(u.nodeId,y,b=>/\b(not|never)\b.*\b(loaded|read)\b/i.test(b));f.push(k?{...w,mode:"never",via:"a line in the files says it is not loaded",evidence:k}:{...w,mode:"always",via:"Counterfact's runner appends it (src/lib/run/execute.ts:242-243)",evidence:""});break}case"tools":case"mcp":case"config":{let y=!0;try{u.role==="tools"?vt(s[g]):JSON.parse(s[g])}catch{y=!1}f.push(y?{...w,mode:"always",via:u.role==="config"?"config":"tool definitions",evidence:""}:{...w,mode:"unknown",via:"unreadable config",evidence:""});break}case"skill":{let y=lt(e,pc(g),s[g]),k=y.description??null;i.push(...(y.warnings??[]).map(b=>`${n}: ${g}: ${b}`)),f.push({...w,mode:"on_demand",via:k?`skill trigger \u2014 description: ${k}`:"skill trigger",evidence:"",evidenceKind:"skill-frontmatter"});break}default:{let y=d(u.nodeId,p(g))??(u.skill?`skill ${u.skill}`:""),k=r.nodes.find(b=>b.id===u.nodeId)??null;if(bs(fc(k,s))==="on_demand")f.push({...w,mode:"on_demand",via:"named by a file the unit loads",evidence:y});else{let b=h.get(u.nodeId)??{label:u.label,paths:[]};b.paths.push(g),h.set(u.nodeId,b),f.push({...w,mode:"never",via:"pointer, but no file-reading tool",evidence:y})}}}}for(let{label:g,paths:u}of h.values()){let m=u.length;i.push(`${n}: ${m} reference file${m===1?"":"s"} can only be reached by a pointer, and ${g} has no file-reading tool, so it can't open them; for example: ${u.slice(0,5).join(", ")}`)}return{entries:f,warnings:i}}function eo(e,t,n){return e.find(o=>o.repo===t&&o.path===n)??null}var ep="<!-- counterfact: proposed file -->";function wt(e,t){return e.startsWith(`${t}#`)?e.slice(t.length+1):null}function hc(e,t,n){if(Ct(e))return zr(t,n);if(!t.startsWith(`---
|
|
32
|
+
`)){let a=n([]);return a.length?`---
|
|
33
|
+
tools: ${a.join(", ")}
|
|
34
|
+
---
|
|
35
|
+
${t}`:t}let o=t.indexOf(`
|
|
36
|
+
---`,3),s=t.slice(4,o).split(`
|
|
37
|
+
`),r=s.findIndex(a=>/^tools\s*:/i.test(a)),i=r>=0?s[r].replace(/^tools\s*:\s*/i,"").replace(/^\[|\]$/g,"").split(",").map(a=>a.trim()).filter(Boolean):[],c=n(i);return r>=0?c.length?s[r]=`tools: ${c.join(", ")}`:s.splice(r,1):c.length&&s.push(`tools: ${c.join(", ")}`),`---
|
|
38
|
+
${s.join(`
|
|
39
|
+
`)}${t.slice(o)}`}function gc(e,t){let n=JSON.parse(e);return Array.isArray(n)?`${JSON.stringify(t(n),null,2)}
|
|
40
|
+
`:`${JSON.stringify({...n,tools:t(n.tools??[])},null,2)}
|
|
41
|
+
`}function tp(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 kc(e,t,n,o,s,r=[]){let i={...t};for(let c of n.files)if(c.action==="delete"&&delete i[c.path],c.action==="create"){let a=c.frontmatter?`---
|
|
42
|
+
name: ${Qe(c.frontmatter.name)}
|
|
43
|
+
description: ${Qe(c.frontmatter.description)}
|
|
44
|
+
${c.frontmatter.tools.length?`tools: ${ct(e,c.frontmatter.tools)}
|
|
45
|
+
`:""}---
|
|
46
|
+
`:"";i[c.path]=`${a}${ep}
|
|
47
|
+
`}for(let c of n.additions)c.kind==="reference_update"||i[c.path]==null||(i[c.path]=`${i[c.path].replace(/\n?$/,`
|
|
48
|
+
`)}${c.text}
|
|
49
|
+
`);for(let c of n.toolMoves){let a=np(e,i,{tool:c.tool,fromPath:c.fromPath??Xt(o,n,c.fromUnit,s),toPath:c.toPath??Xt(o,n,c.toUnit,s)});a&&r.push(a)}return i}function Xt(e,t,n,o){let s=wt(n,o);return s?tp(e,s):t.files.find(r=>r.unit===n&&r.role==="system prompt")?.path??null}function np(e,t,n){let{tool:o,fromPath:s,toPath:r}=n;if(Ct(e)){for(let i of[s,r])if(i&&t[i]!=null&&!i.endsWith(".json")&&Vr(t[i]).error)return`${i}: tools could not be read; moving ${o} was skipped.`}return s&&t[s]!=null&&(t[s]=s.endsWith(".json")?gc(t[s],i=>i.filter(c=>c.name!==o)):hc(e,t[s],i=>i.filter(c=>c!==o))),r&&t[r]!=null&&(t[r]=r.endsWith(".json")?gc(t[r],i=>i.some(c=>c.name===o)?i:[...i,{...n.object??{},name:o}]):hc(e,t[r],i=>i.includes(o)?i:[...i,o])),null}function Sc(e,t){let n=Je(e,Gt(e,t));return fn(n.fragment,t.repoKey).fragment}var wc=e=>e.files.map(t=>t.path).sort().join(`
|
|
50
|
+
`),Jt=(e,t)=>e.nodes.find(n=>n.files.some(o=>o.path===t))??null;function to(e,t,n,o){let s=m=>`${o}#${m}`,r=new Map(e.nodes.map(m=>[m.id,m])),i=new Map(t.nodes.map(m=>[m.id,m])),c=[];for(let[m,w]of i)r.has(m)?wc(r.get(m))!==wc(w)&&c.push({id:s(m),change:"edited",label:w.label}):c.push({id:s(m),change:"added",label:w.label});for(let[m,w]of r)i.has(m)||c.push({id:s(m),change:"removed",label:w.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}))],h=(m,w)=>{let y=w?Jt(t,m)??Jt(e,m):Jt(e,m)??Jt(t,m);return y?s(y.id):""},f=n.files.map(m=>{let w=n.segments.filter(O=>O.disposition==="move"&&O.to===m.path&&O.path!==m.path),y=n.segments.filter(O=>O.path===m.path),k=h(m.path,m.action!=="delete"),b,x={};if(m.action==="delete")b="removed";else if(m.action==="create"){let O=[...new Set(w.map(E=>E.path))],$=O.length===1&&n.files.some(E=>E.path===O[0]&&E.action==="delete"),v=O.length===1?h(O[0],!1):"";$&&v&&v!==k?(b="moved",x={fromNode:v,fromPath:O[0]}):b="added"}else w.length?b="grown":n.reorder?.path===m.path?b="reordered":y.length||m.action==="shrink"?b="shrunk":b="grown";return{path:m.path,role:m.role,node:k,change:b,...x,segments:w.length}});if(n.split){let m=new Set([...n.segments.map(w=>w.path),...(n.additions??[]).map(w=>w.path)]);for(let w of m){if(f.some(k=>k.path===w))continue;let y=Jt(e,w);f.push({path:w,role:y.files.find(k=>k.path===w).role,node:s(y.id),change:n.segments.some(k=>k.path===w)?"shrunk":"grown",segments:0})}}n.reorder&&!f.some(m=>m.path===n.reorder.path)&&f.push({path:n.reorder.path,role:"system prompt",node:h(n.reorder.path,!0),change:"reordered",segments:0});let g=m=>{if(wt(m,o))return m;let y=n.files.find(k=>k.unit===m);return y?h(y.path,!0):m},u=n.toolMoves.map(m=>({label:m.tool,fromNode:g(m.fromUnit),toNode:g(m.toUnit)}));return{nodes:c,edges:p,files:f,tools:u}}var xc=["ordering","reliability","coverage","cost","safety","correctness"],Qt=["low","medium","high","critical"];function Os(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 Pe=(e,t)=>e.includes(t);function sp(e){if(!Pe(fs,e.subKind))return`sub-kind "${e.subKind}" is not one of ${fs.join(", ")}`;if(!Pe(xc,e.kind))return`impact "${e.kind}" is not one of ${xc.join(", ")}`;if(e.reorders.length>1)return"more than one reorder";let t=[];for(let i of e.files){if(!Pe(us,i.action))return`${i.path}: action "${i.action}" is not one of ${us.join(", ")}`;if(!Pe(ms,i.role))return`${i.path}: role "${i.role}" is not one of ${ms.join(", ")}`;if(!Pe(hs,i.loadMode))return`${i.path}: load mode "${i.loadMode}" is not one of ${hs.join(", ")}`;let c=i.fmName||i.fmDescription||i.fmTools.length?{name:i.fmName,description:i.fmDescription,tools:i.fmTools}:null;t.push({path:i.path.trim(),action:i.action,role:i.role,unit:i.unit,loadMode:i.loadMode,loadVia:i.loadVia||null,purpose:i.purpose,frontmatter:c})}let n=[];for(let i of e.segments){if(!Pe(gs,i.disposition))return`${i.path}:${i.startLine}-${i.endLine}: disposition "${i.disposition}" is not one of ${gs.join(", ")}`;let c=i.intoPath?{path:i.intoPath.trim(),line:i.intoLine}:null,a=i.disposition==="remove_duplicate"||i.disposition==="fold_into",l=i.to.trim()||(a&&c?c.path:"");n.push({path:i.path.trim(),startLine:i.startLine,endLine:i.endLine,to:l,disposition:i.disposition,into:c,childRef:i.childRef||null,heading:i.heading||null,reason:i.reason})}let o=[];for(let i of e.additions){if(!Pe(ws,i.kind))return`addition to ${i.path}: kind "${i.kind}" is not one of ${ws.join(", ")}`;o.push({path:i.path.trim(),text:i.text,kind:i.kind,heading:i.heading||null})}let s=e.reorders[0],r=Pe(Qt,e.severity)?e.severity:"medium";return{body:{...Qn(e),subKind:e.subKind,kind:e.kind,severity:r,title:e.title.trim(),cause:e.cause,evidence:e.evidence.map(i=>({path:i.path.trim(),line:i.line,excerpt:i.excerpt})),files:t,segments:n,additions:o,reorder:s?{path:s.path.trim(),startLine:s.startLine,endLine:s.endLine,steps:s.order.map((i,c)=>({from:i,reason:s.reasons[c]||null}))}:null,toolMoves:e.toolMoves.map(i=>({...i,fromPath:null,toPath:null}))},children:e.children.map(i=>({ref:i.ref.trim(),how:i.how}))}}function rp(e,t){let n=[],o=[],s=[],r=(i,c)=>{n.push(`proposal "${i}": ${c} \u2014 dropped`),o.push({title:i,reason:c})};for(let i of t.raw){let c=sp(i);if(typeof c=="string"){r(i.title,c);continue}let{body:a}=c,l=c.children,d=`proposal "${a.title}"`;if(a.files.length>Io){r(a.title,`${a.files.length} files (cap ${Io})`);continue}if(a.segments.length>Po){r(a.title,`${a.segments.length} segments (cap ${Po})`);continue}let p=Os(a),h=new Set(a.files.filter(S=>S.action==="create").map(S=>S.path)),f=p.filter(S=>!h.has(S)),g=f.length>0?t.repos.find(S=>f.every(R=>S.files[R]!=null)):void 0;if(!g){r(a.title,`cites ${f[0]??p[0]??"no source file"}, which the analysis never read`);continue}let u=S=>g.files[S]!=null,w=[...a.files.map(S=>S.path),...a.segments.map(S=>S.path),...a.additions.map(S=>S.path),...a.reorder?[a.reorder.path]:[]].map(S=>X(S)?`${S} is code \u2014 the structural pass moves instructions only`:ln(S,g.root)?h.has(S)?u(S)?`creates ${S}, which exists`:null:u(S)?null:`${S} is not a file the analysis read`:`${S} is outside the agent's root ${g.root}`).find(Boolean);if(w){r(a.title,w);continue}let y=[];for(let S of a.evidence.slice(0,4)){let R=u(S.path)?me(g.files[S.path],S.excerpt):null;R==null?n.push(`${d}: evidence at ${S.path} is not a quote from the file \u2014 dropped`):y.push({...S,line:R})}a.evidence.length>4&&n.push(`${d}: ${a.evidence.length} evidence sites, kept the first 4`),a.evidence=y;let k=new Set(a.files.filter(S=>S.action!=="delete").map(S=>S.path)),b=null;for(let S of a.segments){let R=g.files[S.path];if(R==null){b=`segment ${S.path}:${S.startLine}-${S.endLine} is in a file that does not exist yet`;break}let _=q(R).length;if(S.startLine<1||S.endLine<S.startLine||S.endLine>_){b=`segment ${S.path}:${S.startLine}-${S.endLine} is outside the file`;break}let I=Yn(se(e,R),S.startLine,S.endLine);if(I.snapped&&(n.push(`${d}: segment ${S.path}:${S.startLine}-${S.endLine} cut an atomic block; widened to ${I.start}-${I.end}`),S.startLine=I.start,S.endLine=I.end),(S.disposition==="move"||S.disposition==="remove_superseded")&&!k.has(S.to)&&S.to!==S.path){b=`segment ${S.path}:${S.startLine}-${S.endLine} sends lines to ${S.to}, which is not a destination`;break}if((S.disposition==="fold_into"||S.disposition==="remove_duplicate")&&!S.into){b=`segment ${S.path}:${S.startLine}-${S.endLine} is ${S.disposition} with no target`;break}if(S.into&&!u(S.into.path)&&!h.has(S.into.path)){b=`segment ${S.path}:${S.startLine}-${S.endLine} folds into ${S.into.path}, which does not exist`;break}if(S.disposition==="move"&&S.into&&a.files.find(P=>P.path===S.to)?.role!=="log"){b=`segment ${S.path}:${S.startLine}-${S.endLine} names a fold target, which only a move into a log may do`;break}if(S.disposition==="remove_superseded"&&!(S.childRef&&l.some(P=>P.ref===S.childRef))){b=`segment ${S.path}:${S.startLine}-${S.endLine} is remove_superseded but names no child`;break}}if(!b){let S=[...a.segments].sort((R,_)=>R.path.localeCompare(_.path)||R.startLine-_.startLine);for(let R=1;R<S.length;R++)if(S[R].path===S[R-1].path&&S[R].startLine<=S[R-1].endLine){b=`overlapping segments in ${S[R].path}`;break}}if(!b){let S=a.segments.filter(_=>_.disposition!=="move"),R=a.segments.find(_=>_.into&&S.some(I=>I.path===_.into.path&&_.into.line>=I.startLine&&_.into.line<=I.endLine));R&&(b=`segment ${R.path}:${R.startLine}-${R.endLine} folds into a line this proposal removes`)}if(b){r(a.title,b);continue}let x=new Set,O=Zn(a),$=(S,R)=>R!=null&&a.segments.some(_=>_.path===S&&R>=_.startLine&&R<=_.endLine);if(l=l.filter(S=>{if(x.has(S.ref))return!1;x.add(S.ref);let R=/^f(\d+)$/.exec(S.ref),_=R?t.findings[Number(R[1])-1]:void 0;if(!_)return n.push(`${d}: child ${S.ref} is not a finding of this analysis \u2014 link dropped`),!1;let I=_.siteRepo===g.key;return I&&_.site&&$(_.site.path,_.site.line)||I&&_.otherSites.some(P=>$(P.path,P.line))||O.some(P=>S.how.includes(P))?!0:(n.push(`${d}: child ${S.ref} ("${_.title}") is not in a segment and its how names no destination \u2014 link dropped`),!1)}),l.length===0&&a.evidence.length<2){r(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 S=a.reorder,R=se(e,g.files[S.path]??"").filter(I=>I.kind==="list_item"&&I.level===0&&/^\s*\d+[.)]/.test(I.text)&&I.start>=S.startLine&&I.end<=S.endLine),_=S.steps.map(I=>I.from).sort((I,C)=>I-C);if(_.length!==R.length||_.some((I,C)=>I!==C+1)){r(a.title,`reorder of ${S.path}:${S.startLine}-${S.endLine} is not a permutation of its ${R.length} steps`);continue}}let v=s.find(S=>Os(S.body).some(R=>p.includes(R)));if(v){r(a.title,`shares ${Os(v.body).find(S=>p.includes(S))} with "${v.body.title}"`);continue}let E=l.map(S=>t.findings[Number(S.ref.slice(1))-1].severity);a.severity=E.length?E.reduce((S,R)=>Qt.indexOf(R)>Qt.indexOf(S)?R:S):Qt[Math.min(Qt.indexOf(a.severity),1)],s.push({repo:g.key,body:a,children:l})}for(let i of s.splice(Mt))r(i.body.title,`over the cap of ${Mt} proposals`);return{kept:s,warnings:n,dropped:o}}var ip=/\b(never|always|must|don't|do not)\b/i,ap=/^\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 cp(e){return ip.test(e)||ap.test(e)}function $s(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 lp(e,t){let n=Bs("",t),o=ie(e.path,t)??e.path,s=o.startsWith(".claude/")?".claude/":"",r=pe(e.frontmatter?.name||yc(o).replace(/\.md$/i,""));switch(e.role){case"skill":return`${n}${s}skills/${r}/SKILL.md`;case"system prompt":return`${n}${s}agents/${r}.md`;case"template":return`${n}templates/${yc(o)}`;default:return`${n}${o}, with a pointer from a file the agent always loads`}}function bc(e,t){let n=rp(e,t),o=[...n.warnings],s=[...n.dropped],r=[],i=(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(x=>x.key===l),p=Fe(d.root),h=t.fragments.find(x=>x.repoKey===l)?.fragment;if(!h){i(a.title,`no architecture graph for ${l}`);continue}let f=x=>`${l}#${x}`,g=x=>h.nodes.find(O=>O.id===wt(x,l))??null;for(let x of a.toolMoves)x.fromPath=Xt(h,a,x.fromUnit,l),x.toPath=Xt(h,a,x.toUnit,l);let u=a.toolMoves.find(x=>!x.fromPath||!x.toPath);if(u){i(a.title,`cannot find the tool list of ${u.fromPath?u.toUnit:u.fromUnit}`);continue}let m=Sc(e,{repoKey:l,root:p,files:kc(e,d.files,a,h,l,o)}),w=null;for(let x of a.files){if(x.action==="delete"||x.loadMode==="never"||x.action!=="create"&&x.action!=="edit")continue;let O=m.nodes.find(v=>v.files.some(E=>E.path===x.path));if(!O){w=`The agent would not load ${x.path} \u2014 put it at ${lp(x,p)}.`;break}let $=wt(x.unit,l);if($&&O.id!==$){w=`${x.path} would attach to ${f(O.id)}, not ${x.unit}`;break}if(!$&&h.nodes.some(v=>v.id===O.id)&&x.role==="system prompt"){w=`${x.path} would not be a new sub-agent`;break}if(!$&&x.role==="system prompt"&&!m.edges.some(v=>v.kind==="delegates"&&v.to===O.id)){w=`${x.path} would not be a sub-agent anyone delegates to`;break}}if(!w)for(let x of a.toolMoves){let O=wt(x.toUnit,l)??m.nodes.find(v=>v.files.some(E=>a.files.some(S=>S.unit===x.toUnit&&S.path===E.path)))?.id;if(!m.nodes.find(v=>v.id===O)?.tools.some(v=>v.label===x.tool)){w=`${x.tool} would not reach ${x.toUnit}`;break}}if(w){i(a.title,w);continue}for(let x of a.files){if(x.action==="delete"||x.action==="shrink")continue;let O=x.action==="create"?null:eo(t.loadModes,l,x.path),$=uc(x,{existing:O,node:g(x.unit),files:d.files,prompt:a.files.find(v=>v.unit===x.unit&&v.role==="system prompt")});if($!=="unknown"&&$!==x.loadMode){w=`declares ${x.path} ${x.loadMode}, but the conventions make it ${$}`;break}if(x.loadMode==="on_demand"&&x.role==="skill"&&x.action==="create"){let v=x.frontmatter?.description??"";if(!v||v.length>1024){w=`skill ${x.path} needs a description of at most 1024 characters to be triggered`;break}}if(x.loadMode==="on_demand"&&x.role!=="skill"&&!O){let v=E=>eo(t.loadModes,l,E)?.mode==="always"&&eo(t.loadModes,l,E)?.unit===x.unit||a.files.some(S=>S.path===E&&S.unit===x.unit&&S.loadMode==="always");if(!a.additions.some(E=>E.kind==="pointer"&&E.text.includes(x.path)&&v(E.path))){w=`${x.path} is read only on demand, but nothing the agent always loads points to it`;break}}}if(!w)for(let x of a.segments){let O=a.files.find(E=>E.path===x.to);if(x.disposition!=="move"||O?.loadMode!=="never"||x.into)continue;let v=(d.files[x.path]??"").split(`
|
|
51
|
+
`).slice(x.startLine-1,x.endLine).findIndex(cp);if(v>=0){w=`moves a rule into a file the agent never reads (${x.path}:${x.startLine+v} \u2192 ${x.to})`;break}}if(w){i(a.title,w);continue}let k=dc(e,{body:a,ticked:Zn(a),contents:d.files,childSites:[]}).outputs.map(x=>({path:x.path,bytes:Buffer.byteLength(x.content,"utf8")})).find(x=>x.bytes>_o);if(k){i(a.title,`would assemble ${k.path} at ${k.bytes} bytes (cap ${_o})`);continue}let b=Object.fromEntries($s(a,d.files).map(x=>[x,op("sha256").update(d.files[x]).digest("hex")]));r.push({...c,sourceHashes:b,delta:to(h,m,a,l)})}return{structures:r,warnings:o,dropped:s}}var dp=["low","medium","high","critical"];function no(e){return e.map((t,n)=>`f${n+1}`)}function vs(e,t){let n=no(e),o=e.flatMap((r,i)=>[r.site,...r.otherSites??[]].some(c=>c&&Et(c.path,t))?[]:[{...r,ref:n[i]}]),s=e.map(r=>({title:r.title,severity:dp.includes(r.severity)?r.severity:"medium",siteRepo:r.siteRepo,site:r.site,otherSites:(r.otherSites??[]).map(i=>({path:i.path,line:i.line}))}));return{items:o,candidates:s,refs:n}}var Es=N.generate;function pp(e,t){return{template:"derive-structure",model:Es,answerFormat:"structures",limits:{effort:"high"},inputs:{maxStructures:String(Mt),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:be(o),markdown:s,outline:s?se(e,o).map(r=>({...r,text:r.text.slice(0,60)})):[]}})}}}async function Oc(e,t,n){return(await A(t,pp(e,n),e)).structures}async function oo(e,t,n,o={}){let s=o.enforce??ss;if(t.length===0)return{kept:[],dropped:[],flagged:[],ran:!0};let r=await Da(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(!r)return{kept:t,dropped:[],flagged:[],ran:!1};let i=[],c=[],a=[];return t.forEach((l,d)=>{let p=r.get(d);if(p.inScope){i.push(l);return}let h={title:l.body.title,reason:p.reason};s?c.push(h):(a.push(h),i.push(l))}),{kept:i,dropped:c,flagged:a,ran:!0}}function fp(e,t,n,o=15e4){let s=new Set(t.flatMap(l=>[l.site?.path,...(l.otherSites??[]).map(d=>d.path)]).filter(l=>!!l)),r=l=>e.has(l)?0:s.has(l)?1:2,i=Object.keys(n).sort((l,d)=>r(l)-r(d)||n[l].length-n[d].length||(l<d?-1:1)),c={},a=0;for(let l of i)r(l)>0&&a+n[l].length>o||(c[l]=e.has(l)?ne(n[l]):n[l],a+=c[l].length);return c}function $c(e,t,n,o){return o?fp(U(t),n,Lt(e)):_n(e,t,void 0,new Set,void 0,{CF_READING_PRIORITY:"0"}).files}function vc(e){let t=no(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(r=>({...r,repo:r.repo??n.siteRepo}))),[{id:t[o],title:n.title,category:n.category,sites:s}]})}function Ec(e,t,n){return t===void 0?[]:e.filter(o=>o.sites.length>0&&o.sites.every(s=>s.repo===t&&n.some(r=>r.path===s.path&&(!r.span||s.line!==null&&s.line>=r.span.from&&s.line<=r.span.to))))}import{posix as up}from"node:path";function so(e,t,n=1){let o=se(e,t).filter(s=>s.kind==="heading");return o.map((s,r)=>({heading:s.text,startLine:s.start+n-1,endLine:(o.slice(r+1).find(i=>i.level<=s.level)?.start??q(t).length+1)+n-2,level:s.level}))}function Rc(e,t,n=1){let o=so(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:r})=>({startLine:s,endLine:r}))]:[{startLine:n,endLine:n+q(t).length-1}]}function _c(e,t,n){let o=new Map;for(let s of t.files.filter(r=>r.role==="tools")){let r=n[s.path]??"",i=[];try{i=vt(r).tools}catch{}let c=[...i,...fr(e,r).tools,...ur(r).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(r=>r.role==="mcp")?.path??""})}function Rs(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 Pc(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 Cc(e,t){if(!Rs(e).some(o=>o.id===t))return null;let n=Pc(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 Mc(e,t){return Rs(t.graph).map(n=>hp(e,{...t,unitId:n.id}))}function Ic(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 r=s.label,i=t.files.filter(d=>d.role==="reference"&&(d.label===r||d.path.startsWith(up.dirname(s.path)+"/"))).map(d=>d.path).sort(),c=[s.path,...i],a=c.map(d=>n[d]??"").join(`
|
|
52
|
+
`),l=d=>d.filter(p=>He(a,{name:p,key:p,paths:[],bytes:0}));return{name:r,path:s.path,description:lt(e,s.path,n[s.path]??"").description?.trim()||"no description",bytes:c.reduce((d,p)=>d+Buffer.byteLength(n[p]??""),0),references:i,tools:l(t.tools.map(d=>d.label)),skills:l(o.flatMap(d=>d.label&&d.label!==r?[d.label]:[]))}}).sort((s,r)=>s.name.localeCompare(r.name))}function mp(e,t,n){return t.files.filter(o=>o.role==="system prompt"||o.role==="soul").map(o=>{let s=n[o.path]??"",r=o.span?.from??1,i=o.span?.to??q(s).length,c=q(s).slice(r-1,i).join(`
|
|
53
|
+
`);return{path:o.path,text:c,startLine:r,endLine:i,numberedText:be(s).split(`
|
|
54
|
+
`).slice(r-1,i).join(`
|
|
55
|
+
`),sections:so(e,c,r)}})}function hp(e,t){let{graph:n,files:o}=t,s=Rs(n);if(!t.unitId&&s.length!==1)throw new Error("Select one top-level agent for the split inventory.");let r=t.unitId?s.find(l=>l.id===t.unitId):s[0];if(!r)throw new Error(`No top-level agent named ${t.unitId} is available.`);let i=Pc(n,r.id),c=Ic(e,r,o),a=mp(e,r,o);return{agent:{id:r.id,name:r.label,description:r.desc,tools:r.tools.map(l=>l.label)},skills:c,tools:_c(e,r,o).map(l=>({...l,skills:c.filter(d=>d.tools.includes(l.name)).map(d=>d.name)})),subAgents:n.nodes.filter(l=>l.id!==r.id&&i.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:Ic(e,l,o)})),prompt:a[0]??null,prompts:a,knowledge:r.files.filter(l=>l.role==="knowledge").map(l=>({path:l.path,sections:so(e,o[l.path]??"")})),open:t.open.map(l=>({...l,frozen:[...l.frozen],declined:[...l.declined],files:[...l.files]})),findings:Ec(t.findings??[],t.repoKey,n.nodes.filter(l=>i.has(l.id)).flatMap(l=>l.files))}}function ro(e,t){return(t.repos??[]).flatMap((n,o)=>{let s=Mo(t,o);return Mc(e,{graph:s,files:n.files??{},open:t.openStructures??[],repoKey:n.key,findings:t.splitFindingsPriced?t.shapeFindings??[]:[]}).filter(r=>!Le(r.agent)).map(r=>({repo:n,graph:s,inventory:r}))})}function Ac(e){return e.findings.length>0||e.skills.length>=8||e.subAgents.length>=3||e.tools.length>=20}var _s=N.generate;function Fc(e){return{template:"derive-shape",model:_s,answerFormat:"shape",limits:{effort:"high"},inputs:{inventoryData:e,maxSubAgents:String(At),minSkills:String(yn)}}}function Cb(e,t){return e.tools.analysisRequest(Fc(t))}function Tc(e,t){return e.tools.validateShapeInput(t),A(e,Fc(t))}function Lc(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)),r=o.filter(l=>!s.has(l.id)),i=r[0];if(r.length!==1||i.id!==t.agent.id||i.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,i.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===i.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(h=>h.files.filter(f=>f.role==="skill"&&f.label===l.name&&!a.has(JSON.stringify([h.id,f.label,f.path]))).map(f=>({node:h.id,path:f.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(h=>h.role==="skill"&&h.label===p.name&&h.path===p.path))return`existing skill ${p.name} would no longer load on ${l.name}.`}return null}function Nc(e,t,n,o,s){let r=g=>({section:null,error:g}),{path:i,startLine:c,endLine:a}=t;if(!(n==="prompt"?o.prompts:o.knowledge).find(g=>g.path===i)||s[i]===void 0)return r(`${n} section ${i} is not an available ${n} file.`);let d=n==="prompt"?o.prompts.find(g=>g.path===i):null,p=d?.startLine??1,h=d?.endLine??q(s[i]).length;if(!Number.isInteger(c)||!Number.isInteger(a)||c<p||a<c||a>h)return r(`${n} section ${i}:${c}-${a} is outside its file or prompt span.`);let f=Yn(se(e,s[i]),c,a);return f.start<p||f.end>h?r(`${n} section ${i} snaps outside its prompt span.`):d&&Rc(e,d.text,d.startLine).some(g=>g.startLine<=f.end&&g.endLine>=f.start)?r(`prompt section ${i}:${f.start}-${f.end} would move the agent's identity.`):{section:{path:i,startLine:f.start,endLine:f.end},error:null}}var io=(e,t)=>e.path===t.path&&e.startLine<=t.endLine&&t.startLine<=e.endLine,T=e=>({shape:null,warnings:[`Split check discarded: ${e}`]});function jc(e,t,n){if(t.decision==="keep")return{shape:null,warnings:[]};if(t.decision!=="split")return T(`unknown decision "${t.decision}".`);if(t.subAgents.length<1||t.subAgents.length>At)return T(`a split needs 1\u2013${At} sub-agents.`);let{inventory:o,files:s}=n,r=new Set(o.skills.map(u=>u.name)),i=new Set(o.tools.map(u=>u.name)),c=new Set,a=u=>r.has(u)?c.has(u)?`skill ${u} is placed twice.`:(c.add(u),null):`unknown skill ${u}.`;for(let u of t.frontDoor.skills){let m=a(u);if(m)return T(m)}let l=new Set(o.subAgents.map(u=>pe(u.name))),d=new Set,p=[],h=new Set,f=[];for(let u of t.subAgents){if(u.skills.length<yn&&u.promptSections.length===0)return T(`sub-agent ${u.name} needs at least one skill or one prompt section.`);for(let O of u.skills){let $=a(O);if($)return T($)}for(let O of u.tools)if(!i.has(O))return T(`unknown tool ${O} on ${u.name}.`);if(!u.handoff.trim())return T(`sub-agent ${u.name} has an empty handoff.`);if(!u.description.trim()||u.description.length>1024)return T(`sub-agent ${u.name} needs a description of 1\u20131024 characters.`);if(!/[a-z0-9]/i.test(u.name))return T(`sub-agent "${u.name}" needs a usable name.`);let m=pe(u.name);if(l.has(m))return T(`the existing sub-agent ${m} already uses that name.`);let w=m,y=2;for(;d.has(w)||l.has(w);)w=`${m}-${y++}`;d.add(w);for(let O of u.resolves)if(!o.findings.some($=>$.id===O))return T(`unknown finding ${O} on sub-agent ${w}.`);let k=[];for(let O of u.evidence){let $=s[O.path]===void 0?null:me(s[O.path],O.excerpt);if($===null)return T(`evidence quote was not found in ${O.path}: "${O.excerpt}".`);k.push({...O,line:$}),h.add(`${O.path}:${$}:${O.excerpt.replace(/\s+/g," ").trim()}`)}let b=[],x=[];for(let[O,$,v]of[["prompt",u.promptSections,b],["knowledge",u.knowledgeSections,x]])for(let E of $){let S=Nc(e,E,O,o,s);if(S.error)return T(S.error);let R=S.section;if(O==="prompt"){if(p.some(_=>io(R,_)))return T(`prompt section ${R.path}:${R.startLine}-${R.endLine} is placed twice.`);p.push(R)}else if(x.some(_=>io(R,_)))return T(`knowledge section ${R.path}:${R.startLine}-${R.endLine} is listed twice on ${w}.`);v.push(R)}f.push({...u,name:w,skills:[...u.skills],tools:[...u.tools],resolves:[...new Set(u.resolves)],evidence:k,handoff:u.handoff.trim(),promptSections:b,knowledgeSections:x,movedKnowledge:[],neededKnowledge:[]})}for(let u of r)if(!c.has(u))return T(`skill ${u} is missing from the split.`);if(h.size<2)return T("a split needs at least two distinct evidence quotes.");for(let u of f)for(let m of u.knowledgeSections)(n.retainedKnowledge===void 0||n.retainedKnowledge.some(y=>io(y,m))||f.some(y=>y!==u&&y.knowledgeSections.some(k=>io(k,m)))?u.neededKnowledge:u.movedKnowledge).push(m);let g={...t,decision:"split",frontDoor:{...t.frontDoor,skills:[...t.frontDoor.skills]},subAgents:f};if(!n.afterGraph){let u=f[0].skills[0]?`moved skill ${f[0].skills[0]}`:`sub-agent ${f[0].name}`;return T(`cannot prove that ${u} would load without a loadability checker.`)}try{let u=Lc(g,o,n.afterGraph(g));return u?T(u):{shape:g,warnings:[]}}catch(u){return T(`loadability check failed: ${u instanceof Error?u.message:String(u)}.`)}}import{posix as Dc}from"node:path";function Yt(e,t,n){let o=n.scoped[0]??"",s=o.slice(0,o.length-n.stripRoot(o).length),r=n.scoped.some(a=>n.stripRoot(a).startsWith(`${er}/`)),i=`${s}${tr[r?0:1]}`,c=`${i}/${e}/skills/${t}`;return{agent:`${i}/${e}.md`,folder:c,skill:`${c}/SKILL.md`}}function ao(e,t,n,o){return e.subAgents.flatMap(s=>s.skills.flatMap(r=>{let i=t.skills.find(l=>l.name===r),c=Dc.dirname(i.path),a=Yt(s.name,Dc.basename(c),o).folder;return Object.keys(n).filter(l=>l.startsWith(`${c}/`)).sort().map(l=>({name:r,owner:s.name,from:l,to:a+l.slice(c.length),fromFolder:c,toFolder:a}))}))}import{posix as gp}from"node:path";var Is=e=>e.replace(/(?<!\.)[.!]$/,""),wp=e=>[...e.matchAll(/\bmcp__[^\s`"'()[\]{},;:<>]+/g)].map(t=>Is(t[0])),Bc=(e,t)=>He(e,{name:t,key:t,paths:[],bytes:0});function Kc(e,t,n,o){if(e.CF_SPLIT_HELPER_TOOLS==="0")return[...t.tools];if(t.noTools)return[];let s=n.skills.filter(u=>t.skills.includes(u.name)),r=Object.keys(o).filter(u=>s.some(m=>u.startsWith(gp.dirname(m.path)+"/"))),i=[...t.promptSections,...t.movedKnowledge,...t.neededKnowledge],c=[...r.map(u=>o[u]),...i.map(u=>q(o[u.path]??"").slice(u.startLine-1,u.endLine).join(`
|
|
56
|
+
`))].join(`
|
|
57
|
+
`),a=new Set([...n.agent.tools,...n.tools.map(u=>u.name)].filter(u=>!/[*?]/.test(u))),l=wp(c);if(l.some(u=>!a.has(u))||t.tools.some(u=>!a.has(u)))return null;let d=new Set(l.map(u=>u.slice(0,u.lastIndexOf("__")+2))),p=u=>{if(a.has(u))return u;let m=[...a].filter(k=>k.endsWith(`__${u}`)),w=m.filter(k=>d.has(k.slice(0,k.lastIndexOf("__")+2))),y=m.length===1?m:w;return y.length===1?y[0]:null},h=new Set(l);for(let u of a)Bc(c,u)&&h.add(u);let f=new Set([...a].flatMap(u=>/^mcp__.+__(.+)$/.exec(u)?.[1]??[]));for(let u of f){if(!Bc(c,u))continue;let m=p(u);if(!m)return null;h.add(m)}let g=[...[...c.matchAll(/`([^`\n]+)`/g)].flatMap(u=>{let m=u[1];return a.has(m)?[m]:/^[\w*?./-]+(?:\([^)]*\))?$/.test(m)?[m.replace(/\([^)]*\)$/,"")]:[]}),...[...c.matchAll(/(?:[*?]+[\w-]+|[\w-]+[*?])[\w*?.-]*/g)].map(u=>u[0]),...[...c.matchAll(/\b[a-z][\w*?.-]*_[\w*?.-]+/gi)].map(u=>Is(u[0])),...[...c.matchAll(/\b(?:call|invoke)\s+(?:the\s+)?(?:tool\s+)?`?([\w*?.-]+)/gi)].map(u=>Is(u[1]))];for(let u of g){let m=p(u);if(!m)return null;h.add(m)}return t.tools.length?[...t.tools]:h.size?[...h].sort():null}function co(e,t,n,o,s={}){let r={...o},i=te(e,Object.keys(o),s.root);for(let c of t.subAgents){let a=Kc(e,c,n,o);r[Yt(c.name,"",i).agent]=["---",`name: ${c.name}`,`description: ${Qe(c.description.replace(/\s+/g," "))}`,...a===null?[]:[`tools: ${a.length?ct(e,a):"[]"}`],"---",c.job].join(`
|
|
58
|
+
`)}for(let c of ao(t,n,o,i))delete r[c.from],r[c.to]=o[c.from];return r}function kp(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 Uc(e,t){return e.split?{...t,files:t.files.flatMap(n=>{if(n.change!=="shrunk"&&n.change!=="grown")return[n];let o=kp(e,n.path);return o==="grown"?[{...n,change:o}]:o==="unchanged"?[]:[n]})}:t}import{createHash as yp}from"node:crypto";var qc=e=>e.replace(/\s+/g," ").trim().replace(/[.!?]+$/,"").replace(/^./,t=>t.toLowerCase());function Hc(e,t){let n=e.frontDoor.name??t,o=e.subAgents.map(s=>qc(Sp(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: ${qc(e.frontDoor.job)}.${o.length?` Each helper gets its own skills and rules, and ${n} hands work to it.`:""}`}}function Sp(e){return(e.name.replace(/[-_]/g," ").replace(/\s+/g," ").trim()||e.job.trim()).replace(/^./,n=>n.toUpperCase())}function Gc(e,t,n,o,s){if(!n.prompt)throw new Error("An original prompt is needed for each handoff.");let r=n.prompt,{files:i,root:c}=s,a=te(e,Object.keys(i),c),l=ao(t,n,i,a),d=k=>Yt(k,"",a).agent,p=n.agent.name.replace(/^./,k=>k.toUpperCase()),h=new Map;for(let k of t.subAgents)for(let b of k.resolves){let x=h.get(b)??[];x.push(`${k.name} in ${d(k.name)}`),h.set(b,x)}let f=t.subAgents.flatMap(k=>[...k.promptSections,...k.movedKnowledge].map(b=>({...b,to:d(k.name),disposition:"move",into:null,childRef:null,heading:null,reason:k.job}))),g={...Qn(t),subKind:"extract_subagent",kind:"reliability",severity:"medium",...Hc({frontDoor:{...t.frontDoor,name:p},subAgents:t.subAgents},p),cause:t.reason,evidence:t.subAgents.flatMap(k=>k.evidence.map(b=>({...b}))),files:t.subAgents.map(k=>{let b=k.tools.filter(x=>!n.tools.find(O=>O.name===x).skills.some(O=>t.frontDoor.skills.includes(O)));return{path:d(k.name),action:"create",role:"system prompt",unit:`new:${k.name}`,loadMode:"always",loadVia:null,purpose:`${k.job}${b.length?` ${b.join(", ")}: only the sub-agent uses this.`:""}`,frontmatter:{name:k.name,description:k.description,tools:[...k.tools]}}}),segments:f,additions:t.subAgents.map(k=>({path:r.path,kind:"handoff",text:k.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(k=>({name:k.name,job:k.job,description:k.description,path:d(k.name),handoff:k.handoff,tools:[...k.tools],...k.noTools===void 0?{}:{noTools:k.noTools},resolves:[...k.resolves],skills:k.skills.map(b=>{let x=n.skills.find($=>$.name===b),O=l.find($=>$.from===x.path);if(!O)throw new Error(`The skill definition at ${x.path} is unavailable for its move.`);return{name:b,from:x.path,to:O.to}}),movedKnowledge:k.movedKnowledge.map(b=>({...b})),neededKnowledge:k.neededKnowledge.map(b=>({...b}))}))}},u=s.graphs?.before??Je(e,Gt(e,{repoKey:o,files:i,root:c})).fragment,m=s.graphs?.after??Je(e,Gt(e,{repoKey:o,files:co(e,t,n,i,{root:c}),root:c})).fragment,w=Uc(g,to(u,m,g,o));for(let k of l){let b=m.nodes.find(O=>O.files.some($=>$.path===d(k.owner)));if(!b)throw new Error(`The sub-agent at ${d(k.owner)} is missing from the discovered graph.`);let x=u.nodes.flatMap(O=>O.files).find(O=>O.path===k.from)?.role??(X(k.from)?"code":"reference");w.files.push({path:k.to,fromPath:k.from,role:x,node:`${o}#${b.id}`,fromNode:`${o}#${n.agent.id}`,change:"moved",segments:0})}let y=[...new Set([...$s(g,i),...l.map(k=>k.from),...t.subAgents.flatMap(k=>k.neededKnowledge.map(b=>b.path))])].sort();return{repo:o,body:g,children:[...h].map(([k,b])=>({ref:k,how:`Isolating ${b.join(" and ")} gives each job its own rules.`})),delta:w,sourceHashes:Object.fromEntries(y.map(k=>[k,yp("sha256").update(i[k]).digest("hex")]))}}var xp=1e3,bO=oi+4e3;function Wc(e,t,n={}){return oo(e,t,[],{...n,scopeRuleId:"split",maxTokens:xp})}function Vc(e,t,n){return t>0?[z(e,"derive-shape","shape",_s,t,n)]:[]}async function zc({state:e,settings:t},n,o,s){let r=[...e.warnings??[]],i=[...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(W(t,e).splitCheck&&e.splitCheckPriced){a=!0;let d=dn(e).remapping,p=ro(t,e).filter(({inventory:f})=>Ac(f)),h=await G(p,4,async({repo:f,graph:g,inventory:u})=>{n.progress.assertHeld(),n.progress.signal?.throwIfAborted();try{let m=f.files??{},w=await Tc(o,u),y=g,k=jc(t,w,{inventory:u,files:m,afterGraph($){return y=Wt(t,{...f,files:co(t,$,u,m,{root:f.root})},Vn(t,e),e.modelReader??!1,e.projectAgents,d,s,{verdicts:e.newVerdicts??[],failed:[]}).fragment,Cc(y,u.agent.id)??y}});if(!k.shape)return{structures:[],warnings:k.warnings,failed:k.warnings.length>0};let b=Gc(t,k.shape,u,f.key,{files:m,root:f.root,graphs:{before:g,after:y}}),x=await Wc(o,[b]),O=x.ran?x.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 x.ran||n.progress.log({level:"warn",code:"analysis.shape_check_failed"}),{structures:x.kept,warnings:O,failed:!x.ran}}catch(m){return l(m)}},o);for(let f of h)i.push(...f.structures),r.push(...f.warnings),c||=f.failed}}catch(d){r.push(...l(d).warnings),c=!0}return{next:"persisting",clear:[],set:{structuresRaw:i,warnings:r,splitCheckRan:a,splitPassFailed:c}}}var Ps=N.mechanical,Jc=20;function bp(e,t){if(!t)return null;for(let[n,o]of Object.entries(e).sort(([s],[r])=>s.localeCompare(r))){let s=me(o,t);if(s!=null)return{path:n,line:s}}return null}function Op(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=bp(n,t.excerpt);if(!o)return{childId:t.id,kind:"gone"};let s=e.newFindings.find(r=>r.category===t.category&&r.repo===t.repo&&r.sites.some(i=>i.path===o.path&&i.line!=null&&Math.abs(i.line-o.line)<=Jc));return s?{childId:t.id,kind:"match",matchIndex:s.index,location:o}:{childId:t.id,kind:"ask",location:o}})}function $p(e,t){return e.split(`
|
|
59
|
+
`).map((n,o)=>({text:n,line:o+1})).filter(n=>Math.abs(n.line-t)<=Jc).map(n=>`${n.line} ${n.text}`).join(`
|
|
60
|
+
`)}function vp(e){return{template:"structure-recheck",model:Ps,answerFormat:"recheck",inputs:e}}async function Xc(e,t,n){let o=[],s=[],r=`C-${t.change.seq}`;for(let i of Op(t)){n?.assertHeld(),n?.signal?.throwIfAborted();let c=t.children.find(l=>l.id===i.childId),a={childId:c.id,changeId:t.change.id};if(i.kind==="match"){s.push({...a,outcome:"present",note:`Still present in ${i.location.path} after ${r}`,matchIndex:i.matchIndex,location:i.location});continue}if(i.kind==="keep"&&i.reason==="repo_not_analysed"){o.push(`F-${c.seq}'s repository was not analysed after ${r}; it stays open.`),s.push({...a,outcome:"not_checked",note:`Not re-checked after ${r} \u2014 its repository was not analysed`,matchIndex:null,location:null});continue}if(i.kind==="keep"){o.push(`F-${c.seq} has no excerpt to re-check after ${r}; it stays open.`),s.push({...a,outcome:"present",note:`Still present after ${r}`,matchIndex:null,location:null});continue}if(i.kind==="gone"){s.push({...a,outcome:"resolved",note:`Resolved by ${r}`,matchIndex:null,location:null});continue}try{let l=await A(e,vp({childId:c.id,seq:c.seq,title:c.title,cause:c.cause,path:i.location.path,line:i.location.line,window:$p(t.filesByRepo[c.repo][i.location.path],i.location.line)}));l.verdict==="resolved"?s.push({...a,outcome:"resolved",note:`Resolved by ${r}: ${l.reason.slice(0,200)}`,matchIndex:null,location:null}):s.push({...a,outcome:"present",note:`Still present in ${i.location.path} after ${r}`,matchIndex:null,location:i.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 ${r}; it stays open.`),s.push({...a,outcome:"present",note:`Still present in ${i.location.path} after ${r}`,matchIndex:null,location:i.location})}}return{outcomes:s,warnings:o}}function Qc(e,t){return e>0?[z({},"structure-recheck","recheck",Ps,e,t)]:[]}async function Yc(e,t,n,o){let s=Object.fromEntries((e.repos??[]).map(a=>[a.key,a.files??{}])),r={outcomes:[],changeIds:[],warnings:[]},i;try{i=await t.context.loadPendingRechecks?.()??[]}catch(a){return n.rethrow(a),t.progress.log({level:"warn",code:"analysis.structure_recheck_load_failed"}),r}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 i){if(t.progress.assertHeld(),t.progress.signal?.throwIfAborted(),!s[a.repo])continue;let l=await Xc(n,{change:a.change,children:a.children,filesByRepo:s,newFindings:c},t.progress);r.outcomes.push(...l.outcomes),r.warnings.push(...l.warnings),l.outcomes.some(d=>d.outcome==="not_checked")||r.changeIds.push(a.change.id)}return r}function m$(e,t,n={}){let o=ue,s=Ce(e).splitCheck?n.structureState?ro(e,n.structureState).length:t.length:0;return[z(e,"derive-structure","structures",Es,1,o),z(e,"scope-items","structureScope",ut,1+s,o),...Qc(n.pendingRecheckChildren??0,o),...Vc(e,s,o)]}var h$=async(e,t)=>{if(t.progress.assertHeld(),t.progress.signal?.throwIfAborted(),!t.model)throw new Z("llm","llm gone mid-job");let n=await Ee(t),o=le(t.model,n,t.progress.rethrow,t.progress.signal);if(e.state.structurePhase==="shape"){let b=e.execution.forLocal?"":n.modelReaderPrompt();return zc(e,t,o,b)}let{state:s,settings:r}=e,i=s.repos??[],c=Q(s),a=Ne(c),{findings:l}=xe(nt(s.findingsRaw??[]),ve(s),Ie(s),r),d=gr(a),p=c.map(({repoKey:b,fragment:x})=>{let O=x.nodes.filter(v=>!Le(v)),$=new Set(O.map(v=>v.id));return{repoKey:b,fragment:{...x,nodes:O,edges:x.edges.filter(v=>$.has(v.from)&&$.has(v.to))}}}),h=i.map(b=>({...b,files:Object.fromEntries(Object.entries(b.files??{}).filter(([x])=>!Et(x,d)))})),f=Ne(p),g=vs(l,d),u=[...s.warnings??[]],m=c.flatMap(({repoKey:b,fragment:x},O)=>{let $=mc(r,{repoKey:b,root:i[O]?.root,files:i[O]?.files??{},fragment:x});return u.push(...$.warnings),$.entries}),w;try{let x=a.nodes.some(Le)&&!f.nodes.some(S=>S.kind==="agent")?[]:await Oc(r,o,{graph:f,files:$c(h,_e(p),l,W(r,s).multiPass),findings:g.items,loadModes:m.filter(S=>!Et(S.path,d)),open:s.openStructures??[]}),O=bc(r,{raw:x,findings:g.candidates,repos:h,fragments:p,loadModes:m});u.push(...O.warnings);let $=await oo(o,O.structures,l),v=$.dropped.length,E=$.flagged.length;v&&u.push(`${v} structural proposal${v===1?"":"s"} removed as out of scope`),E&&u.push(`${E} structural proposal${E===1?"":"s"} flagged by the scope check's model pass, but kept \u2014 that verdict is not enforced`),$.ran||u.push("the structural scope check did not run; proposals were kept unchecked"),w={structuresRaw:$.kept,structurePassFailed:!1,structureScopeCheck:{ran:$.ran},structureStats:{raw:x.length,flagged:E,droppedByValidation:O.dropped}}}catch(b){M("derive-structure",b,x=>o.rethrow(x)),t.progress.log({level:"warn",code:"analysis.structure_pass_failed"}),u.push("The structural pass failed; no structural proposals this time."),w={structuresRaw:[],structurePassFailed:!0}}let y=await Yc(s,t,o,l);u.push(...y.warnings);let k=W(r,s).splitCheck&&s.splitCheckPriced;return{next:k?"structuring":"persisting",clear:[],set:{...w,loadModes:m,warnings:u,rechecks:y.outcomes,recheckedChangeIds:y.changeIds,...k?{structurePhase:"shape"}:{},...k&&s.splitFindingsPriced?{shapeFindings:vc(l)}:{}}}};export{jn as a,Dn as b,Zo as c,oa as d,ze as e,An as f,Ra as g,ns as h,Gn as i,Je as j,yi as k,ne as l,ke as m,hl as n,gl as o,wl as p,yf as q,xf as r,bf as s,Of as t,Ca as u,ta as v,Nn as w,cd as x,Bt as y,sa as z,Dh as A,da as B,gd as C,ma as D,Ut as E,Ma as F,sl as G,Mo as H,Rp as I,Q as J,ve as K,Y as L,Wn as M,Vn as N,ck as O,Rd as P,lk as Q,dk as R,Wt as S,Ti as T,xn as U,mt as V,ht as W,Ha as X,Ka as Y,Tk as Z,My as _,ro as $,le as aa,_s as ba,Cb as ca,xp as da,bO as ea,nS as fa,oS as ga,JS as ha,XS as ia,nc as ja,Yy as ka,Zy as la,m$ as ma,h$ as na};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as C,b as a}from"./STZOC7LN.js";import{a as c}from"./VFENG4MR.js";import{z as t}from"zod";var F=Object.freeze(["CF_MULTI_PASS","CF_SPLIT_CHECK","CF_FINDING_CHECK","CF_SOURCE_NOTES","CF_PARALLEL_PASSES","CF_PASS_CONCURRENCY","CF_PARALLEL_SCOPE_CHECK","CF_FINDING_QUALITY","CF_FINDING_FULL_CONTEXT","CF_FINDING_PRECISION_RULES","CF_PROMPT_AGREE","CF_FINDING_SECOND_OPINION","CF_FINDING_RANKING","CF_FINDING_SEMANTIC_MATCHING","CF_FINDING_CODE_INPUTS","CF_FINDING_RECALL","CF_FINDING_RECALL_VARIANT","CF_FINDING_SECOND_OPINION_MODEL","CF_FINDING_SECOND_OPINION_PROVIDER","CF_FIX_EXPECTED_OUTCOME","CF_UNTRUSTED_CONTENT_CHECK","CF_FINDING_BETTER_AS_CODE","CF_CODE_AGENTS","CF_CODE_AGENTS_MODEL","CF_FINDING_DEDUPE","CF_ANALYSIS_IMPORTED_AGENTS","CF_RECALL_SIGNALS","CF_READING_NOTE_AGENT_ONLY","CF_SPLIT_HELPER_TOOLS","CF_CODE_PROMPT_LOADERS","CF_CODE_PROMPT_FUNCTIONS","CF_READING_PRIORITY","CF_LOCAL_SYMLINK_GUARD","CF_IMPORT_EXAMPLE_FILTER","CF_IMPORT_OUTSIDE_LOADERS","CF_SECRET_SCAN","CF_RESPECT_GITIGNORE","CF_IMPORT_COVERAGE","CF_IMPORT_MANIFEST","CF_IMPORT_SCOPED_SCAN","CF_IMPORT_INCLUDE_EXAMPLES","CF_IMPORT_WEAK_CODE_FALLBACK","CF_FINDING_HEADLINES","CF_CODE_IMPORT_V2","CF_IMPORT_LAYOUTS","CF_DISCOVERY_SKILLS","CF_IMPORT_CALLS","CF_PROMPT_CACHE","CF_MODEL_READER","CF_LEGACY_TOOL_LISTS"]),I=F.filter(e=>e!=="CF_IMPORT_OUTSIDE_LOADERS"&&e!=="CF_SECRET_SCAN"&&e!=="CF_RESPECT_GITIGNORE"&&e!=="CF_IMPORT_COVERAGE"&&e!=="CF_IMPORT_MANIFEST"&&e!=="CF_IMPORT_SCOPED_SCAN"&&e!=="CF_IMPORT_INCLUDE_EXAMPLES"&&e!=="CF_IMPORT_WEAK_CODE_FALLBACK");function N(e,i="request"){return Object.freeze(Object.fromEntries((i==="saved"?F:I).filter(_=>Object.hasOwn(e,_)).map(_=>[_,e[_]])))}var p=t.partialRecord(t.enum(I),t.string()),E=t.lazy(()=>t.union([t.string(),t.number(),t.boolean(),t.null(),t.array(E),t.record(t.string(),E)])),l=t.object({data:t.record(t.string(),E),settings:p,maxInputBytes:t.number().int().positive().optional()}).strict(),S=t.string().min(1).max(128).regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]*$/),T=t.object({maxTokens:t.number().int().positive().optional(),effort:t.enum(["low","medium","high","max"]).optional(),thinking:t.literal("disabled").optional(),promptCache:t.boolean().optional()}).strict(),A=t.object({template:t.string().min(1),inputs:l,answerFormat:t.string().min(1),model:S,limits:T.optional()}).strict();function P(e,i={},o){let _={data:e.inputs,settings:N(i),...o===void 0?{}:{maxInputBytes:o}};return A.parse({...e,answerFormat:Object.hasOwn(r,e.template)?R(e.template,e.answerFormat,i):e.answerFormat,limits:{...e.limits,promptCache:c(i,{template:e.template},e.model).enabled},inputs:JSON.parse(JSON.stringify(_))})}var n=(e,...i)=>Object.freeze({role:e,answerFormats:Object.freeze(i)}),s=a().map(e=>e.name),r=Object.freeze({"derive-findings":n("required",...s),"derive-findings-legacy":n("required",...s),"derive-findings-no-outcome":n("required",...s),"derive-findings-legacy-no-outcome":n("required",...s),"benchmark-judge":n("required","judge"),"judge-code-prompt":n("optional","codeJudge"),"derive-structure":n("optional","structures"),"structure-recheck":n("optional","recheck"),"derive-shape":n("optional","shape"),"scope-items":n("optional","structureScope"),"scope-findings":n("optional","scope"),"check-findings":n("optional","check"),"check-findings-precision-v1":n("optional","check"),"second-opinion":n("optional","opinion"),"explain-sources":n("optional","sourceNotes"),"finding-headlines":n("optional","findingHeadlines")});function D(){return r}function f(e,i,o){let _=o??(e==="derive"?"derive-findings":"check-findings");if(!Object.keys(r).filter(O=>r[O].answerFormats.includes(e==="derive"?"findings":"check")).includes(_))throw new Error("Unknown analysis template");return e==="derive"&&!C(i).switches.expectedOutcome&&!_.endsWith("-no-outcome")?`${_}-no-outcome`:_}function R(e,i,o){let _=i==="findings"?C(o).name:i;if(!Object.hasOwn(r,e)||!r[e].answerFormats.includes(_))throw new Error("Unsupported template answer format");return _}function g(e,i,o){if(o(i),!Object.hasOwn(r,e)||r[e].role!=="optional")throw i}export{F as a,N as b,l as c,S as d,T as e,A as f,P as g,D as h,f as i,R as j,g as k};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as r}from"./FSLWD2PE.js";function s(t){let e=Object.entries(r).find(([,n])=>n===t)?.[0]??t;return e==="contradiction"?["Says","But also says"]:e==="ambiguity"?["Unclear","Context"]:e==="bypassable_requirement"||e==="missing_requirement"?["Requirement","What actually happens","Why it's a gap"]:["Evidence","Context"]}export{s as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as c}from"./E7TFIHC5.js";function O({templates:n,descriptions:t}){function e(r,o={}){if(!Object.hasOwn(n,r))throw new Error(`Unknown template: ${r}`);return c(n[r],o,n)}function u(r,o={}){if(!Object.hasOwn(t,r))throw new Error(`Unknown description: ${r}`);return c(t[r],o)}function w(r,o=[]){if(!Object.hasOwn(n,r))throw new Error(`Unknown template: ${r}`);if(o.includes(r))throw new Error("Include cycle");return n[r].replace(/{{include ([a-z0-9-]+)}}/g,(f,i)=>w(i,[...o,r]))}return{templates:n,descriptions:t,bundleText:e,description:u,templateText:w}}export{O as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as S}from"./VER355VN.js";import{c as i,d as n,e as c,f as l,g as a,h as u,i as f,j as h,l as d}from"./YVDCJN7D.js";import{d as s}from"./3MTXB4MK.js";import{z as y}from"zod";function Q(e){let t=d(e),m=h(e);return{...t,headlinePlan(o){let r=t.analysisRequest(o),p=m.headlineFallbackQuestion();return{inputBytes:t.callInputBytes(r),fallbackQuestion:p,identity:{system:r.system,data:r.prompt,schema:y.toJSONSchema(r.schema),fallbackQuestion:p}}},modelReaderPrompt:()=>e.bundleText("model-reader-runtime-prompt"),validateShapeInput:o=>{a(e).shapeInputs(o)},...u(e),...n(e),...i(e),...s(e),...c(e),...l(e),...a(e),...f(e),...m,...S(e)}}export{Q as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as t}from"./3227KXHF.js";var r=16e3;function n(o){return!o.includes("haiku")}function i(o){return o.maxTokens??(n(o.model)?t:r)}export{r as a,n as b,i as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as m}from"./UEWL3GMQ.js";import{c as r,e as c,g as f}from"./EH3QQ3T4.js";import{a as o,b as a}from"./FSLWD2PE.js";import{z as i}from"zod";var u={expectedOutcome:{setting:"CF_FIX_EXPECTED_OUTCOME",enabled:e=>e.CF_FIX_EXPECTED_OUTCOME!=="0",suffix:"-no-outcome",suffixWhen:!1},untrustedContent:{setting:"CF_UNTRUSTED_CONTENT_CHECK",enabled:o,suffix:"-no-untrusted",suffixWhen:!1},betterAsCode:{setting:"CF_FINDING_BETTER_AS_CODE",enabled:a,suffix:"-better-as-code",suffixWhen:!0}};function d(e){let n=Object.entries(u).map(([t,s])=>({key:t,rule:s,enabled:s.enabled(e)}));return{name:`findings${n.map(({rule:t,enabled:s})=>s===t.suffixWhen?t.suffix:"").join("")}`,switches:Object.fromEntries(n.map(({key:t,enabled:s})=>[t,s])),settings:Object.fromEntries(n.map(({rule:t,enabled:s})=>[t.setting,s?"1":"0"]))}}function _(){let e=[{}];for(let{setting:n}of Object.values(u))e=e.flatMap(t=>["0","1"].map(s=>({...t,[n]:s})));return e.map(n=>({...d(n),schema:h(n)}))}function p(e){return i.object({findings:i.array(e.shape.findings.element.extend({fixes:i.array(r.omit({expectedOutcome:!0})).min(1)}))})}var x=r.extend({expectedOutcome:i.string().default("")}),g=i.array(c.extend({fixes:i.array(x).min(1),sourceNotes:m.nullable().optional().catch(null)}));function h(e){let n=d(e),t=f(n.settings);return n.switches.expectedOutcome?t:p(t)}function S(e){return E(e.findings)}function E(e){return g.parse(e)}export{d as a,_ as b,h as c,S as d,E as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function w(r,t={}){let n=0,e=r.length;if(!t.trailingOnly)for(;n<e&&r[n]==="/";)n+=1;for(;e>n&&r[e-1]==="/";)e-=1;return r.slice(n,e)}function l(r){return w(r??"")}function O(r){return l(r)||void 0}function g(r,t){let n=l(t);if(!n)return r;let e=`${n}/`;return r.startsWith(e)?r.slice(e.length):null}function z(r,t){return g(r,t)!==null}function U(r,t){let n=l(t);return n?`${n}/${r}`:r}var p=/^[A-Za-z0-9_.-]+$/;function f(r){return r.endsWith(".git")?r.slice(0,-4):r}function a(r,t){return p.test(r)&&p.test(t)&&r!=="."&&r!==".."&&t!=="."&&t!==".."}function R(r){let t=r.trim();if(!t)return null;let n=t.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/);if(n){let i=n[1]??"",o=f(n[2]??"");return a(i,o)?{owner:i,repo:o}:null}if(/^https?:\/\//i.test(t)){let i;try{i=new URL(t)}catch{return null}if(i.hostname!=="github.com"&&i.hostname!=="www.github.com")return null;let o=i.pathname.split("/").filter(Boolean),[u,m]=o;if(!u||!m)return null;let s=f(m);if(!a(u,s))return null;if(o.length===2)return{owner:u,repo:s};if(o[2]==="tree"&&o[3]){let d;try{d=decodeURIComponent(o[3])}catch{return null}let h=o.slice(4);if(h.some(c=>c==="."||c===".."||!p.test(c)))return null;let $=h.join("/");return{owner:u,repo:s,ref:d,...$?{dir:$}:{}}}return null}let e=t.match(/^([^/\s]+)\/([^/\s]+)$/);if(e){let i=e[1]??"",o=f(e[2]??"");return a(i,o)?{owner:i,repo:o}:null}return null}function x(r){let t=l(r.dir);return t?`${r.owner}/${r.repo}/${t}`:`${r.owner}/${r.repo}`}function y(r){return`local:${r.replace(/\/+$/,"").split("/").pop()??"repo"}`}function b(r){let t=R(r);return t?x({owner:t.owner,repo:t.repo,dir:t.dir}):null}function E(r){return r.startsWith("upload:")?r:b(r)??(r.startsWith("/")?y(r):null)}function A(r){return l(r.split("/").slice(2).join("/"))||void 0}export{l as a,O as b,g as c,z as d,U as e,x as f,y as g,b as h,E as i,A as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b,c as p}from"./STZOC7LN.js";import{b as g}from"./UEWL3GMQ.js";import{a as o}from"./U5HOEVPE.js";import{a as r}from"./EH3QQ3T4.js";import{z as T}from"zod";import{z as n}from"zod";function u(a=r){return n.object({rows:n.array(n.object({key:n.string().describe(a("finding-headlines-key")),headline:n.string().nullable().describe(a("finding-headlines-headline")),ifLeft:n.string().nullable().describe(a("finding-headlines-if-left"))}).strict())}).strict()}var V=u();import{z as m}from"zod";var l=m.object({isSystemPrompt:m.boolean(),name:m.string(),reason:m.string()});import{z as c}from"zod";var y=c.object({verdicts:c.array(c.object({id:c.string(),inScope:c.boolean(),reason:c.string()}))});import{z as e}from"zod";var H=3,P=64e3,X=8,I=60,v=e.object({subKind:e.string().describe(r("analysis-structure-schema-1")),kind:e.string().describe(r("analysis-structure-schema-2")),severity:e.string().describe(r("analysis-structure-schema-3")),title:e.string(),cause:e.string(),evidence:e.array(e.object({path:e.string(),line:e.number(),excerpt:e.string()})),children:e.array(e.object({ref:e.string().describe(r("analysis-structure-schema-4")),how:e.string()})),files:e.array(e.object({path:e.string(),action:e.string().describe(r("analysis-structure-schema-5")),role:e.string().describe(r("analysis-structure-schema-6")),unit:e.string().describe(r("analysis-structure-schema-7")),loadMode:e.string().describe(r("analysis-structure-schema-8")),loadVia:e.string().describe(r("analysis-structure-schema-9")),purpose:e.string(),fmName:e.string().describe(r("analysis-structure-schema-10")),fmDescription:e.string(),fmTools:e.array(e.string())})),segments:e.array(e.object({path:e.string(),startLine:e.number(),endLine:e.number(),to:e.string().describe(r("analysis-structure-schema-11")),disposition:e.string().describe(r("analysis-structure-schema-12")),intoPath:e.string().describe(r("analysis-structure-schema-13")),intoLine:e.number().describe(r("analysis-structure-schema-14")),childRef:e.string().describe(r("analysis-structure-schema-15")),heading:e.string().describe(r("analysis-structure-schema-16")),reason:e.string()})),additions:e.array(e.object({path:e.string(),text:e.string(),kind:e.string().describe(r("analysis-structure-schema-17")),heading:e.string()})),reorders:e.array(e.object({path:e.string(),startLine:e.number(),endLine:e.number(),order:e.array(e.number()).describe(r("analysis-structure-schema-reorder-order")),reasons:e.array(e.string()).describe(r("analysis-structure-schema-reorder-reasons"))})).describe(r("analysis-structure-schema-18")),toolMoves:e.array(e.object({tool:e.string(),fromUnit:e.string(),toUnit:e.string(),reason:e.string()}))}),f=e.object({structures:e.array(v)}),S=e.object({verdict:e.string().describe(r("structure-recheck-verdict")),reason:e.string()}),j=e.object({verdicts:e.array(e.object({index:e.number(),inScope:e.boolean(),reason:e.string()}))});import{z as t}from"zod";var k=t.object({verdicts:t.array(o.shape.verdicts.element.extend({decisive:t.boolean(),quotes:t.array(t.object({side:t.enum(["against","for"]),repo:t.string(),path:t.string(),line:t.number().int().positive(),quote:t.string()}))}))});import{z as s}from"zod";var W=4,Y=1,D=16e3,x=s.object({path:s.string(),startLine:s.number(),endLine:s.number()}),_=s.object({decision:s.string().describe(r("analysis-split-check-schema-1")),reason:s.string(),frontDoor:s.object({job:s.string().describe(r("analysis-split-check-schema-2")),skills:s.array(s.string()).describe(r("analysis-split-check-schema-3"))}),subAgents:s.array(s.object({name:s.string().describe(r("analysis-split-check-schema-4")),job:s.string().describe(r("analysis-split-check-schema-5")),description:s.string().describe(r("analysis-split-check-schema-6")),skills:s.array(s.string()),tools:s.array(s.string()).describe(r("analysis-split-check-schema-7")),promptSections:s.array(x),knowledgeSections:s.array(x).describe(r("analysis-split-check-schema-8")),resolves:s.array(s.string()).describe(r("analysis-split-check-schema-9")),evidence:s.array(s.object({path:s.string(),line:s.number(),excerpt:s.string()})),handoff:s.string().describe(r("analysis-split-check-schema-10"))}))});function me(a=d=>d,U){let d={codeJudge:l,findings:p({}),scope:y,structures:f,structureScope:j,check:o,opinion:k,sourceNotes:g,shape:_,recheck:S,findingHeadlines:u(i=>U?.(i)??r(i)),judge:T.object({row:T.string().min(1).nullable()}).strict()},E=b().map(({name:i,schema:h})=>[i,h]);return Object.fromEntries([...Object.entries(d),...E].map(([i,h])=>[i,a(h)]))}export{V as a,H as b,P as c,X as d,I as e,k as f,W as g,Y as h,D as i,me as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as e}from"zod";var t=e.object({verdicts:e.array(e.object({id:e.string(),evidenceAgainst:e.string(),evidenceFor:e.string(),verdict:e.enum(["keep","drop"]),reason:e.string()}))});export{t as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as e}from"zod";var t=["Says","But also says","Unclear","Context","Requirement","What actually happens","Why it's a gap","Evidence"],n=e.object({sites:e.array(e.object({index:e.number(),role:e.string(),meaning:e.string(),keyPhrase:e.string()})),support:e.string(),supportNote:e.string(),counterEvidence:e.array(e.object({repo:e.string(),path:e.string(),line:e.number(),excerpt:e.string(),meaning:e.string()}))}),s=e.object({sites:e.array(e.object({index:e.number().int().nonnegative(),role:e.enum(t),meaning:e.string(),keyPhrase:e.string()})),support:e.enum(["supported","partly","not_supported"]),supportNote:e.string(),counterEvidence:e.array(e.object({repo:e.string(),path:e.string(),line:e.number().int().positive(),excerpt:e.string(),meaning:e.string()}))});export{t as a,n as b,s as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as p}from"./E7TFIHC5.js";import{c as a}from"./IL2KRP3T.js";import{createHash as f}from"node:crypto";function c(e){function r(t){if(!("includes"in e)||!Object.hasOwn(e.includes,t))throw new Error(`Unknown template: ${t}`);return e.includes[t]}function s(t){return"templateText"in e?Buffer.byteLength(e.templateText(t)):r(t).expandedSize}function i(t,n={}){return{name:t,hash:"templateText"in e?f("sha256").update(p(e.templateText(t),{promptAgreement:a(n)})).digest("hex"):r(t).expandedFingerprint}}function m(t,n={}){for(let o of t)if(i(o.name,n).hash!==o.hash)throw new Error("Counterfact's instructions changed since this analysis started. Start a new analysis.")}return{templateBytes:s,promptVersion:i,assertPromptVersions:m}}export{c as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as p,e as o,h as a}from"./KEKTZDIK.js";var s=new Set(["check-findings","check-findings-precision-v1","second-opinion"]);function l(t,n,r=p){let e=t.CF_PROMPT_CACHE!=="0",i="template"in n?s.has(n.template)?[0]:[]:(n.promptBlocks??[]).flatMap((u,h)=>u.cache?[h]:[]),c=e&&i.length>0?"5m":null;return{enabled:e,breakpoints:i,ttl:c,inputMultiplier:c===null?1:o(r,c)}}function f(t,n){for(let e of n)if(!Number.isInteger(e)||e<0||e>=t.length)throw new RangeError("Invalid cache breakpoint index");let r=new Set(n);return t.map((e,i)=>({text:e.text,...r.has(i)?{cache:!0}:{}}))}function d(t,n,r,e,i,c){return a(r,e,i,c,l(t,n,e).inputMultiplier)}function x(t){return o(t,"1h")}function C(t){return l(t,{}).enabled}export{l as a,f as b,d as c,x as d,C as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function u(t,a){return a===0?t:"execute"in t?t.withRetry?.(a)??t:{settleStartedOnError:t.settleStartedOnError,...t.withPaidCallGuard?{withPaidCallGuard:r=>u(t.withPaidCallGuard(r),a)}:{},structured:r=>t.structured({...r,retry:a})}}export{u as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{J as O}from"./7QDOHWSY.js";import{a as N}from"./326F4XNG.js";import{b as F}from"./2PSNOSJ2.js";import{q as x}from"./EQTIRIMU.js";import{e as P}from"./T5TREZCQ.js";async function H(S,t){let a={entriesVisited:0,filesRead:0,bytesRead:0,truncated:!1},d=[],R=()=>({files:t.selected.files,selection:t.selection,skippedFiles:F(d),search:a});if(O(S,{selected:t.selected,codeAgentsFound:t.codeAgentsFound}).kind==="none")return R();let h=await t.port.context();if(!h)return R();let E=[];try{let r=e=>P(e,h.selectedRoot),L=e=>Object.fromEntries(Object.entries(e).map(([c,I])=>[r(c),I])),A={...t.selected,files:L(t.selected.files),root:h.selectedRoot,...t.selected.listedPaths?{listedPaths:t.selected.listedPaths.map(r)}:{},...t.selected.pointerFiles?{pointerFiles:L(t.selected.pointerFiles)}:{},...typeof t.selected.explicitPrompt=="string"?{explicitPrompt:r(t.selected.explicitPrompt)}:{}},l=await t.port.list();a.entriesVisited=l.entriesVisited,a.truncated=l.truncated;let w=new Map(l.entries.map(e=>[e.path,e])),u=new Set,p={},m=x.codeScan,b=()=>O(S,{selected:A,codeAgentsFound:t.codeAgentsFound,entries:l.entries,bodies:p,attemptedPaths:[...u],completeListing:!l.truncated}),n=b();for(;n.kind==="search"&&n.paths.length;){let e=[],c=0;for(let s of n.paths){let i=w.get(s);if(i.size>m.fileBytes){d.push({path:s,reason:"too-large"}),u.add(s);continue}let o=i.size+1;if(e.length>=4||a.filesRead+e.length>=m.files||a.bytesRead+c+o>m.bytes)break;e.push({entry:i,allowance:o}),c+=o}if(!e.length){if(n=b(),n.kind==="none"||!n.paths.length)break;a.truncated=!0,d.push(...n.paths.map(s=>({path:s,reason:"scan-limit"})));break}(await N(e,4,async({entry:s,allowance:i})=>{u.add(s.path),a.filesRead++;try{return await t.port.read(s,i)}catch(o){if(o instanceof Error&&o.name==="AbortError")throw o;return{text:null,bytesRead:i,refusal:"unreadable"}}},{settleStartedOnError:!0})).forEach((s,i)=>{let{entry:o,allowance:k}=e[i],z=Number.isSafeInteger(s.bytesRead)&&s.bytesRead>=0&&s.bytesRead<=k;a.bytesRead+=z?s.bytesRead:k,z&&s.text!==null&&!s.refusal&&s.bytesRead<=m.fileBytes&&s.bytesRead<k&&Buffer.byteLength(s.text)===s.bytesRead?p[o.path]=s.text:d.push({path:o.path,reason:s.refusal??"unreadable"})}),n=b()}let g=b();if(g.kind==="none"||!g.ownedPaths.length)return R();let f={...A.files};for(let e of g.ownedPaths)Object.hasOwn(p,e)&&(f[e]=p[e]);let v=e=>({...e,path:r(e.path),...e.ref===e.path?{ref:r(e.ref)}:{}}),B=t.selection.selected.map(v),M=new Set(B.map(e=>e.path)),j=g.ownedPaths.filter(e=>!M.has(e)&&Object.hasOwn(f,e)).map(e=>({...w.get(e),path:e,size:Buffer.byteLength(f[e]),ref:w.get(e)?.ref??e})),y=t.selection.readingNotes,V={files:f,root:h.selectedRoot,search:a,skippedFiles:F(d),selection:{...t.selection,selected:[...B,...j],totalBytes:t.selection.totalBytes+j.reduce((e,c)=>e+c.size,0),refused:t.selection.refused.map(e=>({...e,path:r(e.path)})),...y?{readingNotes:{instruction:y.instruction.map(r),code:y.code.map(r),agents:y.agents.map(r)}}:{}}};return E=Object.keys(f),V}finally{t.port.finish?.(E)}}export{H as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as s}from"zod";function u(d){let{description:f}=d,p=new WeakMap;function a(y){function n(t){if(t instanceof s.ZodType){let o=p.get(t);if(o)return o;let i=t.clone(n(t._zod.def));p.set(t,i);let e=t.meta();if(e){let r={...e};if(r.description?.startsWith('{"bundleDescription":')){let c=JSON.parse(r.description);r.description=f(c.bundleDescription,c.inputs)}s.globalRegistry.add(i,r)}return i}if(Array.isArray(t))return t.map(n);if(t!==null&&typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype){let o=Object.getOwnPropertyDescriptors(t);for(let[i,e]of Object.entries(o))if("value"in e)e.value=n(e.value);else if(e.get){let r=e.get,c=()=>n(r.call(t)),b=s.util.cached(c);e.get=i==="defaultValue"?c:()=>b.value}return Object.defineProperties({},o)}return t}return n(y)}return{withDescriptions:a}}export{u as a};
|