@tryarcanist/cli 0.1.394 → 0.1.396
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +6 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire as __arcanistCreateRequire } from "node:module";
|
|
3
3
|
const require = __arcanistCreateRequire(import.meta.url);
|
|
4
4
|
var Eb=Object.defineProperty;var He=(e,t)=>{for(var r in t)Eb(e,r,{get:t[r],enumerable:!0})};import{Command as gP,Option as hP}from"commander";var em=["idle","running","review_starting","waiting_for_input","finalizing","review_listening","completed","superseded","needs_you","blocked","failed","stopped","archived"];var Zt=["completed","superseded","needs_you","blocked","failed","stopped","archived"],kb=new Set(Zt),IP=new Set(Zt.filter(e=>e!=="completed")),EP=new Set(Zt.filter(e=>e!=="stopped")),kP=Zt.filter(e=>e!=="archived"&&e!=="needs_you"&&e!=="blocked"&&e!=="stopped");function tm(e,t){return kb.has(e)}function nm(e){let t=e.createHelp().visibleGlobalOptions(e).map(im);return{...rm(e),...t.length>0?{globalOptions:t}:{}}}function rm(e){let t=Tb(e);return{path:za(e),description:e.description(),aliases:e.aliases(),arguments:e.registeredArguments.map(r=>({name:r.name(),description:r.description,required:r.required,variadic:r.variadic})),options:e.createHelp().visibleOptions(e).map(im),...t?{notes:t}:{},subcommands:e.commands.map(rm)}}function im(e){return{flags:e.flags,description:e.description,required:e.mandatory,...e.defaultValue===void 0?{}:{defaultValue:e.defaultValue}}}function za(e){let t=[];for(let r=e;r;r=r.parent)t.unshift(r.name());return t.join(" ")}function Tb(e){let t="";return e.emit("afterHelp",{error:!1,command:e,write:r=>t+=r}),t.trim()}import{existsSync as hS,mkdirSync as vS,writeFileSync as _S}from"node:fs";import{basename as yS,join as Em,resolve as bS}from"node:path";var Ab="en-US";function om(e,t){let r=new Intl.DateTimeFormat(Ab,{timeZone:t,month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0,timeZoneName:"short"}).formatToParts(e),o=n=>r.find(i=>i.type===n)?.value??"";return`${o("month")} ${o("day")}, ${o("year")}, ${o("hour")}:${o("minute")} ${o("dayPeriod")} ${o("timeZoneName")}`}function Ee(e,t=""){return(e instanceof Error?e.message:String(e))||t}function Qr(e){return new Promise(t=>setTimeout(t,e))}function am(e,t){return new Promise(r=>{let o=!1,n=()=>{o||(o=!0,clearTimeout(i),t?.removeEventListener("abort",n),r())},i=setTimeout(()=>{o=!0,t?.removeEventListener("abort",n),r()},e);if(t?.aborted){clearTimeout(i),o=!0,r();return}t?.addEventListener("abort",n)})}var Cb=.2,Ob=new Set([408,429,500,502,503,504]);function Nb(e){let{retry:t,baseMs:r,maxMs:o=Number.POSITIVE_INFINITY,jitter:n,random:i=Math.random}=e,a=n[0]+i()*(n[1]-n[0]);return Math.min(o,Math.max(0,Math.round(r*2**Math.max(0,t-1)*a)))}function Db(e,t){let r=t?.includeDefaults!==!1&&Ob.has(e)||t?.includeServerErrors===!0&&e>=500;return t?.remove?.includes(e)?!1:r||t?.add?.includes(e)===!0}var Ua=class extends Error{constructor(t="Provider retry aborted"){super(t),this.name="ProviderRetryAbortError"}};function zb(e){if(!(!e||typeof e!="object"||!("status"in e)))return typeof e.status=="number"?e.status:void 0}function Ub(e){if(!e||typeof e!="object"||!("headers"in e))return;let t=e.headers;if(!(!t||typeof t!="object"||!("get"in t)))return typeof t.get=="function"?t:void 0}function Lb(e){if(e instanceof TypeError||e instanceof Error&&e.name==="TimeoutError")return!0;let t=zb(e);return typeof t=="number"&&Db(t,{add:[409],includeServerErrors:!0})}function jb(e,t=Date.now()){let r=e.get("retry-after-ms");if(r){let a=Number(r);if(Number.isFinite(a)&&a>=0)return a}let o=e.get("retry-after");if(!o)return null;let n=Number(o);if(Number.isFinite(n))return n>=0?n*1e3:null;let i=Date.parse(o);return Number.isNaN(i)?null:Math.max(0,i-t)}function Mb(e){let t=Ub(e);return t?jb(t):null}function sm(e,t){if(!(!e||typeof e!="object"))try{Object.defineProperty(e,"__retryAttempts",{value:t,enumerable:!1,configurable:!0,writable:!0})}catch{}}function Zb(e,t){if(!t)return e;let r=AbortSignal.timeout(t);return e?AbortSignal.any([e,r]):r}async function um(e){if(!Number.isInteger(e.maxAttempts)||e.maxAttempts<1)throw new RangeError("maxAttempts must be at least 1");let t=e.sleep??am,r=e.random??Math.random,o=e.perAttemptTimeoutMs??6e5,n=e.isTransient??Lb,i=e.getRetryAfterMs??Mb,a=e.abortErrorFactory??(()=>new Ua),s=e.now??Date.now,u=e.jitterFactor??Cb,c=[1-u,1+u],l=0,d;for(;l<e.maxAttempts;){if(e.callerSignal?.aborted)throw a(l);if(e.deadlineMs!==void 0&&s()>=e.deadlineMs)throw d!==void 0?d:a(l);l+=1;let f=o>0&&e.deadlineMs!==void 0?Math.min(o,Math.max(1,e.deadlineMs-s())):o,m=Zb(e.callerSignal,f);try{return{value:await e.op(m??new AbortController().signal),attempts:l}}catch(g){if(e.callerSignal?.aborted)throw a(l,g);if(!n(g)||l>=e.maxAttempts)throw sm(g,l),g;let h=Math.max(i(g)??0,Nb({retry:l,baseMs:e.baseMs??250,jitter:c,random:r}));if(sm(g,l),d=g,e.deadlineMs!==void 0&&s()+h>=e.deadlineMs)throw g;try{e.onRetry?.({attempt:l+1,maxAttempts:e.maxAttempts,delayMs:h,error:g})}catch{}if(await t(h,e.callerSignal??new AbortController().signal),e.callerSignal?.aborted)throw a(l)}}throw new Error("Provider retry loop exited without a result")}function et(e){return e.replace(/\/+$/,"")}function cm(e){if(!e||typeof e!="object")return null;let t=e,r=typeof t.code=="string"&&t.code?t.code:null,o=typeof t.message=="string"&&t.message?t.message:null;if(typeof t.error=="string"&&t.error)return{code:r??t.error,message:o??t.error,raw:t.error};if(t.error&&typeof t.error=="object"){let n=t.error,i=typeof n.code=="string"&&n.code?n.code:r,a=typeof n.message=="string"&&n.message?n.message:o;return i||a?{code:i,message:a,raw:t.error}:null}return r||o?{code:r,message:o,raw:e}:null}function La(e){try{let t=JSON.parse(e);if(!t||typeof t!="object")return null;let r=t,o={...typeof r.repository=="string"?{repository:r.repository}:{},...typeof r.environmentsUrl=="string"?{environmentsUrl:r.environmentsUrl}:{},...typeof r.billingUrl=="string"?{billingUrl:r.billingUrl}:{}},n=cm(t);return n?typeof n.raw=="string"&&n.raw?{...n.code?{serverCode:n.code}:{},rawError:n.raw,...n.message?{message:n.message}:{},...o}:n.message||n.code?{...n.message?{message:n.message}:{},...n.code?{serverCode:n.code,rawError:n.code}:{},...o}:null:null}catch{return null}}var ke=130,ja=5,y=class extends Error{code;exitCode;hint;requestId;data;constructor(t,r,o={}){super(r),this.name="CliError",this.code=t,this.exitCode=o.exitCode??lm(t),this.hint=o.hint,this.requestId=o.requestId,this.data=o.data}},_t=class extends y{},ze=class extends y{status;body;constructor(t,r,o,n){let i=dm(t),a=La(r);super(i,Bb(t,r,a),{exitCode:Fb(t),hint:Vb(t,n,a),requestId:o,data:a?.serverCode||a?.repository||a?.environmentsUrl||a?.billingUrl?{...a.serverCode?{serverCode:a.serverCode}:{},...a.repository?{repository:a.repository}:{},...a.environmentsUrl?{environmentsUrl:a.environmentsUrl}:{},...a.billingUrl?{billingUrl:a.billingUrl}:{}}:void 0}),this.name="ApiError",this.status=t,this.body=r}};function lm(e){switch(e){case"auth":return 2;case"not_found":return 3;case"conflict":return 4;case"server":return 10;default:return 1}}function dm(e){return e===401||e===403?"auth":e===404?"not_found":e===409?"conflict":e>=500?"server":"user"}function Fb(e){return lm(dm(e))}function Bb(e,t,r=La(t)){return r?.message?r.message:r?.serverCode?r.serverCode:t?`API error ${e}: ${t}`:`API error ${e}`}function Vb(e,t,r){if(e===401)return"Run `arcanist auth login` or set `ARCANIST_TOKEN`.";if(e===403)return"This token is not allowed to do that. `arcanist auth whoami --json` shows its tokenScope and your businessRole: a change needs a write-scope token (mint one in Settings > CLI), and a workspace-wide change also needs the admin role.";if(e===404)return t==="repo"?"Check accessible repositories with `arcanist repos list`.":t==="session"?"List sessions with `arcanist sessions list`.":void 0;if(e===409&&r?.repository){if(r.serverCode==="environment_required")return`Run \`arcanist environments prepare ${r.repository} --wait\`, then retry the review.`;if(r.serverCode==="environment_preparing"||r.serverCode==="environment_needs_attention")return`Run \`arcanist environments status ${r.repository} --wait\` for the latest setup state.`}if(e===409)return"Check the current resource state and retry the command when it is ready.";if(e>=500)return"Retry later or check the control-plane logs."}var Gb="Run `arcanist help <command>` for usage, or `arcanist help --json` for the full command tree.";function qb(e){if(!("code"in e)||typeof e.code!="string"||!e.code.startsWith("commander."))return null;let[t="",r]=e.message.replace(/^error: /,"").split(`
|
|
5
|
-
`);return new y("user",t,{hint:r?r.replace(/^\((.*)\)$/,"$1"):Gb})}function pm(e){if(e instanceof y)return e;if(e instanceof Error){let t=qb(e);if(t)return t}return e instanceof Error?new y("user",e.message):new y("user",String(e))}function ei(e){return JSON.stringify({error:{code:e.code,message:e.message,...e.hint?{hint:e.hint}:{},...e.requestId?{requestId:e.requestId}:{},...e.data?{data:e.data}:{}}})}var mm={name:"@tryarcanist/cli",version:"0.1.
|
|
5
|
+
`);return new y("user",t,{hint:r?r.replace(/^\((.*)\)$/,"$1"):Gb})}function pm(e){if(e instanceof y)return e;if(e instanceof Error){let t=qb(e);if(t)return t}return e instanceof Error?new y("user",e.message):new y("user",String(e))}function ei(e){return JSON.stringify({error:{code:e.code,message:e.message,...e.hint?{hint:e.hint}:{},...e.requestId?{requestId:e.requestId}:{},...e.data?{data:e.data}:{}}})}var mm={name:"@tryarcanist/cli",version:"0.1.396",description:"Command-line interface for Arcanist: inspect sessions, prepare Arcanist environments, and trigger reviews",type:"module",bin:{arcanist:"dist/index.js"},engines:{node:">=22"},files:["dist/index.js"],scripts:{build:"tsup",typecheck:"node ../../node_modules/tsrs/bin/tsrs --noEmit",prepublishOnly:"npm --prefix ../.. run guard:cli-bundle"},publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/tryarcanist/arcanist.git",directory:"apps/cli"},homepage:"https://www.tryarcanist.com",license:"MIT",dependencies:{commander:"^12.1.0","playwright-core":"^1.61.1"},devDependencies:{tsup:"^8.0.0",typescript:"^5.9.3"}};var ti=`${mm.version}`;var Hb=`arcanist-cli/${ti}`,Kb=3e4,Jb=1e3,Yb=6e5,ni="ARCANIST_HTTP_TIMEOUT_MS";function Xb(e=process.env){let t=e[ni];if(!t)return Kb;if(!/^\d+$/.test(t))throw new y("user",`${ni} must be a positive integer between 1000 and 600000.`);let r=Number(t);if(r<Jb||r>Yb)throw new y("user",`${ni} must be between 1000 and 600000 milliseconds.`);return r}function Ma(e){return e instanceof DOMException&&e.name==="AbortError"}function Qb(e){let t=e instanceof Error?e.cause:null;return t&&typeof t=="object"&&"code"in t&&typeof t.code=="string"?t.code:null}function Za(e){return new _t("server",`Network timeout after ${e}ms.`,{hint:`Increase ${ni} for slow links, or check the API connection.`})}function eS(e){let t=Xb();if(!e)return{fetchInit:void 0,timeoutMs:t};let{timeoutMs:r,...o}=e;return r===void 0?{fetchInit:o,timeoutMs:t}:!Number.isFinite(r)||r<=0?{fetchInit:o,timeoutMs:1}:{fetchInit:o,timeoutMs:Math.max(1,Math.min(t,r))}}async function Fa(e,t,r,o){let{fetchInit:n,timeoutMs:i}=eS(r),a=new AbortController,s=setTimeout(()=>a.abort(),i);try{let u=new Headers(n?.headers);u.set("Content-Type","application/json"),u.set("User-Agent",Hb),e.token&&u.set("Authorization",`Bearer ${e.token}`);let c=await fetch(`${et(e.apiUrl)}${t}`,{...n,headers:u,signal:a.signal}).catch(l=>{throw Ma(l)?Za(i):new _t("server",`Network error: could not reach ${et(e.apiUrl)} (${Qb(l)??Ee(l)}).`,{hint:"Check the network and `ARCANIST_API_URL` or `--api-url`, then retry."})});if(!c.ok){let l=await c.text().catch(d=>{if(Ma(d))throw Za(i);return""});throw new ze(c.status,l,c.headers.get("x-request-id")??void 0,tS(t))}return await o(c)}catch(u){throw u instanceof y?u:Ma(u)?Za(i):u instanceof TypeError?new _t("server",`The API response could not be read: ${Ee(u)}`):new y("server",`The API response could not be read: ${Ee(u)}`)}finally{clearTimeout(s)}}function tS(e){if(e.startsWith("/api/repos"))return"repo";if(e.startsWith("/api/sessions"))return"session"}async function P(e,t,r){return Fa(e,t,r,o=>o.json())}async function fm(e,t,r){return Fa(e,t,r,o=>o.text())}async function gm(e,t,r){return Fa(e,t,r,async o=>new Uint8Array(await o.arrayBuffer()))}async function Un(e,t){let{value:r}=await um({op:()=>P(e,t),maxAttempts:3,perAttemptTimeoutMs:0,isTransient:o=>o instanceof _t,onRetry:({attempt:o,maxAttempts:n,delayMs:i})=>{process.stderr.write(`Retrying archive GET ${t} (${o}/${n}) in ${i}ms.
|
|
6
6
|
`)}});return r}function A(e,t={}){return e.replace(/:([A-Za-z]+)/g,(r,o)=>{let n=t[o];if(n===void 0)throw new Error(`apiPath(${e}) is missing the ${o} parameter`);return encodeURIComponent(n)})}import{existsSync as Ln,mkdirSync as nS,readFileSync as Ba,statSync as rS,writeFileSync as iS}from"node:fs";import{homedir as oS}from"node:os";import{dirname as vm,join as yt,resolve as aS}from"node:path";var _m=yt(oS(),".arcanist"),ym=yt(_m,"config.json"),tt=".arcanist-cli.json",sS="https://app.tryarcanist.com";function bm(){try{return JSON.parse(Ba(ym,"utf-8"))}catch{return null}}function uS(e={}){let t=lS(e);if(t)return hm(t);let r=cS(),o=Va(e,r!==null),n=bm(),i=o?.apiUrl??r?.apiUrl??n?.apiUrl,a=o?.token??r?.token??n?.token;if(!i||!a)return null;let s=hm({apiUrl:i,token:a});return r&&!o&&!e.json&&process.stderr.write(`using ${tt} -> ${s.apiUrl}
|
|
7
7
|
`),s}function Sm(e){let t=ri(e.apiUrl);if(t)throw new y("user",t);nS(_m,{recursive:!0,mode:448}),iS(ym,JSON.stringify({...e,apiUrl:et(e.apiUrl)},null,2)+`
|
|
8
8
|
`,{mode:384})}function J(e){let t=uS(e);if(!t)throw new y("auth","Not logged in.",{hint:"Run `arcanist auth login` or set `ARCANIST_TOKEN`."});return t}function wm(e){let t=e??process.env.ARCANIST_API_URL??bm()?.apiUrl??sS,r=ri(t);if(r)throw new y("user",r);return et(t)}function cS(e=process.cwd()){let t=dS(e);if(!t)return null;let r=e;for(;;){let o=yt(r,tt);if(Ln(o))return fS(o);if(r===t)return null;let n=vm(r);if(n===r)return null;r=n}}function ri(e){let t;try{t=new URL(e)}catch{return"Invalid URL format"}return t.username||t.password?"API URL must not include embedded credentials. Use --token or ARCANIST_TOKEN to authenticate.":t.protocol!=="https:"&&!xm(t)?"API URL must use HTTPS for non-local hosts":null}function Va(e,t){let r=e.apiUrl??process.env.ARCANIST_API_URL,o=e.token??process.env.ARCANIST_TOKEN;if(!t)return!r&&!o?null:{apiUrl:r,token:o};if(r&&!o||!r&&o)throw new y("user",`${tt} is active; set both ARCANIST_API_URL and ARCANIST_TOKEN, pass both --api-url and --token, or set neither.`);return!r||!o?null:{apiUrl:r,token:o}}function lS(e){let t=e.apiUrl??process.env.ARCANIST_API_URL,r=e.token??process.env.ARCANIST_TOKEN;return!t||!r?null:{apiUrl:t,token:r}}function hm(e){let t=ri(e.apiUrl);if(t)throw new y("user",t);return{apiUrl:et(e.apiUrl),token:e.token}}function dS(e){let t=e;for(;;){if(pS(t))return t;let r=vm(t);if(r===t)return null;t=r}}function pS(e){let t=yt(e,".git");if(!Ln(t))return!1;try{let r=rS(t);if(r.isDirectory())return Ln(yt(t,"HEAD"))&&Ln(yt(t,"config"));if(!r.isFile())return!1;let o=mS(t);return o?Ln(yt(aS(e,o),"HEAD")):!1}catch{return!1}}function mS(e){let t=Ba(e,"utf-8").split(/\r?\n/).find(o=>o.startsWith("gitdir:"));return t&&t.slice(7).trim()||null}function fS(e){let t;try{t=JSON.parse(Ba(e,"utf-8"))}catch{throw new y("user",`${tt} is not valid JSON.`)}if(!t||typeof t!="object")throw new y("user",`${tt} must contain both apiUrl and token.`);let r=t;if(typeof r.apiUrl!="string"||typeof r.token!="string"||!r.apiUrl||!r.token)throw new y("user",`${tt} must contain both apiUrl and token.`);let o;try{o=new URL(r.apiUrl)}catch{throw new y("user",`${tt} apiUrl must be a valid URL.`)}if(!xm(o))throw new y("user",`${tt} apiUrl must be a loopback host.`);let n=ri(r.apiUrl);if(n)throw new y("user",n);return{apiUrl:et(r.apiUrl),token:r.token}}function xm(e){let t=e.hostname.replace(/^\[|\]$/g,"");return t==="localhost"||t==="127.0.0.1"||t==="::1"}function V(e,t={}){let o={...e?.optsWithGlobals?.(),...t};return{...o,noColor:o.noColor===!0||o.color===!1}}function Te(e,t={}){return V(e,t).json===!0}function Ue(e){process.stdout.write(`${JSON.stringify(e)}
|
|
@@ -88,7 +88,7 @@ Hint: ${n.hint??""}
|
|
|
88
88
|
`),process.exit(ke)};for(let n of Q_)process.once(n,t);let r=Date.now(),o=r;try{return await An({pollIntervalMs:e.pollIntervalMs,timeoutMs:Rp,timeoutMessage:Cp,fetchStatus:async()=>{let n=oy(await iy(e.config,e.requestId)),i=Date.now();if(n===null&&i-o>=Jk){o=i;let a=Math.floor((i-r)/6e4);e.note(`Still reviewing (${a}m). Get the result later with \`${e.resumeCommand}\`.`)}return n}})}catch(n){throw n instanceof y&&n.message===Cp?new y("server",Cp,{hint:`The review may still finish. Get its result with \`${e.resumeCommand}\`.`}):n}finally{for(let n of Q_)process.off(n,t)}}function ey(e,t,r){let o=fe(t.failure?.message??"").trim(),n=t.failure?.code;return new y(e,o.length>0?o:r,{...n?{data:{serverCode:n}}:{}})}async function ay(e,t,r){try{return await(r===void 0?P(e,t):P(e,t,r))}catch(o){if(!(o instanceof ze))throw o;let n=o.data?.serverCode,i=n==="active_request_exists"?eT(o.body):null,a=Qk(o,n,t,i),s=i?{...o.data,requestId:i}:o.data;throw new y(o.code,fe(o.message),{exitCode:o.exitCode,...a?{hint:a}:{},...o.requestId?{requestId:o.requestId}:{},...s?{data:s}:{}})}}function Qk(e,t,r,o){switch(t){case"active_request_exists":return o?`Get its result with \`arcanist review --request ${o}\`.`:"Wait for your running review to finish, then retry.";case"paid_plan_required":case"review_limit_exceeded":return e.data?.billingUrl?`A workspace admin can change the plan at ${fe(e.data.billingUrl)}.`:"Ask a workspace admin about your Arcanist plan.";case"repository_not_connected":return"Check accessible repositories with `arcanist repos list`.";case"payload_too_large":return"Review a smaller range with --base <ref>.";case"base_commit_not_found":return"Run `git fetch origin`, or pass --base <ref> with a ref that is on GitHub.";default:return e.status===404?r===ny?void 0:"Check the id passed to --request.":e.hint}}function eT(e){try{let t=JSON.parse(e);if(typeof t.requestId!="string")return null;let r=j(t.requestId).trim();return r.length>0?r:null}catch{return null}}function tT(e,t){return e?.optsWithGlobals?.()?.quiet===!0||t.quiet===!0?()=>{}:o=>{process.stderr.write(`${o}
|
|
89
89
|
`)}}function nT(e,t){let r=[["Committed but not uploaded for review (pass --include <path> to upload)",t.payload.heldBackPaths],["Skipped binary files",t.skippedBinaryPaths],["Uncommitted changes are not reviewed",t.uncommittedPaths]];for(let[o,n]of r)n.length>0&&e(`${o}: ${n.map(j).join(", ")}`)}function rT(e){let t=e.findings??[];console.log(Wr(e.verdict??"unknown",t)),e.environmentDegradedReason&&console.log(U_);let r=fe(e.summary??"").trim();r.length>0&&console.log(r);for(let o of jt(t,{withBody:!0}))console.log(o);for(let o of J_(e.alsoChecked??[]))console.log(o)}function ty(e){let t=j(e.requestId);console.log("Arcanist review is still running."),console.log(`Check again with \`arcanist review --request ${t} --no-wait\`, or wait for it with \`arcanist review --request ${t}\`.`)}import{spawn as iT}from"node:child_process";import{createHash as oT,randomBytes as aT}from"node:crypto";var sT=2e3,uT=10*6e4;async function sy(e,t){let r=V(t,e),o=wm(r.apiUrl),n=Va(r,!1),i=null,a=null;if(e.tokenStdin?i=await $m():n?.token&&(i=n.token),!i){if(!process.stdin.isTTY||!process.stderr.isTTY)throw new y("user","No token provided.",{hint:"Pipe a token with --token-stdin or set ARCANIST_TOKEN. In a terminal, `arcanist auth login` opens the browser."});({token:i,scope:a}=await lT(o,cT(e.scope)))}if(!i.startsWith("arc_"))throw new y("user","Invalid token format. Token must start with 'arc_'.");try{await P({apiUrl:o,token:i},A("/api/auth/whoami"));let s={apiUrl:o,token:i};return Sm(s),e.emitResult===!1||(r.json?Ue({ok:!0,apiUrl:o,...a?{scope:a}:{}}):r.quiet||(console.log(`Logged in. API: ${o}`),console.log("Token verified."))),s}catch(s){throw s instanceof ze&&(s.status===401||s.status===403)?new y("auth","Token could not be verified. It may be invalid or expired."):s}}function cT(e){let t=e??"read";if(t!=="read"&&t!=="write")throw new y("user",`Invalid scope "${t}". Use read or write.`);return t}async function lT(e,t){let r=aT(32).toString("hex"),o=oT("sha256").update(r).digest("hex"),n=`${e}/cli/login?challenge=${o}&scope=${t}`;console.error("Opening your browser to sign in..."),console.error(`If it does not open, open this URL:
|
|
90
90
|
${n}`),dT(n);let i=Date.now()+uT,a=()=>{process.exit(ke)};process.once("SIGINT",a);try{for(;Date.now()<i;){let s;try{s=await P({apiUrl:e},A("/api/cli-login/exchange"),{method:"POST",body:JSON.stringify({verifier:r})})}catch(u){throw u instanceof ze&&(u.status===409||u.status===410)?new y("user",u.message):u}if(s.token)return{token:s.token,scope:s.scope??t};await new Promise(u=>setTimeout(u,sT))}}finally{process.off("SIGINT",a)}throw new y("user","Login timed out. Run arcanist auth login again.")}function dT(e){let[t,r]=process.platform==="darwin"?["open",[e]]:process.platform==="win32"?["rundll32",["url.dll,FileProtocolHandler",e]]:["xdg-open",[e]],o=iT(t,r,{detached:!0,stdio:"ignore"});o.on("error",()=>{}),o.unref()}async function uy(e={},t){let{config:r}=Q(t,e),o=await P(r,A("/api/repos"));C(t,e,{repos:o.repos,ssoOrgs:o.ssoOrgs},n=>{for(let i of n.repos)console.log(`${String(i.fullName??i.name??i.repo??"")} ${String(i.defaultBranch??"")}`);n.ssoOrgs.length>0&&console.log(`SSO withheld orgs: ${n.ssoOrgs.length}`)})}import{existsSync as wa,readdirSync as pT,readFileSync as mT,realpathSync as Op,renameSync as fT,rmSync as Np}from"node:fs";import{connect as gT}from"node:net";import{join as Hr,resolve as hT}from"node:path";async function cy(e,t){if(!e.confirm)throw new y("user","Reset deletes all local app data. Pass --confirm to continue.");let r=Op(hT(e.checkout));if(!wa(Hr(r,"apps/control-plane-worker/wrangler.local.toml")))throw new y("user","--checkout must point to an Arcanist developer checkout.");if(wa(Hr(r,".cloud-zeus-launcher.lock")))throw new y("conflict","Stop the local dev stack before resetting its database.");let o=Hr(r,".worktree-ports"),n=wa(o)?mT(o,"utf8"):"",i=Number(n.match(/^API_PORT=(\d+)$/m)?.[1]??3e3);await new Promise((f,m)=>{let g=gT({host:"127.0.0.1",port:i});g.once("connect",()=>{g.destroy(),m(new y("conflict",`Stop the local API on port ${i} before resetting its database.`))}),g.once("error",h=>{g.destroy(),h.code==="ECONNREFUSED"?f():m(h)})});let a=Hr(r,"apps/control-plane-worker/.wrangler/state/v3/d1/miniflare-D1DatabaseObject");if(!wa(a)||Op(a)!==a)throw new y("user","No checkout-owned local D1 database found. Refusing a symlinked state directory.");let{DatabaseSync:s}=await import("node:sqlite"),u=pT(a).filter(f=>f.endsWith(".sqlite")&&f!=="metadata.sqlite");if(u.length!==1)throw new y("user","Expected exactly one local control-plane database.");let c=Hr(a,u[0]);if(Op(c)!==c)throw new y("user","Refusing a symlinked database.");let l=new s(c,{readOnly:!0}),d=`${c}.reset-${crypto.randomUUID()}`;try{let f=new Set(l.prepare("PRAGMA table_list").all().filter(b=>b.type==="shadow").map(b=>b.name)),m=l.prepare("SELECT type, name, tbl_name, sql FROM sqlite_master WHERE sql IS NOT NULL AND name NOT LIKE 'sqlite_%' ORDER BY CASE type WHEN 'table' THEN 0 WHEN 'index' THEN 1 WHEN 'view' THEN 2 ELSE 3 END, rowid").all().filter(b=>!f.has(b.tbl_name));if(!m.some(b=>b.name==="users")||!m.some(b=>b.name==="d1_migrations"))throw new y("user","The selected database is not a migrated control-plane database.");let g=l.prepare("SELECT * FROM d1_migrations").all(),h=new s(d);try{h.exec("BEGIN");for(let b of m)h.exec(b.sql);for(let b of g){let $=Object.keys(b),I=$.map(k=>`"${k.replaceAll('"','""')}"`).join(", ");h.prepare(`INSERT INTO d1_migrations (${I}) VALUES (${$.map(()=>"?").join(", ")})`).run(...Object.values(b))}h.exec("COMMIT")}finally{h.close()}}catch(f){throw Np(d,{force:!0}),f}finally{l.close()}try{fT(d,c);for(let f of["-wal","-shm"])Np(`${c}${f}`,{force:!0})}finally{Np(d,{force:!0})}C(t,e,{reset:!0,checkout:r},()=>{console.log("Local app data reset. Schema and migration history retained; no backup created."),console.log("Start the API and UI without dev-full.sh, which would reapply developer seeds.")})}var Rn=p.string().uuid(),O0=p.union([p.literal("end"),p.string().regex(/^\d{10}$/)]),N0=1024*1024,D0=p.union([p.object({traceId:Rn,part:p.literal("end"),parts:p.number().int().nonnegative(),complete:p.boolean(),format:p.literal("observed-runtime-events-v1")}),p.object({traceId:Rn,part:p.string().regex(/^\d{10}$/),content:p.string()})]);import{open as vT}from"node:fs/promises";var Kr=class extends y{};async function xa(e,t){let r=[],o;do{let n=A("/api/internal/zeus-reviews/sessions/:sessionId/planner-traces",{sessionId:t}),i=await Un(e,n+(o?`?cursor=${encodeURIComponent(o)}`:""));r.push(...i.parts),o=i.cursor}while(o);return r}async function $a(e,t,r,o,n){let i=n.filter(m=>m.key.startsWith(`${r}/`)).sort((m,g)=>m.key.localeCompare(g.key));if(!i.length)throw new y("not_found","Planner trace not found.");let a=await vT(o,"wx",384),s=0,u=!0,c="",l=!0,d;try{for(let m of i){let g=m.key.slice(r.length+1).replace(/\.json$/,""),{record:h}=await Un(e,A("/api/internal/zeus-reviews/sessions/:sessionId/planner-traces/:traceId/:part",{sessionId:t,traceId:r,part:g}));if(!("content"in h))d=h;else{Number(h.part)!==s&&(u=!1),s++,await a.writeFile(h.content);let b=(c+h.content).split(`
|
|
91
|
-
`);c=b.pop();for(let $ of b)try{JSON.parse($)}catch{l=!1}}}}finally{await a.close()}if(c)try{JSON.parse(c)}catch{l=!1}if(!l)throw new Kr("server",`Planner trace contains invalid JSONL; saved to ${o}.`);let f=s>0&&u&&d?.complete===!0&&d.parts===s;return{traceId:r,out:o,parts:s,complete:f}}async function ly(e,t,r){let o=V(r,t),n=J(o),i=new URLSearchParams({prUrl:e,headSha:t.head}),a=await P(n,`${A("/api/internal/zeus-reviews/comparison")}?${i}`);C(r,o,a,s=>{o.quiet||console.log(fe(JSON.stringify(s,null,2)))})}async function dy(e,t,r){let o=V(r,t),n=J(o),[i,a]=await Promise.all([P(n,A("/api/pr-reviews/requests/:requestId",{requestId:e})),P(n,A("/api/pr-reviews/requests/status-batch"),{method:"POST",body:JSON.stringify({requestIds:[e]})})]);C(r,o,{review:i,requestStatus:a},s=>{if(o.quiet)return;let{findings:u,...c}=s.review;console.log(fe(JSON.stringify({review:c,requestStatus:s.requestStatus},null,2)));for(let d of jt(u,{withBody:!0}))console.log(d);let l=i.sessionId??a.requests[0]?.activeSessionId;if(l){let d=j(l);console.log(`Next: arcanist sessions view ${d}`),console.log(`Next: arcanist reviews stages ${d}`)}})}async function py(e,t,r,o){let n=V(o,r),i=J(n);if(t!==void 0){let s=await P(i,A("/api/internal/zeus-reviews/sessions/:sessionId/stages/:stage",{sessionId:e,stage:t}));C(o,n,s,u=>{n.quiet||console.log(fe(JSON.stringify(u,null,2)))});return}let a=await P(i,A("/api/internal/zeus-reviews/sessions/:sessionId/stages",{sessionId:e}));C(o,n,a,s=>{if(!n.quiet)for(let u of s.stages)console.log(`${j(u.stage)} ${u.size} bytes ${u.uploadedAt}`)})}async function my(e,t,r,o){let n=V(o,r),i=J(n);if(t&&(!Rn.safeParse(t).success||!r.out))throw new y("user","Use a valid trace ID and --out <file.jsonl> to download a trace.");if(!t&&r.out)throw new y("user","A trace ID is required with --out.");let a=await xa(i,e);if(!t){C(o,n,{parts:a},c=>{if(!n.quiet)for(let l of c.parts)console.log(`${j(l.key)} ${l.size} bytes`)});return}let{parts:s,complete:u}=await $a(i,e,t,r.out,a);if(!u)throw new y("server",`Incomplete planner trace saved to ${r.out}. Missing parts, failed capture, or no end marker.`);C(o,n,{traceId:t,out:r.out,parts:s,complete:u},c=>{n.quiet||console.log(j(`Saved ${c.parts} parts to ${c.out} (complete observed runtime stream).`))})}async function fy(e,t,r){if(t.fault
|
|
91
|
+
`);c=b.pop();for(let $ of b)try{JSON.parse($)}catch{l=!1}}}}finally{await a.close()}if(c)try{JSON.parse(c)}catch{l=!1}if(!l)throw new Kr("server",`Planner trace contains invalid JSONL; saved to ${o}.`);let f=s>0&&u&&d?.complete===!0&&d.parts===s;return{traceId:r,out:o,parts:s,complete:f}}async function ly(e,t,r){let o=V(r,t),n=J(o),i=new URLSearchParams({prUrl:e,headSha:t.head}),a=await P(n,`${A("/api/internal/zeus-reviews/comparison")}?${i}`);C(r,o,a,s=>{o.quiet||console.log(fe(JSON.stringify(s,null,2)))})}async function dy(e,t,r){let o=V(r,t),n=J(o),[i,a]=await Promise.all([P(n,A("/api/pr-reviews/requests/:requestId",{requestId:e})),P(n,A("/api/pr-reviews/requests/status-batch"),{method:"POST",body:JSON.stringify({requestIds:[e]})})]);C(r,o,{review:i,requestStatus:a},s=>{if(o.quiet)return;let{findings:u,...c}=s.review;console.log(fe(JSON.stringify({review:c,requestStatus:s.requestStatus},null,2)));for(let d of jt(u,{withBody:!0}))console.log(d);let l=i.sessionId??a.requests[0]?.activeSessionId;if(l){let d=j(l);console.log(`Next: arcanist sessions view ${d}`),console.log(`Next: arcanist reviews stages ${d}`)}})}async function py(e,t,r,o){let n=V(o,r),i=J(n);if(t!==void 0){let s=await P(i,A("/api/internal/zeus-reviews/sessions/:sessionId/stages/:stage",{sessionId:e,stage:t}));C(o,n,s,u=>{n.quiet||console.log(fe(JSON.stringify(u,null,2)))});return}let a=await P(i,A("/api/internal/zeus-reviews/sessions/:sessionId/stages",{sessionId:e}));C(o,n,a,s=>{if(!n.quiet)for(let u of s.stages)console.log(`${j(u.stage)} ${u.size} bytes ${u.uploadedAt}`)})}async function my(e,t,r,o){let n=V(o,r),i=J(n);if(t&&(!Rn.safeParse(t).success||!r.out))throw new y("user","Use a valid trace ID and --out <file.jsonl> to download a trace.");if(!t&&r.out)throw new y("user","A trace ID is required with --out.");let a=await xa(i,e);if(!t){C(o,n,{parts:a},c=>{if(!n.quiet)for(let l of c.parts)console.log(`${j(l.key)} ${l.size} bytes`)});return}let{parts:s,complete:u}=await $a(i,e,t,r.out,a);if(!u)throw new y("server",`Incomplete planner trace saved to ${r.out}. Missing parts, failed capture, or no end marker.`);C(o,n,{traceId:t,out:r.out,parts:s,complete:u},c=>{n.quiet||console.log(j(`Saved ${c.parts} parts to ${c.out} (complete observed runtime stream).`))})}async function fy(e,t,r){if([t.fault,t.clear,t.sweep].filter(Boolean).length>1)throw new y("user","Choose one of --fault, --clear, or --sweep.");let n=V(r,t),i=J(n),a=await P(i,t.sweep?A("/api/internal/qa/review-requests/:requestId/projection-sweep",{requestId:e}):A("/api/internal/qa/review-requests/:requestId/recovery-probe",{requestId:e}),{method:t.clear?"DELETE":t.fault||t.sweep?"POST":"GET",...t.fault?{body:JSON.stringify({fault:t.fault})}:{}});C(r,n,a,s=>{n.quiet||process.stdout.write(`${fe(JSON.stringify(s,null,2))}
|
|
92
92
|
`)})}var gy=["published","publish_failed","gate_rejected"],hy=["not_applicable","never_ran","all_empty","completed_empty","yielded"];var vy=["bundle","ledger","disposition","lineage"];var _y=/^cap-[0-9a-f]{8}$/,yy=/^[A-Za-z0-9][A-Za-z0-9 ._-]{0,79}$/;var by=/^req-[0-9a-f]{8}$/;var Sy=300,Jr=500,zp=3,_T=6e3;var wy=/^dl-[0-9a-f]{8}$/,yT=new Set(["localhost","localhost.localdomain","metadata","metadata.google.internal","instance-data","instance-data.ec2.internal"]);function Dp(e){let t=e.split(".");if(t.length===4&&t.every(r=>/^\d{1,3}$/.test(r)&&Number(r)<=255)){let[r,o]=t.map(Number);return r===0||r===10||r===127||r===169&&o===254||r===172&&o>=16&&o<=31||r===192&&o===168||r===100&&o>=64&&o<=127||r===198&&(o===18||o===19)}if(e.includes(":")){let r=e.toLowerCase();if(r==="::"||r==="::1"||/^fe[89ab]/.test(r)||/^f[cd]/.test(r))return!0;if(r.startsWith("::ffff:")){let o=r.slice(7),n=o.match(/^([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);if(n){let i=Number.parseInt(n[1],16),a=Number.parseInt(n[2],16);return Dp(`${i>>8}.${i&255}.${a>>8}.${a&255}`)}return Dp(o)}return!1}return!1}function bT(e){try{let t=new URL(e),r=t.hostname.toLowerCase().replace(/^\[/,"").replace(/\]$/,"");return(t.protocol==="http:"||t.protocol==="https:")&&t.username===""&&t.password===""&&!yT.has(r)&&!Dp(r)}catch{return!1}}var uL=p.discriminatedUnion("kind",[p.object({kind:p.literal("search"),query:p.string().trim().min(3).max(Sy)}).strict(),p.object({kind:p.literal("fetch"),url:p.string().url().max(Jr).refine(bT,{message:"url must be http(s) without credentials"}),query:p.string().trim().min(3).max(Sy).optional()}).strict()]),ST=p.object({url:p.string().max(Jr),title:p.string().max(300).nullable(),publishedDate:p.string().max(40).nullable(),text:p.string().max(_T)}).strict(),cL=p.object({results:p.array(ST).max(zp)}).strict();var dL=10*6e4,pL=5*6e4;var mL=10*6e4,fL=5*6e4,gL=10*6e4;var xy=8;var hL=256*1024,vL=64*1024*1024;var _L=15.5*6e4;var yL=256*1024;var $y=64*1024,bL=64*1024;var wT=30,Ia=xy*wT,Cn=p.string().trim().min(1).max(4e3),Ze=p.object({id:p.string().regex(/^[a-zA-Z0-9._:-]+$/).max(80).describe("Stable id you choose for this work item; reuse it to update the item."),changedPath:Cn.describe("Changed file path from the admitted diff."),producer:Cn.describe("Code that produces the changed value or behavior."),consumer:Cn.describe("Actual code that consumes it."),inputState:Cn.describe("Concrete input or state that reaches the consumer."),status:p.enum(["pending","settled","refuted","below_bar","external","environment","budget_exhausted"]).describe("pending while open; any other status closes the item and needs reason. below_bar: verified and non-blocking; still filed as a finding."),evidence:p.array(Cn).max(Ia).describe("Source or probe references. Required for settled, refuted, below_bar."),reason:Cn.describe("Why the item has this status. Optional only while pending."),candidateIds:p.array(p.string().min(1).max(80)).max(Ia).describe("Delivered scout candidate ids this item covers."),findingIds:p.array(p.string().min(1).max(80)).max(Ia).describe("Ids of findings this item supports.")}).strict(),xT=Ze.refine(e=>!["settled","refuted","below_bar"].includes(e.status)||e.evidence.length>0,{message:"A settled decision needs source or probe evidence."});var Up="candidate:";var $L=Ze.extend({changedPath:Ze.shape.changedPath.optional(),producer:Ze.shape.producer.optional(),consumer:Ze.shape.consumer.optional(),inputState:Ze.shape.inputState.optional(),status:Ze.shape.status.optional(),evidence:Ze.shape.evidence.optional(),candidateIds:p.array(p.string().min(1).max(Up.length+80).transform(e=>e.startsWith(Up)?e.slice(Up.length):e)).max(Ia).describe(Ze.shape.candidateIds.description).optional(),findingIds:Ze.shape.findingIds.optional(),reason:Ze.shape.reason.optional()}).superRefine((e,t)=>{e.reason===void 0&&e.status!==void 0&&e.status!=="pending"&&t.addIssue({code:"custom",path:["reason"],message:`reason is required when status is ${e.status}`})}),Iy=p.string().regex(/^q-[1-9][0-9]*$/).max(16),IL=p.object({baseSha:p.string().nullable(),headSha:p.string().nullable(),items:p.array(xT),unreadRanges:p.array(p.object({path:p.string(),start:p.number().int(),end:p.number().int()})),reconciliationUsed:p.boolean().optional(),budgetExhausted:p.boolean().optional(),pendingPaths:p.array(p.string()),omittedRangeCount:p.number().int().nonnegative(),omittedPendingPathCount:p.number().int().nonnegative()}).refine(e=>new TextEncoder().encode(JSON.stringify(e)).byteLength<=$y,{message:"Investigation ledger exceeds the transport budget."});var ET=p.string().regex(_y),kT=p.enum(["screenshot","video"]),TT=p.object({captureId:ET,label:p.string().regex(yy),artifactId:p.string().min(1).max(80),url:p.string().url().max(2e3),kind:kT.default("screenshot"),durationMs:p.number().int().min(0).max(9e4).optional(),fullUrl:p.string().url().max(2e3).optional(),posterUrl:p.string().url().max(2e3).optional(),alt:p.string().min(1).max(200).optional()}).strict(),RL=TT.extend({finalPath:p.string().max(500).optional()}).strict(),CL=p.object({requestId:p.string().regex(by),method:p.enum(["GET","HEAD"]),path:p.string().min(1).max(2e3),status:p.number().int().min(100).max(599).nullable(),authenticated:p.boolean(),redirected:p.object({location:p.string().max(2e3)}).strict().nullable(),contentType:p.string().max(200).nullable(),bodySha256:p.string().regex(/^[0-9a-f]{64}$/i).nullable(),bodyExcerpt:p.string().max(2e3).nullable(),promptId:p.string().min(1),bodyOmitted:p.enum(["binary","too_large","unreadable"]).optional()}).strict(),Lp=["ok","empty","rate_limited","upstream_error","invalid_input","budget_exhausted","page_unavailable","unavailable"],OL=p.object({lookupId:p.string().regex(wy),kind:p.enum(["search","fetch"]),input:p.string().min(1).max(Jr),status:p.enum(Lp),resultUrls:p.array(p.string().max(Jr)).max(zp),durationMs:p.number().int().nonnegative(),promptId:p.string().min(1),thread:p.enum(["primary","scout"]),investigationId:Iy.optional()}).strict();var jp="zeus_telemetry";var Ey=["succeeded","succeeded_empty","no_output","unparseable_output","failed","timed_out","aborted","hung","released_early"],ky={state:{kind:"string_enum",values:["no_notification","turn_completed","command_running","tool_running","model_output_open","awaiting_model_output"]},lastNotificationMethod:"string",maxNotificationGapMs:"number",modelResponseCount:"number",streamRetryCount:"number",itemsInFlight:"number",oldestItemInFlight:{kind:"object",fields:{type:"string",tool:"string",msSinceStarted:"number"}},recentNotifications:"string_array"},AT={unavailable:{kind:"string_enum",values:["no_pid","unsupported_platform","no_process"]},sockets:{kind:"object_array",fields:{remote:"string",state:"string",txQueueBytes:"number",rxQueueBytes:"number"}}},WL={"zeus.verification_observed":{observedCount:"number",hasObservedCommand:"boolean",matchedNoTestsCount:"number",runnerMismatchCount:"number",runnerResolved:"boolean",resolvedPackageManager:{kind:"string_enum",values:["npm","pnpm","yarn","bun"]}},"zeus.publish_rejected":{reason:"string",checkCount:"number",findingCount:"number",verdict:"string",firstAttempt:"boolean",attemptOrdinal:"number",contractVersion:"string",schemaPath:"string",schemaIssue:"string",schemaValue:"string"},"zeus.publish_secret_value_redacted":{count:"number"},"zeus.publish_notes_unverified":{attemptOrdinal:"number",findingCount:"number",contractVersion:"string"},"zeus.publish_empty_review_unattested":{attemptOrdinal:"number",noteCount:"number",contractVersion:"string"},"zeus.publish_blocking_downgraded":{detail:{kind:"string_enum",values:["no_base_run","no_matched_pair"]},blockingCount:"number",attemptOrdinal:"number"},"zeus.scout.health":{health:{kind:"string_enum",values:hy},dispatch_mode:{kind:"string_enum",values:["targeted","broad"]},unresolvedInvestigationCount:"number",publishOutcome:{kind:"string_enum",values:gy},candidateTotal:"number",expectedScoutCount:"number",observedScoutCount:"number",statuses:"string_array"},"zeus.scout.agreement":{candidateCount:"number",publishedCandidateCount:"number",examinedRejectedCount:"number",notExaminedCount:"number",notExaminedEnvironmentCount:"number",notExaminedExternalCount:"number",notExaminedNoneCount:"number",notDeliveredCount:"number",notSelectedCount:"number",verifierRefutedCount:"number",reproWithheldCount:"number",verifierReportedCount:"number",verifierReportedPublishedCount:"number"},"zeus.candidate_ledger":{conserved:"boolean",candidateCount:"number",droppedCount:"number",publishedCandidateCount:"number",rejectedCount:"number",notDeliveredCount:"number",notSelectedCount:"number",verifierRefutedCount:"number",reproWithheldCount:"number",verifierReportedCount:"number",violationStage:{kind:"string_enum",values:["none",...vy]}},"zeus.judge.below_bar_unfiled":{count:"number"},"zeus.stage.peer_triage_completed":{reason:"string",threads:"number",stageStatus:{kind:"string_enum",values:["ok","failed","skipped"]}},"zeus.review_investigation.read_evidence":{referenceKind:{kind:"string_enum",values:["inline","canonical","repaired","rejected"]}},"zeus.verifier.terminal":{verifierStatus:{kind:"string_enum",values:Ey},effort:"string",stall:{kind:"object",fields:ky},codexTcpSockets:{kind:"object",fields:AT}},"zeus.scout.terminal":{scoutStatus:{kind:"string_enum",values:Ey},stall:{kind:"object",fields:ky},investigationId:"string",effort:"string",theme:"string"},"zeus.scout.completion":{role:"string",status:"string",durationMs:"number",inputTokens:"number",outputTokens:"number",candidateCount:"number"},"zeus.scout.bundle_omitted":{omittedCandidateCount:"number",droppedExcerptCount:"number"},"zeus.scout.patch_truncated":{role:"string",sampleIndex:"number",investigationId:"string",ownedFileCount:"number",truncatedFileCount:"number",omittedFileCount:"number",withheldChars:"number"},"zeus.scout.patch_unavailable":{role:"string",sampleIndex:"number",reason:"string",ownedFileCount:"number",patchedFileCount:"number"},"zeus.doc_lookup":{kind:{kind:"string_enum",values:["search","fetch"]},status:{kind:"string_enum",values:Lp},thread:{kind:"string_enum",values:["primary","scout"]},investigationId:"string",durationMs:"number",resultCount:"number"},"zeus.review.prompt_budget_truncated":{excessChars:"number",reviewContextPacketTruncated:"boolean",droppedSectionNames:"string_array",truncatedSectionNames:"string_array",beforeChars:"number",afterChars:"number"},"zeus.review.prompt_budget_externalized":{beforeChars:"number",afterChars:"number",budgetChars:"number",externalizedSectionNames:"string_array"},"tool_call.observed":{callId:"string",toolName:"string",mcpClass:"string",outcome:{kind:"string_enum",values:["ok","error","aborted"]},timedOut:"boolean",failureCategory:"string",durationMeasured:"boolean",durationMs:"number",exitCode:"number",toolScope:{kind:"string_enum",values:["prompt","child"]},agent:"string"},"zeus.verifier_sandbox.phase":{runtimeBackend:"string",phase:{kind:"string_enum",values:["prepare","snapshot","provision","boot","checkout","maintenance"]},transition:{kind:"string_enum",values:["started","completed"]},outcome:{kind:"string_enum",values:["succeeded","failed"]}},"prompt.behavior.completed":{agentProfile:"string",isFollowup:"boolean",outcome:{kind:"string_enum",values:["success","aborted","error","suspended"]},promptMadeRepoProgress:"boolean"},"prompt.predispatch":{agentProfile:"string",isFollowup:"boolean",outcome:{kind:"string_enum",values:["dispatched","error"]},predispatchMs:"number",repoSnapshotMs:"number"}};var Ty=["prompt.started","context.selected","files.inspected","tools.run","files.edited","commands.run","publish_gate.result","verification.result","git.commit","git.push","pr.open","onboarding.discovery_delivered","onboarding.discovery_tool_blocked","codex.turn_sandbox_policy"],Ay=["observed"],Py=["sandbox_bridge","control_plane"],Ry=["started","completed","failed","skipped","blocked"];var PT=["session.create","sandbox.spawn","bridge.connect","bridge.event","prompt.enqueue","prompt.context","prompt.dispatch","agent.session.create","tool.call","tool.update","tool.result","text.delta","prompt.complete","git.push","pr.open","timeline","error","user_question","idle"],Mp=new Set(["step_start","step_finish","branch_changed","subagent_start","subagent_complete","subagent_text","subagent_tool_call","memory_usage","memory_recall_usage"]);function re(e){return typeof e=="number"&&Number.isFinite(e)}function ee(e){return e===void 0||typeof e=="string"}function Cy(e){return e===void 0||L(e)}function Ea(e){return e==null||typeof e=="string"}function Fe(e,t){return typeof e=="string"&&t.includes(e)}function RT(e){return typeof e=="string"||L(e)&&typeof e.label=="string"&&ee(e.description)}function ce(e){return L(e)?ee(e.bridgeEventType)&&!Oy(e)&&Cy(e.bridgeData):!1}function Oy(e){return L(e)?typeof e.bridgeEventType=="string"&&Mp.has(e.bridgeEventType):!1}function ka(e,t){if(!L(t))return!1;switch(e){case"session.create":return ce(t)&&Fe(t.source,["ui","cli","slack","api"])&&(t.sessionKind===void 0||Fe(t.sessionKind,["repo"]));case"sandbox.spawn":return ce(t)&&Fe(t.status,["requested","started","ready","failed"])&&(t.attempt===void 0||re(t.attempt))&&ee(t.reason);case"bridge.connect":return ce(t)&&Fe(t.status,["connected","disconnected","reconnecting"]);case"bridge.event":return typeof t.bridgeEventType=="string"&&!Oy(t)&&Cy(t.bridgeData)&&(t.intermediate===void 0||typeof t.intermediate=="boolean");case"prompt.enqueue":return ce(t)&&Ea(t.actorUserId)&&ee(t.agent)&&Ea(t.model);case"prompt.context":return ce(t);case"prompt.dispatch":return ce(t)&&Ea(t.startupAttemptId);case"agent.session.create":return ce(t)&&Fe(t.status,["started","complete","failed"])&&ee(t.agentSessionId)&&ee(t.agent);case"tool.call":return ce(t)&&typeof t.callId=="string"&&typeof t.tool=="string"&&ee(t.summary)&&(t.args===void 0||L(t.args));case"tool.result":return ce(t)&&typeof t.callId=="string"&&typeof t.tool=="string"&&typeof t.ok=="boolean"&&ee(t.error);case"text.delta":return ce(t)&&Fe(t.channel,["output","reasoning"])&&typeof t.text=="string"&&ee(t.partId);case"prompt.complete":return ce(t)&&typeof t.success=="boolean"&&ee(t.error)&&ee(t.errorCode);case"git.push":return ce(t)&&typeof t.branch=="string"&&typeof t.success=="boolean"&&ee(t.error);case"pr.open":return ce(t)&&typeof t.success=="boolean"&&ee(t.prUrl)&&(t.prNumber===void 0||re(t.prNumber))&&ee(t.error);case"timeline":return ce(t)&&Fe(t.eventType,Ty)&&Fe(t.source,Ay)&&Fe(t.observer,Py)&&typeof t.summary=="string"&&t.summary.trim().length>0&&(t.status===void 0||Fe(t.status,Ry))&&(t.metadata===void 0||L(t.metadata));case"error":return ce(t)&&typeof t.message=="string"&&ee(t.code);case"user_question":return ce(t)&&typeof t.questionId=="string"&&typeof t.question=="string"&&(t.options===void 0||Array.isArray(t.options)&&t.options.every(RT));case"idle":return ce(t)&&(t.sessionEditCount===void 0||re(t.sessionEditCount))&&(t.sessionPromptCount===void 0||re(t.sessionPromptCount));case"tool.update":return!1;default:return!1}}function CT(e){return typeof e=="string"&&PT.includes(e)}function Ny(e){if(!L(e))throw new Error("Invalid ArcanistEvent");if(!CT(e.phase))throw new Error("Invalid phase");if(typeof e.timestampMs!="number"||!Number.isFinite(e.timestampMs))throw new Error("Invalid timestampMs");if(typeof e.sessionId!="string"||e.sessionId.length===0)throw new Error("Invalid sessionId");if(e.promptId!==void 0&&typeof e.promptId!="string")throw new Error("Invalid promptId");if(e.sandboxId!==void 0&&typeof e.sandboxId!="string")throw new Error("Invalid sandboxId");if(!L(e.payload))throw new Error("Invalid payload");if(e.formatVersion!==void 0&&e.formatVersion!==2)throw new Error("Invalid formatVersion");if(e.formatVersion===2&&["type","timestamp","content","messageId","bridgeData","bridgeEventType"].some(r=>r in e))throw new Error("Legacy fields in version 2 envelope");if(!(e.formatVersion===2||!("bridgeData"in e.payload||"bridgeEventType"in e.payload)?OT(e.phase,e.payload):ka(e.phase,e.payload)))throw new Error(`Invalid payload for phase ${e.phase}`);return e}function OT(e,t){if("bridgeData"in t||"bridgeEventType"in t||["startedAt","completedAt","inputEstimatedTokens","outputEstimatedTokens","outputChars","sessionEditCount","sessionPromptCount","connectionGeneration"].some(o=>t[o]!==void 0&&!re(t[o])))return!1;for(let o of["exitCode","durationMs","startedAtMs"])if(t[o]!==void 0&&t[o]!==null&&!re(t[o]))return!1;if(!ee(t.protocolStatus)||t.startObserved!==void 0&&typeof t.startObserved!="boolean")return!1;switch(e){case"bridge.event":return NT(t);case"tool.update":return typeof t.callId=="string"&&typeof t.tool=="string"&&typeof t.status=="string";case"bridge.connect":return typeof t.status=="string"&&(t.kind===void 0||t.kind==="heartbeat")&&ee(t.echoNonce);case"prompt.dispatch":switch(t.kind){case void 0:return Ea(t.startupAttemptId);case"prompt_accepted":return ee(t.startupAttemptId);case"agent_prompt_sent":return ee(t.startupAttemptId)&&ee(t.agentSessionId)&&ee(t.agentRuntimeBackend);case"prompt_activity":return Fe(t.activityPhase,["agent_runtime_initializing","session_creating","event_subscribing","prompt_preparing","prompt_dispatching","waiting_for_agent_event"])&&ee(t.detail)&&(t.childWorkActive===void 0||t.childWorkActive===!0);case"agent_progress":return typeof t.step=="string"&&typeof t.label=="string"&&(t.terminal===void 0||typeof t.terminal=="boolean");default:return!1}case"text.delta":return ka(e,t)&&(t.finalAnswer===void 0||t.finalAnswer===!0);case"prompt.complete":return ka(e,t)&&(t.idleObserved===void 0||typeof t.idleObserved=="boolean")&&ee(t.btSpanId);default:return ka(e,t)}}function NT(e){switch(e.kind){case"patch":return Array.isArray(e.files)&&e.files.every(t=>typeof t=="string");case"prompt_telemetry_start":return ee(e.btSpanId);case"post_execution":return typeof e.hasChanges=="boolean"&&(e.promptIntendsChange===void 0||typeof e.promptIntendsChange=="boolean");case"runtime_info":return L(e.runtime);case"sandbox_undersized":return re(e.oomKills);case"sandbox_enospc":return typeof e.source=="string";case"qa_memory_maintenance_codex_policy_probe":return typeof e.completed=="boolean"&&(e.codexHomeWriteStatus==="allowed"||e.codexHomeWriteStatus==="denied"||e.codexHomeWriteStatus==="missing")&&(e.checkoutWriteStatus==="allowed"||e.checkoutWriteStatus==="denied"||e.checkoutWriteStatus==="missing")&&typeof e.draftUnderDreamerDrafts=="boolean"&&typeof e.draftSubmissionMatched=="boolean"&&ee(e.error);case"sandbox_resource_sample":return["memoryUsedBytes","memoryLimitBytes","memoryUsedPercent","swapUsedBytes","cpuUsedPercent","pidsCurrent","pidsLimit"].every(t=>e[t]===void 0||re(e[t]));case"qa_scout_rerun_probe":return typeof e.completed=="boolean"&&typeof e.scoutRerun=="boolean"&&re(e.verifierTerminalCount)&&(e.scoutRerunDeadlineAtMs===null||re(e.scoutRerunDeadlineAtMs))&&(e.rerunVerifierDeadlineCapAtMs===null||re(e.rerunVerifierDeadlineCapAtMs))&&re(e.investigationWindowMs);case"qa_dynamic_tool_repair_probe":return typeof e.toolName=="string"&&Array.isArray(e.droppedKeys)&&e.droppedKeys.every(t=>typeof t=="string")&&typeof e.repaired=="boolean"&&typeof e.toolSuccess=="boolean"&&(e.toolErrorCode===null||typeof e.toolErrorCode=="string");case"qa_dd_logs_flush_recoverable_probe":return typeof e.completed=="boolean"&&typeof e.recoveredFetchFailedAtWarn=="boolean"&&Array.isArray(e.fetchRequestRows)&&re(e.brokerHits)&&typeof e.gradeOk=="boolean"&&Array.isArray(e.gradeReasons)&&e.gradeReasons.every(t=>typeof t=="string");case"qa_protected_path_policy_block_probe":return typeof e.bridgeOutcome=="string"&&typeof e.protectionBlockedAtInfo=="boolean"&&re(e.protectionBlockedWarnCount)&&typeof e.handledAutomaticallyBlockedAtInfo=="boolean"&&re(e.handledAutomaticallyBlockedWarnCount)&&(e.protectionTool===null||typeof e.protectionTool=="string")&&(e.protectionPath===null||typeof e.protectionPath=="string")&&typeof e.gradeOk=="boolean"&&Array.isArray(e.gradeReasons)&&e.gradeReasons.every(t=>typeof t=="string");case"qa_bash_expansion_probe":return typeof e.completed=="boolean"&&Array.isArray(e.cases)&&e.cases.every(t=>typeof t.id=="string"&&typeof t.command=="string"&&(t.agentProfile==="review"||t.agentProfile==="onboard")&&(t.expectedKind==="protected_path"||t.expectedKind==="blocked_command"||t.expectedKind===null)&&(t.actualKind===null||typeof t.actualKind=="string")&&(t.actualPath===null||typeof t.actualPath=="string")&&(t.actualActionKey===null||typeof t.actualActionKey=="string")&&typeof t.passed=="boolean")&&typeof e.gradeOk=="boolean"&&Array.isArray(e.gradeReasons)&&e.gradeReasons.every(t=>typeof t=="string");case"usage":return["inputTokens","outputTokens","contextTokens"].every(t=>re(e[t]));case"estimated_input_composition":return L(e.components);case"retry_status":return re(e.attempt)&&typeof e.message=="string";case"tool_truncated":return typeof e.callId=="string"&&typeof e.tool=="string";case"compaction_start":return e.contextTokens===void 0||re(e.contextTokens);case"compaction_complete":return["contextTokensBefore","contextTokensAfter"].every(t=>e[t]===void 0||re(e[t]));case"context_fill_warning":return["fillPercent","contextTokens","contextWindow"].every(t=>re(e[t]));case"prompt_result":return!0;case"raw_agent_runtime":return!0;case"todo_update":return Array.isArray(e.todos)&&e.todos.every(t=>L(t)&&typeof t.id=="string"&&typeof t.content=="string"&&typeof t.status=="string");case"zeus_telemetry":return typeof e.eventName=="string";default:return!1}}function Dy(e){switch(e.phase){case"bridge.event":return e.payload.kind==="raw_agent_runtime"&&e.payload.runtimeEventType==="codex_event"?"codex_event":e.payload.kind;case"bridge.connect":return e.payload.kind==="heartbeat"?"heartbeat":e.phase;case"prompt.dispatch":return e.payload.kind??"prompt_accepted";case"text.delta":return e.payload.finalAnswer?"final_answer":e.payload.channel==="reasoning"?"reasoning":"token";case"tool.call":return"tool_call";case"tool.update":return"tool_update";case"tool.result":return"tool_result";case"prompt.complete":return"execution_complete";case"user_question":return"question";case"error":return"error";case"idle":return"session_idle";case"agent.session.create":return"agent_session_created";case"timeline":return"agent_timeline";case"git.push":return e.payload.success?"push_complete":"push_error";default:return e.phase}}function Zp(e,t){if(!L(e))throw new Error("Invalid event");if(e.formatVersion!==void 0)return Ny(e);if(typeof e.phase=="string"&&L(e.payload)){let f=e,m=e.payload;if(!L(m))throw new Error("Invalid payload");if(!("bridgeData"in m||"bridgeEventType"in m))return f;let g=L(m.bridgeData)?m.bridgeData:{},{bridgeData:h,bridgeEventType:b,...$}=m;if(["session.create","sandbox.spawn","prompt.enqueue","pr.open","git.push"].includes(f.phase))return{...f,payload:{...g,...$}};let I=typeof m.bridgeEventType=="string"?m.bridgeEventType:Dy(f),k=f.phase==="text.delta"&&I==="text"?"token":f.phase==="prompt.dispatch"&&I==="prompt_processing"?"prompt_accepted":I,R=Zp({...g,type:k,timestamp:f.timestampMs,sandboxId:f.sandboxId,messageId:f.promptId??g.messageId,promptId:f.promptId??g.promptId,ackId:e.ackId},f.sessionId??"");return R.phase==="bridge.connect"&&R.payload.kind==="heartbeat"&&delete $.status,$.startupAttemptId===null&&delete $.startupAttemptId,{...R,payload:{...R.payload,...$}}}if(typeof e.type!="string"||Mp.has(e.type))throw new Error("Removed or invalid bridge event");if(t===void 0)throw new Error("Missing sessionId for legacy event");let{type:r,timestamp:o,messageId:n,promptId:i,sandboxId:a,ackId:s,...u}=e,c={sessionId:t,timestampMs:typeof o=="number"?o:Number.isFinite(Date.parse(String(o)))?Date.parse(String(o)):Date.now(),...typeof i=="string"?{promptId:i}:typeof n=="string"?{promptId:n}:{},...typeof a=="string"?{sandboxId:a}:{},...typeof s=="string"?{ackId:s}:{}},l,d;switch(r){case"heartbeat":l="bridge.connect",d={...u,kind:"heartbeat"};break;case"prompt_activity":{let{phase:f,...m}=u;l="prompt.dispatch",d={...m,kind:r,activityPhase:f};break}case"prompt_accepted":case"agent_progress":case"agent_prompt_sent":l="prompt.dispatch",d={...u,kind:r};break;case"token":case"reasoning":case"final_answer":{let{content:f,...m}=u;l="text.delta",d={...m,channel:r==="reasoning"?"reasoning":"output",text:f,...r==="final_answer"?{finalAnswer:!0,partId:u.partId??`${n}:final_answer`}:{}};break}case"tool_call":{let{args:f,...m}=u;l="tool.call",d=L(f)?{...m,args:f}:m;break}case"tool_update":l="tool.update",d=u;break;case"tool_result":l="tool.result",d={...u,ok:u.error===void 0};break;case"execution_complete":l="prompt.complete",d=u;break;case"error":case"session_error":{let{error:f,errorDetails:m,...g}=u;l="error",d={...g,message:f,...m!==void 0?{details:m}:{}};break}case"question":l="user_question",d=u;break;case"session_idle":l="idle",d=u;break;case"agent_session_created":l="agent.session.create",d={...u,status:"complete"};break;case"agent_timeline":l="timeline",d=u;break;case"codex_event":l="bridge.event",d={kind:"raw_agent_runtime",runtimeEventType:r,...u};break;case"zeus_telemetry":{let{kind:f,...m}=u;l="bridge.event",d={...m,kind:r,...f!==void 0?{lookupKind:f}:{}};break}case"patch":case"prompt_telemetry_start":case"post_execution":case"runtime_info":case"sandbox_undersized":case"sandbox_enospc":case"sandbox_resource_sample":case"usage":case"estimated_input_composition":case"retry_status":case"tool_truncated":case"compaction_start":case"compaction_complete":case"context_fill_warning":case"prompt_result":case"raw_agent_runtime":case"todo_update":l="bridge.event",d={...u,kind:r};break;default:l="bridge.event",d={...u,kind:"raw_agent_runtime",runtimeEventType:r}}return{...c,phase:l,payload:d}}var zy=["repo_scan_started","stack_detected","dependencies_resolved","setup_authored","runtime_profile_authored","boot_attempt_started","boot_verified","environment_saved","build_started","smoke_started","smoke_passed","smoke_failed","escalated_to_engineer","engineer_unblocked","escalated_to_customer","question_for_customer","customer_unblocked","completed","failed"],sj=zy.filter(e=>e!=="runtime_profile_authored"&&e!=="boot_attempt_started"&&e!=="boot_verified"),DT=["started","succeeded","failed"],zT=200;function UT(e){return typeof e=="string"&&zy.includes(e)}function LT(e){return typeof e=="string"&&DT.includes(e)}function Uy(e){if(!L(e))return null;let t=e;if(!UT(t.stage))return null;let r=LT(t.status)?t.status:"started",n=(typeof t.detail=="string"?t.detail.trim():"").slice(0,zT);return{stage:t.stage,status:r,...n?{detail:n}:{}}}var jT="Arcanist blocked this malformed search command before execution.",MT=/\/bin\/bash:\s+-c:\s+line\s+\d+:\s+unexpected EOF while looking for matching [`'\"][`'\"]?/i,ZT=24,FT=new Set(["session.updated","session.diff","server.heartbeat","session.idle","lsp.updated","lsp.client.diagnostics"]);function Ta(e){return"phase"in e&&typeof e.phase=="string"}var Ly=new WeakMap;function Aa(e){let t=Ly.get(e);return t||(t=Zp(e),Ly.set(e,t)),t}function Pa(e){return Aa(e).payload}function BT(e){let t=Pa(e);return{...t,...t.activityPhase?{phase:t.activityPhase}:{}}}function Vy(e){return Pa(e).kind}function Gy(e){return Aa(e).promptId}function pe(e,t){let r=Gy(e);return r&&t.promptId===void 0?{...t,promptId:r}:t}function VT(e,t,r){switch(t){case"tool_call":return pe(e,{...r,...typeof r.callId=="string"&&r.callId.length>0&&!(typeof r.id=="string"&&r.id.length>0)?{id:r.callId}:{},...L(r.args)&&r.input===void 0?{input:r.args}:{}});case"tool_update":return pe(e,{...r,...typeof r.callId=="string"&&r.callId.length>0&&!(typeof r.id=="string"&&r.id.length>0)?{id:r.callId}:{}});default:return pe(e,r)}}function Yr(e){return Ta(e)?Gy(e):L(e.data)&&typeof e.data.promptId=="string"&&e.data.promptId.length>0?e.data.promptId:void 0}function On(e){if(!Ta(e))return e.type;let t=Pa(e),r=Vy(e);if(r==="prompt_activity")return"prompt_activity";if(r==="agent_progress")return"agent_progress";switch(Aa(e).phase){case"text.delta":return t.channel==="reasoning"?"reasoning":"text";case"tool.call":return"tool_call";case"tool.update":case"tool.result":return"tool_update";case"prompt.enqueue":return"prompt_enqueued";case"prompt.dispatch":return"prompt_processing";case"prompt.complete":return t.success===!1?"prompt_failed":"prompt_completed";case"user_question":return"question";case"error":return"session_error";case"bridge.event":return r??e.phase;case"timeline":return r??"agent_timeline";case"idle":return r??"session_idle";default:return r??e.phase}}function GT(e){if(Ta(e))return Number.isFinite(e.timestampMs)&&Number.isFinite(new Date(e.timestampMs).getTime())?new Date(e.timestampMs).toISOString():void 0;let t=L(e.data)?e.data.timestamp:void 0;if(typeof t=="string"&&t.length>0||typeof t=="number"){let o=new Date(t);if(Number.isFinite(o.getTime()))return o.toISOString()}let r=e.timestamp;if(typeof r=="string"&&r.length>0||typeof r=="number"){let o=new Date(r);if(Number.isFinite(o.getTime()))return o.toISOString()}}function qT(e){let t=GT(e);if(!t)return;let r=Date.parse(t);return Number.isFinite(r)?r:void 0}function Bp(e){if(!Ta(e))return L(e.data)?e.data:void 0;let t=Pa(e),r=Vy(e),o=pe(e,BT(e));switch(Aa(e).phase){case"text.delta":return pe(e,{...o,...typeof t.partId=="string"&&t.partId.length>0?{id:t.partId}:{},text:t.text});case"tool.call":return pe(e,{...o,id:t.callId,tool:t.tool,input:L(t.args)?t.args:{},summary:typeof t.summary=="string"?t.summary:""});case"tool.update":return pe(e,{...o,id:t.callId,status:t.status});case"tool.result":return pe(e,{...o,id:t.callId,status:typeof o.status=="string"?o.status:t.ok?"completed":"error"});case"prompt.enqueue":return pe(e,{...o,source:t.source,...t.actorUserId!==void 0?{actorUserId:t.actorUserId}:{},...typeof t.agent=="string"?{agent:t.agent}:{},...t.model!==void 0?{model:t.model}:{}});case"prompt.dispatch":return pe(e,{...o,...t.startupAttemptId!==void 0?{startupAttemptId:t.startupAttemptId}:{}});case"prompt.complete":return pe(e,{...o,success:t.success,...typeof t.error=="string"?{error:t.error}:{},...typeof t.errorCode=="string"?{code:t.errorCode}:{},...t.errorDetails!==void 0?{errorDetails:t.errorDetails}:{}});case"user_question":return pe(e,{...o,id:t.questionId,question:t.question,...Array.isArray(t.options)?{options:t.options}:{}});case"error":return pe(e,{...o,error:t.message,...typeof t.code=="string"?{code:t.code}:{},...typeof t.command=="string"?{command:t.command}:{},...t.details!==void 0?{errorDetails:t.details}:{}});case"bridge.event":return VT(e,r,o);case"timeline":return pe(e,{...o,...typeof t.eventType=="string"?{eventType:t.eventType}:{},...typeof t.source=="string"?{source:t.source}:{},...typeof t.observer=="string"?{observer:t.observer}:{},...typeof t.summary=="string"?{summary:t.summary}:{},...typeof t.status=="string"?{status:t.status}:{},...L(t.metadata)?{metadata:t.metadata}:{}});case"idle":return pe(e,{...o,...typeof t.sessionEditCount=="number"?{sessionEditCount:t.sessionEditCount}:{},...typeof t.sessionPromptCount=="number"?{sessionPromptCount:t.sessionPromptCount}:{}});default:return pe(e,o)}}function qy(e){let t=Bp(e);return{raw:e,type:On(e),data:t,promptId:Yr(e)}}function jy(e){return e.map(t=>qy(t))}function WT(e,t){return t?t.length<ZT?!0:!e.endsWith(t):!1}function HT(){return{streamableIndexById:new Map,segmentOrdinalByStreamId:new Map,concatByStreamId:new Map,interstitialScanEndByStreamId:new Map}}function KT(e,t){return`${e}:${t}`}function My(e,t){return t===0?e:`${e}#${t}`}function Mt(e,t,r){return typeof e?.id=="string"?e.id:`${t}-${r}`}function JT(e){let t=e?.text;if(typeof t=="string")return t;let r=e?.content;return typeof r=="string"?r:""}function YT(e){switch(e.type){case"agent_progress":case"retry_status":case"zeus_telemetry":case"agent_timeline":return!0;default:return!1}}function XT(e,t,r,o){if(o===e.length-1)return!0;let n=Math.max(o+1,t.interstitialScanEndByStreamId.get(r)??o+1);for(let i=n;i<e.length;i++)if(!YT(e[i]))return!1;return t.interstitialScanEndByStreamId.set(r,e.length),!0}function B(e){return typeof e?.promptId=="string"?e.promptId:void 0}function QT(e,t,r,o,n,i,a){let s=KT(r,o),u=t.concatByStreamId.get(s)??"",c=t.streamableIndexById.get(s),l=WT(u,n);if(c!==void 0){let m=e[c];if(m.type===r&&l&&XT(e,t,s,c))return m.text+=n,t.concatByStreamId.set(s,u+n),!m.promptId&&i&&(m.promptId=i),m.type==="reasoning"&&a!==void 0&&(m.startedAtMs===void 0&&(m.startedAtMs=a),m.endedAtMs=a),!0;if(c===e.length-1||!l)return!1}if(u&&!l)return!1;let d=t.segmentOrdinalByStreamId.get(s),f=d===void 0?0:d+1;return t.segmentOrdinalByStreamId.set(s,f),t.streamableIndexById.set(s,e.length),t.concatByStreamId.set(s,u+n),t.interstitialScanEndByStreamId.set(s,e.length+1),r==="text"?e.push({type:"text",id:My(o,f),...f>0?{streamId:o}:{},text:n,...i?{promptId:i}:{}}):e.push({type:"reasoning",id:My(o,f),...f>0?{streamId:o}:{},text:n,...i?{promptId:i}:{},...a!==void 0?{startedAtMs:a,endedAtMs:a}:{}}),!0}function eA(e,t){return{...e,...t,tool:t.tool??e.tool,summary:t.summary??e.summary,...t.promptId===void 0&&e.promptId!==void 0?{promptId:e.promptId}:{},...t.input===void 0&&e.input!==void 0?{input:e.input}:{},...t.toolStatus===void 0&&e.toolStatus!==void 0?{toolStatus:e.toolStatus}:{},...t.truncated===void 0&&e.truncated!==void 0?{truncated:e.truncated}:{},...t.inputEstimatedTokens===void 0&&e.inputEstimatedTokens!==void 0?{inputEstimatedTokens:e.inputEstimatedTokens}:{},...t.outputEstimatedTokens===void 0&&e.outputEstimatedTokens!==void 0?{outputEstimatedTokens:e.outputEstimatedTokens}:{},...t.outputChars===void 0&&e.outputChars!==void 0?{outputChars:e.outputChars}:{},...t.failure===void 0&&e.failure!==void 0?{failure:e.failure}:{},...t.duplicateCount===void 0&&e.duplicateCount!==void 0?{duplicateCount:e.duplicateCount}:{}}}function Fp(e){return e==="running"||e==="completed"||e==="error"?e:void 0}function tA(e,t){let r=Fp(t?.status);return{...e,...r?{toolStatus:r}:{},...typeof t?.outputEstimatedTokens=="number"?{outputEstimatedTokens:t.outputEstimatedTokens}:{},...typeof t?.outputChars=="number"?{outputChars:t.outputChars}:{},...L(t?.failure)?{failure:t.failure}:{},...typeof t?.truncated=="boolean"?{truncated:t.truncated}:{}}}function nA(){return{merged:[],streams:HT(),toolCallIndexById:new Map,agentProgressIndexByKey:new Map,questionIndexById:new Map,narrationIndex:null,malformedSearchBlockedPromptIds:new Set,malformedSearchBlockedWithoutPrompt:!1}}function rA(e){return typeof e=="string"&&e.includes(jT)}function iA(e){return MT.test(e)}function oA(e){return e.malformedSearchBlockedPromptIds.size===0&&!e.malformedSearchBlockedWithoutPrompt?e.merged:e.merged.filter(t=>t.type!=="text"?!0:!((t.promptId?e.malformedSearchBlockedPromptIds.has(t.promptId):e.malformedSearchBlockedWithoutPrompt)&&iA(t.text)))}function De(e,t){t&&e.merged.push(t)}function aA(e,t){return{type:"compaction_start",id:`cs-${e?.timestamp??t}`,...B(e)?{promptId:B(e)}:{},...typeof e?.contextTokens=="number"?{contextTokens:e.contextTokens}:{}}}function sA(e,t){return{type:"compaction_complete",id:`cc-${e?.timestamp??t}`,...B(e)?{promptId:B(e)}:{},...typeof e?.contextTokensBefore=="number"?{contextTokensBefore:e.contextTokensBefore}:{},...typeof e?.contextTokensAfter=="number"?{contextTokensAfter:e.contextTokensAfter}:{}}}function uA(e,t){return{type:"context_fill_warning",id:`cfw-${e?.timestamp??t}`,...B(e)?{promptId:B(e)}:{},fillPercent:typeof e?.fillPercent=="number"?e.fillPercent:Number(e?.fillPercent??0),...typeof e?.contextTokens=="number"?{contextTokens:e.contextTokens}:{},...typeof e?.contextWindow=="number"?{contextWindow:e.contextWindow}:{}}}function cA(e,t){return{type:"tool_truncated",id:typeof e?.callId=="string"?e.callId:String(t),tool:typeof e?.tool=="string"?e.tool:"",...e?.reason==="truncation_marker"||e?.reason==="size_threshold"?{reason:e.reason}:{},...B(e)?{promptId:B(e)}:{}}}function lA(e,t){return{type:"retry_status",id:`rs-${e?.timestamp??t}`,...B(e)?{promptId:B(e)}:{},attempt:typeof e?.attempt=="number"?e.attempt:Number(e?.attempt??0),message:typeof e?.message=="string"?e.message:"Retrying...",...typeof e?.nextRetryAt=="string"?{nextRetryAt:e.nextRetryAt}:{},...typeof e?.provider=="string"?{provider:e.provider}:{},...typeof e?.errorCode=="string"?{errorCode:e.errorCode}:{},...typeof e?.scope=="string"?{scope:e.scope}:{},...typeof e?.maxAttempts=="number"?{maxAttempts:e.maxAttempts}:{},...typeof e?.reason=="string"?{reason:e.reason}:{},...typeof e?.retryAfterMs=="number"?{retryAfterMs:e.retryAfterMs}:{},...typeof e?.fallbackModel=="string"?{fallbackModel:e.fallbackModel}:{}}}function dA(e){return e==="spawn_provider_error"?{message:"Sandbox failed to start; retrying on a fresh sandbox",scope:"sandbox_spawn"}:e==="spawn_deadline_no_object"||e==="spawn_deadline_no_bridge"||e==="spawn_timeout"?{message:"Sandbox did not start in time; retrying on a fresh sandbox",scope:"sandbox_spawn"}:{message:"Sandbox dropped mid-task; retrying on a fresh sandbox",scope:"sandbox_disconnect"}}function pA(e,t){let r=typeof e?.attempt=="number"?e.attempt:Number(e?.attempt??0),o=typeof e?.cap=="number"?e.cap:void 0,n=typeof e?.retryPromptId=="string"?e.retryPromptId:B(e),i=typeof e?.reason=="string"?e.reason:void 0,{message:a,scope:s}=dA(i);return{type:"retry_status",id:`pr-retry-${n??t}`,...n?{promptId:n}:{},attempt:r,message:a,scope:s,...o!==void 0?{maxAttempts:o}:{},...i?{reason:i}:{}}}function mA(e,t){let r=typeof e?.eventName=="string"?e.eventName:jp;return{type:jp,id:`zeus-tel-${e?.timestamp??t}-${r}`,eventName:r,...B(e)?{promptId:B(e)}:{}}}function fA(e,t){return{type:"agent_timeline",id:`atl-${t}-${typeof e?.eventType=="string"?e.eventType:"unknown"}`,eventType:typeof e?.eventType=="string"?e.eventType:"unknown",source:typeof e?.source=="string"?e.source:"observed",observer:typeof e?.observer=="string"?e.observer:"unknown",summary:typeof e?.summary=="string"?e.summary:"Observed agent timeline event.",...typeof e?.status=="string"?{status:e.status}:{},...L(e?.metadata)?{metadata:e.metadata}:{},...B(e)?{promptId:B(e)}:{}}}function gA(e,t){let r=B(e);return{type:"agent_progress",id:Mt(e,"ap",t),step:typeof e?.step=="string"?e.step:"unknown",label:typeof e?.label=="string"?e.label:"Working",terminal:e?.terminal===!0,...r?{promptId:r}:{}}}function hA(e,t){let r=gA(e,t.merged.length),o=`${r.promptId??""}\0${r.step}`,n=t.agentProgressIndexByKey.get(o);if(n!==void 0){let i=t.merged[n];t.merged[n]=i.type==="agent_progress"?{...r,id:i.id}:r;return}t.agentProgressIndexByKey.set(o,t.merged.length),t.merged.push(r)}function vA(e,t){return{type:"session_error",id:Mt(e,"err",t),error:typeof e?.error=="string"?e.error:"Unknown error",...B(e)?{promptId:B(e)}:{},...typeof e?.code=="string"?{code:e.code}:{},...typeof e?.command=="string"?{command:e.command}:{}}}function _A(e,t){if(e?.code!=="malformed_search_command"&&!rA(e?.error))return;let r=B(e);r?t.malformedSearchBlockedPromptIds.add(r):t.malformedSearchBlockedWithoutPrompt=!0}function yA(e,t){return{type:"session_resumed_cold",id:Mt(e,"rescold",t),...typeof e?.reason=="string"?{reason:e.reason}:{},...typeof e?.lostSnapshotImageId=="string"?{lostSnapshotImageId:e.lostSnapshotImageId}:e?.lostSnapshotImageId===null?{lostSnapshotImageId:null}:{},...B(e)?{promptId:B(e)}:{}}}function bA(e,t){let r=typeof e?.partType=="string"?e.partType:void 0,o=typeof e?.eventType=="string"?e.eventType:void 0;return r==="text"||o&&FT.has(o)?null:{type:"raw_agent_runtime",id:Mt(e,"raw",t),...B(e)?{promptId:B(e)}:{},...r?{partType:r}:{},...o?{eventType:o}:{},data:e??{}}}function SA(e,t){let r=Array.isArray(e?.files)?e.files.filter(o=>typeof o=="string"):[];return r.length===0?null:{type:"patch",id:`patch-${t}`,files:r,...B(e)?{promptId:B(e)}:{}}}function Zy(e,t,r,o){QT(r.merged,r.streams,e,Mt(t,e,r.merged.length),JT(t),B(t),o)}function wA(e,t){let r=Mt(e,"tool",t.merged.length),o=t.toolCallIndexById.get(r);if(o!==void 0){let n=t.merged[o];if(n.type==="tool_call"){let i=Fp(e?.toolStatus),a=L(e?.input)?e.input:void 0,s={type:"tool_call",id:r,...typeof e?.tool=="string"?{tool:e.tool}:typeof e?.toolName=="string"?{tool:e.toolName}:{},...typeof e?.summary=="string"&&e.summary.length>0?{summary:e.summary}:{},...B(e)?{promptId:B(e)}:{},...a&&Object.keys(a).length>0?{input:a}:{},...i?{toolStatus:i}:{},...typeof e?.truncated=="boolean"?{truncated:e.truncated}:{},...typeof e?.inputEstimatedTokens=="number"?{inputEstimatedTokens:e.inputEstimatedTokens}:{},...typeof e?.outputEstimatedTokens=="number"?{outputEstimatedTokens:e.outputEstimatedTokens}:{},...typeof e?.outputChars=="number"?{outputChars:e.outputChars}:{},...L(e?.failure)?{failure:e.failure}:{}};t.merged[o]=eA(n,s)}}else{let n=Fp(e?.toolStatus),i={type:"tool_call",id:r,tool:typeof e?.tool=="string"?e.tool:typeof e?.toolName=="string"?e.toolName:"unknown",summary:typeof e?.summary=="string"?e.summary:"",...B(e)?{promptId:B(e)}:{},...L(e?.input)?{input:e.input}:{},...n?{toolStatus:n}:{},...typeof e?.truncated=="boolean"?{truncated:e.truncated}:{},...typeof e?.inputEstimatedTokens=="number"?{inputEstimatedTokens:e.inputEstimatedTokens}:{},...typeof e?.outputEstimatedTokens=="number"?{outputEstimatedTokens:e.outputEstimatedTokens}:{},...typeof e?.outputChars=="number"?{outputChars:e.outputChars}:{},...L(e?.failure)?{failure:e.failure}:{}};t.toolCallIndexById.set(r,t.merged.length),t.merged.push(i)}}function xA(e,t){let r=typeof e?.id=="string"?e.id:"",o=t.toolCallIndexById.get(r);if(o===void 0)return;let n=t.merged[o];n.type==="tool_call"&&(t.merged[o]=tA(n,e))}function $A(e,t){let r={type:"question",id:Mt(e,"question",t.merged.length),question:typeof e?.question=="string"?e.question:"",answer:e?.answer==null?null:String(e.answer),...B(e)?{promptId:B(e)}:{},...Array.isArray(e?.options)?{options:e.options}:{}};t.questionIndexById.set(r.id,t.merged.length),t.merged.push(r)}function IA(e,t){let r=typeof e?.id=="string"?e.id:void 0;if(!r)return;let o=t.questionIndexById.get(r);if(o===void 0)return;let n=t.merged[o];n?.type==="question"&&(t.merged[o]={...n,answer:e?.answer==null?null:String(e.answer)})}function EA(e,t){let r=Array.isArray(e?.todos)?e.todos:[];if(r.length!==0)for(let o=t.merged.length-1;o>=0;o--){let n=t.merged[o];if(n.type==="tool_call"&&n.tool.toLowerCase()==="todowrite"){t.merged[o]={...n,input:{...n.input,todos:r}};break}}}function kA(e,t){let r=Uy(e);if(!r)return;let o=B(e);t.merged.push({type:"onboarding_status",id:`onboarding_status:${t.merged.length}`,stage:r.stage,status:r.status,...r.detail?{detail:r.detail}:{},...o?{promptId:o}:{}})}function TA(e,t){let r=typeof e?.text=="string"?e.text.trim():"";if(!r)return;let o=B(e),n={type:"narration",id:"narration",text:r,...o?{promptId:o}:{}};t.narrationIndex===null?(t.narrationIndex=t.merged.length,t.merged.push(n)):t.merged[t.narrationIndex]=n}function Wy(e){let t=nA();for(let r of e){let o=qy(r),{type:n}=o,i=o.data;switch(n){case"sandbox_compaction_start":De(t,aA(i,t.merged.length));break;case"sandbox_compaction_complete":De(t,sA(i,t.merged.length));break;case"sandbox_context_fill_warning":De(t,uA(i,t.merged.length));break;case"sandbox_tool_truncated":De(t,cA(i,t.merged.length));break;case"retry_status":De(t,lA(i,t.merged.length));break;case"prompt_retrying":De(t,pA(i,t.merged.length));break;case"zeus_telemetry":De(t,mA(i,t.merged.length));break;case"agent_timeline":De(t,fA(i,t.merged.length));break;case"prompt_activity":break;case"agent_progress":hA(i,t);break;case"session_error":_A(i,t),De(t,vA(i,t.merged.length));break;case"session_resumed_cold":De(t,yA(i,t.merged.length));break;case"raw_agent_runtime":De(t,bA(i,t.merged.length));break;case"reasoning":Zy("reasoning",i,t,qT(o.raw));break;case"text":Zy("text",i,t);break;case"patch":De(t,SA(i,t.merged.length));break;case"todo_update":EA(i,t);break;case"answer":IA(i,t);break;case"tool_call":wA(i,t);break;case"tool_update":xA(i,t);break;case"question":$A(i,t);break;case"narration":TA(i,t);break;case"onboarding_status":kA(i,t);break}}return oA(t)}function Hy(e,t){let r=new Set(t),o=new Map(t.map(i=>[i,[]])),n=null;for(let i of e){let a=Yr(i),s=typeof a=="string"&&r.has(a)?a:null;On(i)==="prompt_processing"&&(n=s);let u=s??n;if(u){let c=o.get(u);c&&c.push(i)}}return o}function AA(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(r.type!=="prompt_completed"&&r.type!=="prompt_failed")continue;let o=r.data?.history;return!Array.isArray(o)||o.length===0?null:o}return null}function Fy(e){let t=e.data;return[e.promptId??"",typeof t?.phase=="string"?t.phase:"",typeof t?.detail=="string"?t.detail:""].join("\0")}function By(e){let t=e.data;return[e.promptId??"",typeof t?.step=="string"?t.step:""].join("\0")}function Ky(e){let t=jy(e),r=AA(t),o=t.filter($=>$.type==="prompt_activity"),n=t.filter($=>$.type==="agent_progress");if(!r)return{events:e,diagnostics:{embeddedHistoryPresent:!1,durablePromptActivityCount:o.length,embeddedPromptActivityCount:0,mergedDurablePromptActivityCount:0,duplicateDurablePromptActivityCount:0,durableAgentProgressCount:n.length,embeddedAgentProgressCount:0,mergedDurableAgentProgressCount:0,duplicateDurableAgentProgressCount:0}};let i=jy(r),a=i.filter($=>$.type==="prompt_activity"),s=i.filter($=>$.type==="agent_progress"),u=new Set(a.map(Fy)),c=new Set(s.map(By)),l=a.length,d=s.length,f=0,m=0,g=o.filter($=>{let I=Fy($);return u.has(I)?(f+=1,!1):(u.add(I),!0)}),h=n.filter($=>{let I=By($);return c.has(I)?(m+=1,!1):(c.add(I),!0)}),b=[...g,...h].map($=>$.raw);return{events:b.length>0?[...b,...r]:r,diagnostics:{embeddedHistoryPresent:!0,durablePromptActivityCount:o.length,embeddedPromptActivityCount:l,mergedDurablePromptActivityCount:g.length,duplicateDurablePromptActivityCount:f,durableAgentProgressCount:n.length,embeddedAgentProgressCount:d,mergedDurableAgentProgressCount:h.length,duplicateDurableAgentProgressCount:m}}}var Jy=1e3;async function Yy(e,t,r,o){let n=[],i=r,a=null,s=0;do{if(s+=1,t&&s>Jy)throw new y("user",`${e} exceeded ${Jy} pages without reaching the end.`);let u=await o(i);n.push(...u.items),a=u.nextCursor,i=a??void 0}while(t&&a);return{items:n,nextCursor:t?null:a}}function Ra(e){return typeof e=="object"&&e!==null&&"noChanges"in e&&e.noChanges===!0}function Ca(e){switch(e){case"no_diff":return{state:"no_changes",tone:"info",title:"Completed without code changes.",detail:null};case"no_staged_files":return{state:"no_changes",tone:"info",title:"Completed without publishable code changes.",detail:null};case"prep_failed":return{state:"no_change_abnormal",tone:"error",title:"Finalization failed before changes could be prepared.",detail:null};case"post_prep_failed":return{state:"no_change_abnormal",tone:"error",title:"Finalization failed after changes were prepared.",detail:null};default:return{state:"no_change_abnormal",tone:"error",title:"Completed without code changes, but finalization did not report a clean no-op reason.",detail:null}}}var PA="## Previously declined findings on this repository (calibration)",RA="## Findings already reported by other reviewers",CA="## Graphite stack neighbours",Xy=[PA,RA,CA,"## Independent review suggestions"];var OA=/<(user_content|instruction_content)\b[^>]*>[\s\S]*?<\/\1>/gi,NA=[/^IMPORTANT: The content above is /i,/^Previous Slack message\b/i,/^Current Slack message author:/i,/^Current Slack channel:/i,/^Thread context(?:\s*\([^)]*\))?\s*[.:]/i,/^Repository:\s+\S+$/i,/^Issue (?:title|body|description|metadata)\s*:/i,/^Triggering comment\s*:/i,/^Review body\s*:/i,/^Recent comments\s*:/i,/^<\/?(?:user_content|instruction_content)\b/i],DA=[/<\/?(?:user_content|instruction_content)\b/i,/^IMPORTANT: The content above is /im,/^Previous Slack message\b/im,/^Current Slack message author:/im,/^Current Slack channel:/im,/^Repository:\s+\S+$/im],zA=/^Review pull request \S+ at (?:its current head|admitted head \S+ against admitted base \S+)\./;function UA(e){let t=e.split(/\r?\n/),r=[],o=[];if(t.forEach((a,s)=>{let u=Xy.findIndex(c=>a.trim()===c);u!==-1&&(r.push(u),o.push(s))}),o.length===0||!r.every((a,s)=>s===0||a>(r[s-1]??-1)))return e.trim();let i=o[0]??0;return t.slice(0,i).join(`
|
|
93
93
|
`).trim()}function Qy(e){return DA.some(t=>t.test(e))}function LA(e){return e.replace(OA,"").split(/\r?\n/).filter(o=>!NA.some(n=>n.test(o.trim()))).join(`
|
|
94
94
|
`).replace(/\n{3,}/g,`
|
|
@@ -172,10 +172,12 @@ written to your default ~/.codex.
|
|
|
172
172
|
Examples:
|
|
173
173
|
arcanist codex login
|
|
174
174
|
arcanist codex login --codex-path /usr/local/bin/codex
|
|
175
|
-
`).action((e,t)=>Bv(e,t));Qp.command("use <state>").description("Turn using your saved Codex subscription auth for OpenAI sessions on or off (state: on|off)").action((e,t,r)=>Vv(e,t,r));Qp.command("status").description("Show Codex subscription availability and whether auth is saved").action((e,t)=>Gv(e,t));var Nn=le.command("sessions").description("Session commands"),Dn=le.command("reviews").description("Read review results and manage QA recovery probes");Dn.command("recovery-probe").description("Arm, inspect, or clear finite faults on your disposable QA review").argument("<request-id>","Admitted QA review request ID").option("--fault <fault>","planner-receipt, scouts-receipt, generation-retries, or publication-effects").option("--clear","Remove the fault control after evidence capture").addHelpText("after",`
|
|
175
|
+
`).action((e,t)=>Bv(e,t));Qp.command("use <state>").description("Turn using your saved Codex subscription auth for OpenAI sessions on or off (state: on|off)").action((e,t,r)=>Vv(e,t,r));Qp.command("status").description("Show Codex subscription availability and whether auth is saved").action((e,t)=>Gv(e,t));var Nn=le.command("sessions").description("Session commands"),Dn=le.command("reviews").description("Read review results and manage QA recovery probes");Dn.command("recovery-probe").description("Arm, inspect, or clear finite faults on your disposable QA review").argument("<request-id>","Admitted QA review request ID").option("--fault <fault>","planner-receipt, scouts-receipt, generation-retries, generation-exhaustion, or publication-effects").option("--clear","Remove the fault control after evidence capture").option("--sweep","Run one deferred publication-projection pass for the fixture now").addHelpText("after",`
|
|
176
176
|
QA only. Requires your first active review of an open [TESTING] PR on a prod-qa branch in tryarcanist/arcanist.
|
|
177
177
|
No fault flag reads receipts. Receipt faults fail once after a durable stage write.
|
|
178
|
-
Generation
|
|
178
|
+
Generation-retries fails one attempt fewer than the generation limit so the next attempt recovers; generation-exhaustion fails every attempt in the limit so the request blocks. Publication faults fail one more attempt than the existing retry limit, then stop.
|
|
179
|
+
--sweep runs a deferred publication effect immediately instead of waiting for the five-minute sweep;
|
|
180
|
+
repeat it until the publication-effects fault exhausts and the projection completes.
|
|
179
181
|
This command does not start a review, replace a sandbox, or prove recovery by itself.
|
|
180
182
|
Save the receipts and verify the final request/head publication before --clear and fixture cleanup.
|
|
181
183
|
`).action((e,t,r)=>fy(e,t,r));Dn.command("export-traces").description("Export production planner archives, question links, and checksums (internal)").requiredOption("--spans <file>","Archived span JSONL for the export window").option("--eval-dir <directory>","Optional private eval checkout for local holdout filtering; otherwise the consumer owns the split").requiredOption("--out <directory>","New output directory").action((e,t)=>wb(e,t));Dn.command("compare").description("Compare automatic QA Arcanist and Macroscope latency on the same trigger and head (Arcanist members only)").argument("<pr-url>","Internal GitHub PR URL").requiredOption("--head <sha>","Exact reviewed head SHA").action((e,t,r)=>ly(e,t,r));Dn.command("traces").description("List full planner trace parts or download observed events (Arcanist members only)").argument("<session-id>","Review session ID").argument("[trace-id]","Trace ID from fullTraceId metadata or the index").option("--out <file.jsonl>","Create a private JSONL file; fails if the file exists or the archive is incomplete").action((e,t,r,o)=>my(e,t,r,o));Dn.command("get").description("Read a PR request result and lifecycle snapshot without a new review").argument("<request-id>","PR review request ID, not a local review request ID").addHelpText("after",`
|