agent-log-viewer 0.11.2 → 0.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/bin/cli.mjs +69 -1
  2. package/dist/standalone/.next/BUILD_ID +1 -1
  3. package/dist/standalone/.next/app-path-routes-manifest.json +10 -10
  4. package/dist/standalone/.next/build-manifest.json +2 -2
  5. package/dist/standalone/.next/prerender-manifest.json +3 -3
  6. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  7. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  8. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  9. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  11. package/dist/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  12. package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  17. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  18. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  19. package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  21. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/dist/standalone/.next/server/app/api/spawn/route.js +1 -1
  25. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +1 -1
  26. package/dist/standalone/.next/server/app/index.html +1 -1
  27. package/dist/standalone/.next/server/app/index.rsc +3 -3
  28. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  29. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  30. package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  31. package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  32. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  33. package/dist/standalone/.next/server/app/page.js +2 -2
  34. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  35. package/dist/standalone/.next/server/app-paths-manifest.json +10 -10
  36. package/dist/standalone/.next/server/chunks/747.js +2 -2
  37. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  38. package/dist/standalone/.next/server/pages/404.html +1 -1
  39. package/dist/standalone/.next/server/pages/500.html +1 -1
  40. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  41. package/dist/standalone/.next/static/chunks/app/page-512e817b98392d9b.js +2 -0
  42. package/dist/standalone/.next/static/css/f00940d29be5c41d.css +1 -0
  43. package/dist/standalone/package.json +1 -1
  44. package/package.json +1 -1
  45. package/dist/standalone/.next/static/chunks/app/page-8dd7985233195e0f.js +0 -2
  46. package/dist/standalone/.next/static/css/b6e77f3e265051b8.css +0 -1
  47. /package/dist/standalone/.next/static/{C3PJDP4xT_PUWZyLdnIfT → CzkCiRF6QqyxONEjepeCl}/_buildManifest.js +0 -0
  48. /package/dist/standalone/.next/static/{C3PJDP4xT_PUWZyLdnIfT → CzkCiRF6QqyxONEjepeCl}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
1
  "use strict";exports.id=747,exports.ids=[747],exports.modules={1785:(a,b,c)=>{c.d(b,{AB:()=>k,F5:()=>l,Ku:()=>q,LJ:()=>m,X$:()=>o,m3:()=>n,yv:()=>p});var d=c(14509),e=c(16462),f=c(89333),g=c(27359),h=c(64747);function i(a,b=500){return{error:a instanceof Error?a.message:String(a),status:b}}async function j(a){return(await (0,h.aI)()).has(a)?(0,h.u1)(a):"unknown"}async function k(a){let b=(await (0,e.C)()).find(b=>b.path===a);if(b&&null!==b.pid){let a=await (0,h.u1)(b.pid);if(null!==a)return a}let c=await (0,h.mB)(a);return c?c.display:null}async function l(a){if(!a||!(0,f.EG)(a))return{error:"the conversation path is required to interrupt",status:400};let b=await k(a);if(null===b)return{error:"no active agent pane to interrupt",status:409};try{return await (0,h.EW)(b),{ok:!0,target:b}}catch(a){return i(a)}}async function m(a){if(!a||!(0,f.EG)(a))return{error:"the conversation path is required to compact",status:400};let b=await k(a);if(null===b)return{error:"no active agent pane to compact",status:409};try{return await (0,h.oF)(b,"/compact"),{ok:!0,target:b}}catch(a){return i(a)}}async function n(a,b,c,d){if(!a||!(0,f.EG)(a))return{error:"the conversation path is required to answer",status:400};if(!/^([1-9]|Tab|Enter|Escape)$/.test(b))return{error:"invalid key",status:400};let e=await k(a);if(null===e)return{error:"no active agent pane",status:409};try{let a=await (0,h.WS)(e,async()=>{let a=function(a,b,c,d){if(null!==(0,g._1)(a))return"blocked";if(!(0,g.cZ)(a))return"closed";let e=(0,g.fm)(a);if(/^[1-9]$/.test(b)){let a=e?.options.find(a=>String(a.value)===b);if(!a||"string"==typeof c&&c!==a.label||"string"==typeof d&&d!==e?.question)return"changed"}else if(e&&"string"==typeof d&&d!==e.question)return"changed";return null}(await (0,h.ZB)(e),b,c,d);return null===a&&await (0,h.V1)(e,[b]),a});if("blocked"===a)return{error:"pane is waiting for a confirmation that requires a manual decision",status:409};if("closed"===a)return{error:"pane is no longer waiting for a response",status:409};if("changed"===a)return{error:"the on-screen menu has changed",status:409};return{ok:!0,target:e}}catch(a){return i(a)}}async function o(a){if(!a||!(0,f.EG)(a))return{error:"the conversation path is required to open",status:400};let b=(await (0,e.C)()).find(b=>b.path===a);if(!b)return{error:"file is unknown to the viewer",status:403};let c=(0,d.A9)(b.root,b.path);if(!c)return{error:"this conversation cannot be resumed",status:409};try{let a=await (0,h.KY)(b.path,c,"");return{ok:!0,target:a.target,spawned:a.spawned}}catch(a){return i(a)}}async function p(a){if(!a||!(0,f.EG)(a))return{error:"the conversation path is required to close",status:400};let b=(await (0,e.C)()).find(b=>b.path===a);if(b&&b.parent)return{ok:!0,target:""};let c=await k(a);if(null===c)return{ok:!0,target:""};try{return await (0,h.VT)(c),(0,h.HZ)(a),{ok:!0,target:c}}catch(a){return i(a)}}async function q(a){let{pid:b,path:c,images:g}=a,k=a.text.trim(),l=null;if(null!==b){let a=await j(b);if("unknown"===a&&!c)return{error:"process is unknown to the viewer",status:403};l="unknown"===a?null:a}let m=[];try{if(null!==l){let a=(0,h.Am)(k,g);return m=a.imagePaths,await (0,h.oF)(l,a.payload),{ok:!0,target:l,...m.length?{imagePaths:m}:{}}}if(!c||!(0,f.EG)(c))return{error:"process is not in a tmux session",status:409};let a=await (0,e.C)(),b=a.find(a=>a.path===c);if(!b)return{error:"file is unknown to the viewer",status:403};let i=(0,d.A9)(b.root,b.path);if(i){let a=(0,h.Am)(k,g);m=a.imagePaths;let c=await (0,h.KY)(b.path,i,a.payload);return{ok:!0,target:c.target,spawned:c.spawned,...m.length?{imagePaths:m}:{}}}let j=new Map(a.map(a=>[a.path,a])),n=new Set,o=b;for(;o.parent&&j.has(o.parent)&&!n.has(o.path);)n.add(o.path),o=j.get(o.parent);if(o.path===b.path)return{error:"this conversation cannot be resumed",status:409};let p=null!==o.pid?await (0,h.u1)(o.pid):null,q=null===p?(0,d.A9)(o.root,o.path):null;if(null===p&&!q)return{error:"root session is unavailable for messaging",status:409};let r=(0,h.Am)(k,g);m=r.imagePaths;let s=`User message for your branch \xab${b.title.slice(0,100)}\xbb — forward it or handle it yourself:
2
- ${r.payload}`,t=m.length?{imagePaths:m}:{};if(null!==p)return await (0,h.oF)(p,s),{ok:!0,target:p,...t};let u=await (0,h.KY)(o.path,q,s);return{ok:!0,target:u.target,spawned:u.spawned,...t}}catch(a){return(0,h.IJ)(m),i(a)}}},3249:(a,b,c)=>{c.d(b,{Ec:()=>t,Hw:()=>w,iq:()=>z,w1:()=>H,xz:()=>x,zn:()=>F});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(14509),i=c(16089),j=c(64747),k=c(51906),l=c(25750),m=c(59680),n=c(98590);let o=new Set(["approved","done_comment","needs_decision","closed"]),p=/^REVIEW_READY:\s*(.*)$/m,q=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,r=globalThis,s=new Set;function t(){return new Date().toISOString()}function u(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function v(a){return a.map(a=>({...a,roles:{implementer:{...a.roles.implementer},reviewer:{...a.roles.reviewer}},rounds:a.rounds.map(a=>({...a}))}))}function w(a){return a.rounds.at(-1)??null}function x(a,b,c){return{n:a.rounds.length+1,reviewerPath:null,sessionId:null,reviewerPane:null,findingsPath:null,triggeredBy:b,readyNote:c,verdict:null,findingsCount:null,startedAt:t(),spawnStartedAt:null,relayStartedAt:null,reviewedAt:null,relayedAt:null,error:null}}function y(a,b){a.state="needs_decision",a.stateDetail=b}async function z(a,b,c){let d=b.get(a.implementerPath);if(!d)throw Error("implementer transcript is missing from scanner");if(null!==d.pid){let a=await (0,j.u1)(d.pid);if(a)return void await (0,j.oF)(a,c)}let e=(0,h.A9)(d.root,d.path);if(!e)throw Error("implementer session cannot be resumed");await (0,j.KY)(d.path,e,c)}function A(a,b,c){if(c.reviewerPath)return!1;let d=u(c.startedAt)/1e3-5,e=a.roles.reviewer.engine,f=b.filter(b=>b.engine===e&&b.path!==a.implementerPath&&b.mtime>=d&&(0,i.tX)(b.path)===a.cwd).sort((a,b)=>b.mtime-a.mtime)[0];return!!f&&(c.reviewerPath=f.path,!0)}function B(a,b,c){let d=b.findingsPath??(0,n.tR)(a.id,b.n);(0,n.Yj)(d,c.content),b.findingsPath=d,b.verdict=c.verdict,b.findingsCount=c.findingsCount,b.reviewedAt=t(),"manual"===a.mode?a.state="relay_pending":a.state="relaying",a.stateDetail=null}async function C(a,b){let c=(0,m.qu)(a,b);if(a.state="reviewing",a.stateDetail=null,"pane"===a.reviewerMode){let d=(0,h.lV)(a.roles.reviewer.engine,a.cwd,{model:a.roles.reviewer.model,effort:a.roles.reviewer.effort,readOnly:!0}),e=await (0,j.Tk)(d,c);b.reviewerPane={paneId:e.paneId,windowName:d.windowName},d.transcript&&(b.reviewerPath=d.transcript),!b.reviewerPath&&e.panePid&&(b.error=null);return}let d=(0,k.gn)(a.id,b.n,a.roles.reviewer,a.cwd,c);d.pid&&(b.reviewerPid=d.pid),d.sessionId&&(b.sessionId=d.sessionId),d.reviewerPath&&(b.reviewerPath=d.reviewerPath)}async function D(a,b,c){if(!c.findingsPath)throw Error("round has no findings artifact");let d=e().readFileSync(c.findingsPath,"utf8");a.state="relaying",await z(a,b,(0,m.i0)(c,d)),c.relayedAt=t(),"APPROVE"===c.verdict?(a.state="approved",a.closedAt=t()):"COMMENT"===c.verdict?a.state="done_comment":a.roundLimit>0&&a.rounds.length>=a.roundLimit?y(a,"round limit reached"):(a.state="fixing",a.stateDetail=null)}async function E(a,b,c,d){var e;let f=JSON.stringify(a);if("closed"===a.state||"paused"===a.state)return!1;let h=c.get(a.implementerPath);if(!h){let b=a.state;return a.state="paused",a.pausedState=b,a.stateDetail="implementer transcript is missing",JSON.stringify(a)!==f}if("waiting_ready"===a.state||"fixing"===a.state){let b=function(a,b){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let c=(0,l.if)(b);if(!c)return null;let d=Math.max(...a.rounds.map(a=>u(a.startedAt)),u(a.createdAt));return c.ts<=d?null:c.text.match(p)?.[1]?.trim()??null}(a,h);return null!==b&&(a.rounds.push(x(a,"marker",b)),a.state="manual"===a.mode?"spawn_pending":"spawning",a.stateDetail=null),JSON.stringify(a)!==f}let i=w(a);if(!i)return JSON.stringify(a)!==f;if("spawning"===a.state){let b=(0,k.IL)(a.id,i.n,i,a.roles.reviewer.engine);if(i.spawnStartedAt&&"headless"===a.reviewerMode&&b)return a.state="reviewing",a.stateDetail=null,JSON.stringify(a)!==f;if(i.spawnStartedAt&&!b&&null===i.reviewerPath)return y(a,"reviewer spawn was interrupted by a restart"),JSON.stringify(a)!==f;try{i.spawnStartedAt=t(),d(),await C(a,i)}catch(b){i.error=b instanceof Error?b.message:String(b),y(a,i.error)}return JSON.stringify(a)!==f}if("reviewing"===a.state){let d=(0,l.V_)(i);if(d)return B(a,i,d),JSON.stringify(a)!==f;if("headless"===a.reviewerMode){let d,h=(0,k.IL)(a.id,i.n,i,a.roles.reviewer.engine);if(i.sessionId||(i.sessionId=h?.sessionId??(e=h?.stdout??"",(d=e.match(/session id:?\s*([0-9a-f-]{36})/i)?.[1])&&q.test(d)?d:e.split("\n").slice(0,40).join("\n").match(q)?.[0]??null)),!function(a,b,c){if(b.reviewerPath||!c)return;let d=a.find(a=>g().basename(a.path).includes(c));d&&(b.reviewerPath=d.path)}(b,i,i.sessionId??null),i.reviewerPath||i.sessionId||A(a,b,i),h?.status==="running")return JSON.stringify(a)!==f;if(h){(0,k.T)(a.id,i.n,i.reviewerPid??null);let b=(0,l.Sn)(h.finalOutput);if(b)B(a,i,b);else{let b=i.findingsPath??(0,n.tR)(a.id,i.n);(0,n.Yj)(b,h.finalOutput||h.stdout||h.stderr),i.findingsPath=b,i.error="timeout"===h.status?"reviewer timed out":h.stderr.trim()||"reviewer verdict was unparseable",y(a,i.error)}return JSON.stringify(a)!==f}let j=(0,l.J8)(i,c);return j?B(a,i,j):y(a,"reviewer process is missing after server restart"),JSON.stringify(a)!==f}if(A(a,b,i),i.reviewerPath){let b=c.get(i.reviewerPath),d=(0,l.J8)(i,c);d?B(a,i,d):b&&"live"!==b.activity&&"stalled"!==b.activity&&y(a,"reviewer verdict was unparseable")}return JSON.stringify(a)!==f}if("relaying"===a.state){let b=`${a.id}:${i.n}`;if(i.relayStartedAt&&null===i.relayedAt&&!s.has(b))return y(a,"relay was interrupted; it may have been delivered twice"),JSON.stringify(a)!==f;try{i.relayStartedAt=t(),s.add(b),d(),await D(a,c,i)}catch(b){i.error=b instanceof Error?b.message:String(b),a.state="paused",a.pausedState="relaying",a.stateDetail=i.error}}return JSON.stringify(a)!==f}async function F(a){if(r.__llvFlowTick){let b=v((0,n.mL)());return G(a,b),{flows:b,changed:!1}}r.__llvFlowTick=!0;let b=v((0,n.mL)());try{let c=new Map(a.map(a=>[a.path,a])),d=!1;for(let e of b)!o.has(e.state)&&(await E(e,a,c,()=>(0,n.tu)(b))&&(d=!0),d&&(0,n.tu)(b));return G(a,b),d&&(0,n.tu)(b),{flows:b,changed:d}}finally{r.__llvFlowTick=!1}}function G(a,b){for(let b of a)delete b.flow;let c=new Map(a.map(a=>[a.path,a]));for(let a of b){let b=c.get(a.implementerPath);for(let d of(b&&(b.flow={flowId:a.id,flowRole:"implementer",round:null}),a.rounds)){if(!d.reviewerPath)continue;let b=c.get(d.reviewerPath);b&&(b.flow={flowId:a.id,flowRole:"reviewer",round:d.n})}}}function H(){return{flows:(0,n.mL)(),presets:(0,n.Vd)()}}},14289:(a,b,c)=>{c.d(b,{Z:()=>i,j:()=>f});var d=c(76760),e=c.n(d);let f=(0,c(91724).oy)(),g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"},h=/^[A-Za-z0-9._-]+\.(png|jpe?g|gif|webp)$/i;function i(a){let b=a.match(h);if(!b||e().basename(a)!==a)return null;let c=g[(b[1]??"").toLowerCase()];return c?{path:e().join(f,a),mime:c}:null}},14509:(a,b,c)=>{c.d(b,{A9:()=>p,lV:()=>o,uX:()=>m});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j),l=c(16089);function m(a){let b=i().homedir();if("1"===process.env.LLV_DOCKER_NSENTER_SHIMS&&("claude"===a||"codex"===a)){let b="/usr/local/bin/"+a;try{return g().accessSync(b,g().constants.X_OK),b}catch{}}for(let c of[k().join(b,".bun","bin",a),k().join(b,".npm-global","bin",a),k().join(b,".local","bin",a),k().join(b,"go","bin",a),"/usr/local/bin/"+a,"/usr/bin/"+a])try{return g().accessSync(c,g().constants.X_OK),c}catch{}return a}function n(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function o(a,b,c={}){if("claude"===a){let a=e().randomUUID(),d=[m("claude")];return c.readOnly?d.push("--permission-mode","plan","--disallowedTools","Edit,Write,NotebookEdit"):d.push("--dangerously-skip-permissions"),d.push("--session-id",a),c.model&&d.push("--model",c.model),c.effort&&d.push("--effort",c.effort),{command:d.map(n).join(" "),cwd:b,windowName:"claude-new",transcript:(0,l.eV)(b,a)}}let d=[m("codex")];return c.model&&d.push("-m",c.model),c.effort&&d.push("-c",`model_reasoning_effort=${c.effort}`),null!=c.fast&&d.push("-c",`service_tier=${c.fast?"priority":"standard"}`),c.readOnly&&d.push("--sandbox","read-only"),{command:d.map(n).join(" "),cwd:b,windowName:"codex-new"}}function p(a,b){let c=k().basename(b);if("claude-projects"===a&&c.endsWith(".jsonl")&&!b.includes(k().sep+"subagents"+k().sep)){let a=c.slice(0,-6);return/^[0-9a-f-]{36}$/.test(a)?{command:`${m("claude")} --dangerously-skip-permissions --resume ${a}`,cwd:q(b),windowName:"claude-resume"}:null}if("codex-sessions"===a&&c.endsWith(".jsonl")){let a=c.match(/([0-9a-f-]{36})\.jsonl$/)?.[1];return a?{command:`${m("codex")} resume ${a}`,cwd:q(b),windowName:"codex-resume"}:null}return null}function q(a){return(0,l.tX)(a,{maxLines:30,requireDir:!0})??i().homedir()}c(58152)},15159:(a,b,c)=>{c.d(b,{em:()=>u,tJ:()=>v,vF:()=>l});var d=c(76760),e=c.n(d),f=c(16089),g=c(52509),h=c(23921),i=c(89333);let j=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi,k=(0,g.E)("codex-cwd");function l(a){return a.endsWith(".jsonl")?a.startsWith(i.GH["claude-projects"]+e().sep)?"claude":a.startsWith(i.GH["codex-sessions"]+e().sep)?"codex":null:null}function m(a){return"codex-sessions"===a.root?a.path.endsWith(".jsonl"):"claude-projects"===a.root&&!!a.path.endsWith(".jsonl")&&!e().basename(a.path).startsWith("agent-")&&!a.path.includes(e().sep+"subagents"+e().sep)}function n(a){return"idle"!==a.activity&&null===a.pid&&m(a)}function o(a){let b=e().basename(a).match(j);return b?.at(-1)?.toLowerCase()??null}function p(a){if(!a)return null;let b=a.match(j);return b?.at(-1)?.toLowerCase()??null}function q(a){let b=a.indexOf("--session-id"),c=p(b>=0?a[b+1]:void 0);if(c)return c;let d=a.indexOf("--resume"),e=p(d>=0?a[d+1]:void 0);if(e)return e;let f=a.indexOf("resume");return p(f>=0?a[f+1]:void 0)}function r(a){return e().relative(i.GH["claude-projects"],a).split(e().sep)[0]??""}function s(a){let b=k.get(a);if(void 0!==b&&""!==b)return b;let c=(0,f.tX)(a,{bytes:8192})??"";return k.set(a,c),c}function t(a,b){a.pid=b,a.proc="running"}function u(a){let b=a.filter(a=>null===a.pid&&m(a)),c=b.filter(n).slice(0,12);if(0===b.length&&0===c.length)return;let d=(0,h.SP)(b.map(a=>a.path)),e=new Set,g=[];for(let a of b){let b=d.get(a.path)??null;null!==b&&!e.has(b)&&(0,h.pl)(b)?(t(a,b),e.add(b)):g.push(a)}if(0===g.length)return;let i=(0,h.Bj)().filter(a=>!e.has(a.pid)),j=new Map;for(let a of i){let b=q(a.argv);if(!b)continue;let c=a.engine+":"+b,d=j.get(c);d?d.push(a):j.set(c,[a])}let k=[];for(let a of g){let b=o(a.path),d="codex-sessions"===a.root?"codex":"claude",f=(b?j.get(d+":"+b)??[]:[]).filter(a=>!e.has(a.pid));1===f.length?(t(a,f[0].pid),e.add(f[0].pid)):c.includes(a)&&k.push(a)}if(0===k.length)return;let l=new Map;for(let a of i){if(0===a.tty||e.has(a.pid)||null!==q(a.argv))continue;let b="claude"===a.engine?"claude:"+(0,f.Me)(a.cwd):"codex:"+a.cwd,c=l.get(b);c?c.push(a):l.set(b,[a])}let p=new Set;for(let a of k){let b=function(a){if("claude-projects"===a.root){let b=r(a.path);return b?"claude:"+b:null}let b=s(a.path);return b?"codex:"+b:null}(a);if(null===b||p.has(b))continue;p.add(b);let c=(l.get(b)??[]).filter(a=>!e.has(a.pid));1===c.length&&(t(a,c[0].pid),e.add(c[0].pid))}}function v(a,b){let c=l(a);if(null===c||!(0,h.pl)(b))return!1;let d=(0,h.$U)(b);if((0,h.Fe)(d)!==c||(0,h.Vt)(d))return!1;if((0,h.FQ)(b,a))return!0;let e=o(a);if(null!==e&&q(d)===e)return!0;let g=(0,h.$L)(b);if(null===g)return!1;if("claude"===c)return(0,f.Me)(g)===r(a);let i=s(a);return""!==i&&i===g}},16089:(a,b,c)=>{c.d(b,{Me:()=>j,eV:()=>k,tX:()=>l});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h);function j(a){return a.replace(/[^A-Za-z0-9]/g,"-")}function k(a,b){return i().join(g().homedir(),".claude","projects",j(a),b+".jsonl")}function l(a,b={}){let c=function(a,b=65536){try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(b),d=e().readSync(c,a,0,a.length,0);return a.toString("utf8",0,d)}finally{e().closeSync(c)}}catch{return""}}(a,b.bytes??65536);if(!c)return null;let d=c.split("\n");for(let a of(void 0!==b.maxLines&&(d=d.slice(0,b.maxLines)),d))if(a.trim())try{let c=JSON.parse(a),d="string"==typeof c.cwd?c.cwd:"string"==typeof c.payload?.cwd?c.payload.cwd:null;if(!d||b.requireDir&&!e().existsSync(d))continue;return d}catch{}return null}},16462:(a,b,c)=>{c.d(b,{C:()=>aq});var d=c(20640),e=c(64747),f=c(23855),g=c(3249),h=c(77598),i=c.n(h),j=c(73024),k=c.n(j),l=c(76760),m=c.n(l),n=c(91724),o=c(74127),p=c(90748),q=c(21153);let r=(0,n.BQ)("task-inbox-scan.json"),s=0;function t(a){let b,c,d;return((c=(b=a).lastIndexOf("</environment_context>"))>=0&&(b=b.slice(c+22)),(d=b.lastIndexOf("</INSTRUCTIONS>"))>=0&&(b=b.slice(d+15)),b.trim()).replace(/(?:э[-\s]*э[-\s]*э|эээ|ээ|эм|ммм)/giu," ").replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim()}let u=/(?:созда(?:й|ть|л)|сдела(?:й|ть)|добав(?:ь|ить)|исправ(?:ь|ить)|почин(?:и|ить)|проверь|разберись|найди|напиши|реализ(?:уй|овать)|запусти|подготовь|обнови|перенеси|удали|отрефактори|проанализируй|\b(?:create|add|fix|implement|build|write|review|check|investigate|run|update|refactor|deploy|make|set up|setup)\b)/i;var v=c(41017),w=c(52509),x=c(95544);let y=(0,w.E)("ctx");function z(a,b){return null===a||a<=0||null===b||b<=0?null:{usedTokens:a,windowTokens:b,pct:Math.min(100,Math.round(a/b*100))}}var A=c(51455),B=c(70107),C=c(89333);function D(a,b){let c=m().relative(a,b).split(m().sep);return 4===c.length&&"tasks"===c[2]&&c[3]?.endsWith(".output")?[c[0]??"",c[1]??"",c[3].slice(0,-7)]:null}async function E(a,b,c,d,e){let f;try{f=await e(()=>(0,A.readdir)(d,{withFileTypes:!0}))}catch{return[]}return(await Promise.all(f.map(async f=>{let g;if(f.isDirectory())return f.name.startsWith(".git")?[]:E(a,b,c,m().join(d,f.name),e);if(!f.isFile()||!C.Rg.some(a=>f.name.endsWith(a)))return[];let h=m().join(d,f.name);if("claude-projects"===a&&h.includes(m().sep+"tool-results"+m().sep))return[];try{g=await e(()=>(0,A.stat)(h))}catch{return[]}let i="claude-tasks"===a?D(b["claude-tasks"],h):null;if("claude-tasks"===a&&!i||0===g.size&&!i)return[];if(i){let[a,c,d]=i,f=m().join(b["claude-projects"],a,c,"subagents","agent-"+d+".jsonl");try{return await e(()=>(0,A.access)(f)),[]}catch{}}return[{rootName:a,root:c,path:h,st:g}]}))).flat()}async function F(a,b){try{return await b(()=>(0,A.access)(a)),!0}catch{return!1}}async function G(a=C.GH){let b,c,d=(b=0,c=[],async function(a){b>=48&&await new Promise(a=>c.push(a)),b+=1;try{return await a()}finally{b-=1,c.shift()?.()}}),e=(await Promise.all(Object.entries(a).map(async([b,c])=>await F(c,d)?E(b,a,c,c,d):[]))).flat();return e.sort((a,b)=>b.st.mtimeMs-a.st.mtimeMs),e.slice(0,C.aA).map(a=>{let b=(0,B.q0)(a.rootName,a.root,a.path,a.st);return{path:a.path,root:a.rootName,name:m().relative(a.root,a.path),project:b.project,worktree:b.worktree,title:b.title,engine:b.engine,kind:b.kind,fmt:b.fmt,parent:null,mtime:a.st.mtimeMs/1e3,size:a.st.size,activity:"idle",proc:null,pid:null,model:null,pendingQuestion:null,waitingInput:null}})}var H=c(23921);let I=(0,w.E)("effort"),J=new Set(["minimal","low","medium","high","xhigh","max"]);function K(a){let b=a?.trim().toLowerCase()??"";return J.has(b)?b:null}function L(a,b){if("codex-sessions"!==a.root||"turn_context"!==b.type)return null;let c=(0,x.xK)(b.payload),d=(0,x.r$)(c?.effort);if(d)return d;let e=(0,x.xK)((0,x.xK)(c?.collaboration_mode)?.settings);return(0,x.r$)(e?.reasoning_effort)}function M(a){if(null===a.pid)return null;let b=(0,H.$U)(a.pid);for(let c=0;c<b.length-1;c++){if("codex"===a.engine&&("-c"===b[c]||"--config"===b[c])){let a=b[c+1].match(/^model_reasoning_effort\s*=\s*"?([a-z]+)"?$/i);if(a)return a[1]}if("claude"===a.engine&&"--effort"===b[c])return b[c+1]}return null}var N=c(26474);let O=(0,w.E)("needle");function P(a,b){let c,d=O.get(a);if(d&&d.hits||(d={hits:{},scanned:d?.scanned??{}},O.set(a,d)),d.hits[b])return!0;let e=Buffer.from(a),f=Math.max(0,e.length-1);try{c=k().statSync(b).size}catch{return!1}let g=d.scanned[b]??0;if(c<=g)return!1;try{let a=k().openSync(b,"r");try{let h=Math.max(0,g-f),i=Buffer.alloc(0),j=!1;for(;h<c;){let b=Math.min(1048576,c-h),d=Buffer.alloc(b),g=k().readSync(a,d,0,b,h);if(!g)break;if(Buffer.concat([i,d.subarray(0,g)]).includes(e)){j=!0;break}i=f?d.subarray(Math.max(0,g-f),g):Buffer.alloc(0),h+=g}return d.scanned[b]=c,j&&(d.hits[b]=!0),j}finally{k().closeSync(a)}}catch{return!1}}let Q=(0,w.E)("sid-slug"),R=(0,w.E)("bgcmd"),S=(0,w.E)("chain-uuid");async function T(a,b,c){let d;try{d=await c(()=>(0,A.readdir)(a,{withFileTypes:!0}))}catch{return[]}return(await Promise.all(d.map(async d=>{let e=m().join(a,d.name);return d.isDirectory()?T(e,b,c):d.isFile()&&b(e)?[e]:[]}))).flat()}async function U(a,b,c){let d=C.GH["claude-projects"],e=c??Q.get(a)??null;if(!e){let c=(await T(d,b=>m().basename(b)===a+".jsonl",b))[0];if(!c)return[null,[]];e=m().basename(m().dirname(c)),Q.set(a,e)}let f=m().join(d,e,a+".jsonl"),g=m().join(d,e,a,"subagents"),h=(await T(g,a=>m().basename(a).startsWith("agent-")&&a.endsWith(".jsonl"),b)).sort();return[k().existsSync(f)?f:null,h]}let V=(0,n.BQ)("codex-lineage.json"),W=(0,w.E)("codex-lineage"),X=!1,Y=!1;async function Z(a){let b,c,d=(b=0,c=[],async function(a){b>=48&&await new Promise(a=>c.push(a)),b+=1;try{return await a()}finally{b-=1,c.shift()?.()}}),e=new Map(a.map(a=>[a.path,a]));for(let b of a)if("claude-projects"===b.root){let a=b.name.split(m().sep);if(a.length>=3&&"subagents"===a.at(-2)){let c=a[0]??"",e=a.at(-3)??"",[f,g]=await U(e,d,c);b.parent=f;let h=(0,x.Vh)(b.path.slice(0,-6)+".meta.json")??{},i=(0,x.r$)(h.toolUseId),j=Number(h.spawnDepth??0);if(i&&j>=1){let a=function(a,b){for(let c of b)if(c&&P(a,c))return c;return null}(i,g.filter(a=>a!==b.path).concat(f?[f]:[]));a&&(b.parent=a)}}}else if("claude-tasks"===b.root){let a=D(C.GH["claude-tasks"],b.path);if(!a)continue;let[c,e,f]=a,[g,h]=await U(e,d,c),i=function(a,b,c){if(R.has(a))return R.get(a)??null;let d="background with ID: "+a,e=null;for(let f of[...b,...c]){if(!f||!P(d,f))continue;let b=function(a,b){let c=null;try{for(let d of k().readFileSync(b,"utf8").split("\n"))if(d.includes(a)){c=d.match(/"tool_use_id"\s*:\s*"([^"]+)"/)?.[1]??null;break}if(!c)return null;for(let a of k().readFileSync(b,"utf8").split("\n"))if(a.includes(c)&&a.includes('"tool_use"'))try{let b=JSON.parse(a);for(let a of(0,x.Em)((0,x.xK)(b.message)?.content))if("tool_use"===a.type&&a.id===c){let b=(0,x.xK)(a.input)??{};return{command:String(b.command??""),description:String(b.description??"")}}}catch{}}catch{}return null}(d,f);if(b&&(b.command||b.description)){let c={...b,source:f};return R.set(a,c),c}e??={command:"",description:"",source:f}}return e&&R.set(a,e),e}(f,(g?[g]:[]).concat(h),function(a,b){let c,d=m().join(C.GH["claude-projects"],a);try{c=k().readdirSync(d,{withFileTypes:!0})}catch{return[]}let e=[];for(let a of c){if(!a.isFile()||!a.name.endsWith(".jsonl")||a.name===b+".jsonl")continue;let c=m().join(d,a.name);try{let a=k().statSync(c);if(a.size>0x4000000)continue;e.push({pathname:c,mtime:a.mtimeMs})}catch{continue}}return e.sort((a,b)=>b.mtime-a.mtime).slice(0,8).map(a=>a.pathname)}(c,e));if(i){b.parent=i.source,b.cmd=i.command,b.cmdDesc=i.description;let a=i.description||i.command;a&&(b.title=a.split(/\s+/).join(" ").slice(0,120))}else b.title="Background task "+f,b.cmd="",b.cmdDesc=""}!function(a){!function(){if(X)return;X=!0;let a=(0,x.Vh)(V);if(a&&"object"==typeof a&&!Array.isArray(a)){for(let[b,c]of Object.entries(a))"string"==typeof c&&!W.has(b)&&k().existsSync(b)&&W.set(b,c);W.size!==Object.keys(a).length&&(Y=!0)}}();let b=a.filter(a=>"codex-sessions"===a.root&&!a.parent);if(0===b.length)return;let c=new Map;for(let b of a)"claude-projects"===b.root&&null!==b.pid&&c.set(b.pid,b.path);for(let a of b){let b=null,f=new Set;for(let d=a.pid;null!==d&&!f.has(d)&&(f.add(d),!(f.size>15));d=(0,H.Ib)(d)){let a=c.get(d);if(a){b=a;break}}if(b){a.parent=b;var d=a.path,e=b;if(W.get(d)!==e){for(W.set(d,e);W.size>2e3;){let a=W.keys().next().value;if(void 0===a)break;W.delete(a)}Y=!0}}else{let b=W.get(a.path);b&&(a.parent=b)}}if(Y){Y=!1;try{k().mkdirSync(m().dirname(V),{recursive:!0}),k().writeFileSync(V,JSON.stringify(Object.fromEntries(W)))}catch{}}}(a);let f=new Map(a.map(a=>[a.path,a]));for(let b of a){if(b.parent||"claude-projects"!==b.root&&"codex-sessions"!==b.root||!b.path.endsWith(".jsonl")||b.path.includes(m().sep+"subagents"+m().sep))continue;let a=(0,N._b)(b.path);if(!a&&null!==b.pid){let c=new Set;for(let d=b.pid;null!==d&&!c.has(d)&&(c.add(d),!(c.size>15||(a=(0,N.N0)(d))));d=(0,H.Ib)(d));a&&a!==b.path&&(0,N.A6)(b.path,a)}a&&a!==b.path&&f.has(a)&&(b.parent=a,b.handoff=!0)}(0,N.OA)(),function(a){let b=new Map;for(let c of a){if("claude-projects"!==c.root)continue;let a=c.name.split(m().sep);if(2!==a.length)continue;let d=a[0]??"";b.set(d,(b.get(d)??[]).concat(c))}let c=(a,b,c)=>{let d=new Map(c.map(a=>[a.path,a])),e=new Set;for(let c=a;c?.parent&&!e.has(c.path);c=d.get(c.parent))if(e.add(c.path),c.parent===b.path)return!0;return!1};for(let a of b.values()){let b=[...a].sort((a,b)=>a.mtime-b.mtime);for(let d of b){let e=function(a,b){let c=S.get(a);if(c&&(null!==c[1]||c[0]>=524288||c[0]>=b))return c[1];let d=null,e=0;try{let c=k().openSync(a,"r");try{let a=Buffer.alloc(Math.min(b,524288));for(let b of(e=k().readSync(c,a,0,a.length,0),a.toString("utf8",0,e).split("\n")))if(b.includes('"compact_boundary"')){d=b.match(/"logicalParentUuid"\s*:\s*"([0-9a-f-]{36})"/)?.[1]??null;break}}finally{k().closeSync(c)}}catch{return null}return S.set(a,[e,d]),d}(d.path,d.size);if(!e)continue;let f=b.filter(a=>a!==d&&!a.parent).sort((a,b)=>b.mtime-a.mtime),g="live"===d.activity||"recent"===d.activity,h=f.find(a=>P(e,a.path))??(g?f.find(a=>"live"!==a.activity):void 0);h&&!c(d,h,a)&&(h.parent=d.path)}}}(a);let g=a=>{let b=new Set,c=a;for(;!b.has(c.path);){b.add(c.path);let a=e.get(c.parent??"");if(!a)return c.project;c=a}return a.project};for(let b of a)b.parent&&e.has(b.parent)?b.project=g(b):b.parent=null}let $=(0,w.E)("model");function _(a){return a?a.trim().replace(/^claude-/,"").replace(/-20\d{6}$/,""):null}function aa(a,b){if("codex-sessions"===a.root){if("turn_context"===b.type||"session_meta"===b.type)return(0,x.r$)((0,x.xK)(b.payload)?.model)}else if("assistant"===b.type){let a=(0,x.r$)((0,x.xK)(b.message)?.model);if(a&&"<synthetic>"!==a)return a}return null}let ab=(0,w.E)("plan"),ac=(0,w.E)("goal");function ad(a){return"in_progress"===a||"completed"===a?a:"pending"}function ae(a,b){if(!a.length)return null;let c=a.filter(a=>"completed"===a.status).length,d=a.find(a=>"in_progress"===a.status)?.text??a.find(a=>"pending"===a.status)?.text??null;return{steps:a,done:c,total:a.length,current:d,updatedAt:b}}function af(a){return"active"===a||"complete"===a||"blocked"===a?a:null}var ag=c(17341),ah=c(15159),ai=c(27359);let aj=new Map,ak={waiting:null,atComposer:!1};async function al(a){let b=Date.now();for(let[a,c]of aj)b-c.at>6e5&&aj.delete(a);if("running"!==a.proc||null===a.pid||a.pendingQuestion)return aj.delete(a.path),ak;if(Date.now()/1e3-a.mtime<15)return ak;let c=await (0,e.u1)(a.pid);if(null===c)return ak;let d=await (0,e.ZB)(c);if(!(0,ai.cZ)(d))return aj.delete(a.path),{waiting:null,atComposer:(0,ai.WM)(d)};let f=aj.get(a.path);return f&&f.screen===d?(aj.set(a.path,{...f,at:b}),b/1e3-f.since<15)?ak:{waiting:{since:f.since,screenTail:d.split("\n").map(a=>a.replace(/\s+$/,"")).filter(a=>a.trim()).slice(-10).join("\n").slice(-1200),target:c,menu:(0,ai.fm)(d)},atComposer:!1}:(aj.set(a.path,{screen:d,at:b,since:b/1e3}),ak)}let am=new Map;function an(){return new Promise(a=>setImmediate(a))}async function ao(a,b){for(let c=0;c<a.length;c+=1)b(a[c]),(c+1)%75==0&&await an()}async function ap(a,b){for(let c=0;c<a.length;c+=75)await Promise.all(a.slice(c,c+75).map(b)),c+75<a.length&&await an()}async function aq(){let a=await G(),b=a.some(a=>"claude-tasks"===a.root&&a.path.endsWith(".output"))?(0,H.$w)():am;return await ao(a,a=>{let b=(0,f.Hz)(a.root,a.path,a.mtime,a.size);a.activity=b.state,a.activityReason=b.reason,a.model=function(a){if("claude-projects"===a.root&&a.path.includes(m().sep+"subagents"+m().sep)){let b=(0,x.Vh)(a.path.slice(0,-6)+".meta.json")??{},c=(0,x.r$)(b.model);if(c)return _(c)}if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=$.get(a.path);if(b?.[0]===a.size)return b[1];let c=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(c=aa(a,b))break;if(!c)try{for(let b of k().readFileSync(a.path,"utf8").split("\n").slice(0,41))try{let d=JSON.parse(b);if(d&&"object"==typeof d&&!Array.isArray(d)&&(c=aa(a,d)))break}catch{}}catch{}let d=_(c);return $.set(a.path,[a.size,d]),d}(a)}),await ao(a,a=>{if("claude-tasks"===a.root&&a.path.endsWith(".output")){let c=b.get(a.path)??null;a.pid=c,a.proc=null===c?"done":"running",null!==c&&(a.activity="live",a.activityReason="output_held")}}),(0,ah.em)(a),await ao(a,a=>{a.effort=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;if("codex-sessions"!==a.root)return K(M(a));let b=I.get(a.path);if(b?.[0]===a.size)return b[1]??K(M(a));let c=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(c=K(L(a,b)))break;if(!c)try{for(let b of k().readFileSync(a.path,"utf8").split("\n").slice(0,41))try{let d=JSON.parse(b);if(d&&"object"==typeof d&&!Array.isArray(d)&&(c=K(L(a,d))))break}catch{}}catch{}return I.set(a.path,[a.size,c]),c??K(M(a))}(a)}),await ap(a,async a=>{let b=(0,ag.x)(a);a.pendingQuestion=b&&null!==a.pid?{...b,paneTarget:await (0,e.u1)(a.pid)}:b;let c=await al(a);a.waitingInput=c.waiting,c.atComposer&&"stalled"===a.activity&&(a.activity=Date.now()/1e3-a.mtime<900?"recent":"idle",a.activityReason="pane_at_composer"),a.plan=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=ab.get(a.path);if(b?.[0]===a.size)return b[1];let c=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(c="codex-sessions"===a.root?function(a){let b,c=(0,x.xK)(a.payload);if(!c||"function_call"!==c.type||"update_plan"!==(0,x.r$)(c.name))return null;let d=(0,x.r$)(c.arguments);if(!d)return null;try{b=JSON.parse(d)}catch{return null}return ae((0,x.Em)((0,x.xK)(b)?.plan).map(a=>{let b=(0,x.r$)(a.step)?.trim();return b?{text:b,status:ad(a.status)}:null}).filter(a=>null!==a),(0,x.r$)(a.timestamp))}(b):function(a){if("assistant"!==a.type)return null;for(let b of(0,x.Em)((0,x.xK)(a.message)?.content))if("tool_use"===b.type&&"TodoWrite"===(0,x.r$)(b.name))return ae((0,x.Em)((0,x.xK)(b.input)?.todos).map(a=>{let b=ad(a.status),c=("in_progress"===b?(0,x.r$)(a.activeForm)?.trim():null)||(0,x.r$)(a.content)?.trim()||null;return c?{text:c,status:b}:null}).filter(a=>null!==a),(0,x.r$)(a.timestamp));return null}(b))break;return ab.set(a.path,[a.size,c]),c}(a),a.goal=function(a){if("codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=ac.get(a.path);if(b?.[0]===a.size)return b[1];let c=null,d=null,e=null,g=null;for(let b of(0,f.He)(a.path,a.size).reverse()){let a=function(a){let b=(0,x.xK)(a.payload);if(!b)return null;if("thread_goal_updated"===b.type){let a=(0,x.xK)(b.goal);return a?{objective:(0,x.r$)(a.objective),status:af(a.status)??void 0,tokensUsed:(0,x.Vg)(a.tokensUsed),timeUsedSeconds:(0,x.Vg)(a.timeUsedSeconds)}:null}if("function_call"===b.type&&"update_goal"===(0,x.r$)(b.name)){let a=(0,x.r$)(b.arguments);if(!a)return null;try{let b=(0,x.xK)(JSON.parse(a));if(!b)return null;return{objective:(0,x.r$)(b.objective),status:af(b.status)??((0,x.r$)(b.objective)?"active":void 0)}}catch{}}return null}(b);if(a&&(null===d&&a.status&&(d=a.status),null===c&&a.objective&&(c=a.objective),null===e&&"number"==typeof a.tokensUsed&&(e=a.tokensUsed),null===g&&"number"==typeof a.timeUsedSeconds&&(g=a.timeUsedSeconds),null!==d&&null!==c&&null!==e))break}let h=null===d&&null===c?null:{objective:c,status:d??"active",tokensUsed:e,timeUsedSeconds:g};return ac.set(a.path,[a.size,h]),h}(a),a.ctx=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=y.get(a.path);if(b?.[0]===a.size)return b[1];let c=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(c="codex-sessions"===a.root?function(a){let b=(0,x.xK)(a.payload);if(!b||"token_count"!==(0,x.r$)(b.type))return null;let c=(0,x.xK)(b.info);if(!c)return null;let d=(0,x.xK)(c.last_token_usage)??(0,x.xK)(c.total_token_usage);return d?z((0,x.Vg)(d.total_tokens),(0,x.Vg)(c.model_context_window)):null}(b):function(a){if("assistant"!==a.type)return null;let b=(0,x.xK)(a.message),c=(0,x.r$)(b?.model);if(!b||"<synthetic>"===c)return null;let d=(0,x.xK)(b.usage);if(!d)return null;let e=((0,x.Vg)(d.input_tokens)??0)+((0,x.Vg)(d.cache_read_input_tokens)??0)+((0,x.Vg)(d.cache_creation_input_tokens)??0),f=c?.includes("[1m]")||c?.includes("fable")?1e6:2e5;return e>f&&(f=1e6),z(e,f)}(b))break;return y.set(a.path,[a.size,c]),c}(a)}),await ao(a,a=>{(a.pendingQuestion||a.waitingInput)&&(0,d.M$)(a)}),await Z(a),await (0,g.zn)(a),await (0,v.u1)(a),!function(a,b={}){if("1"!==process.env.LLV_ENABLE_AUTO_TASK_INBOX)return;let c=b.now?.()??new Date;if(c.getTime()-s<36e5)return;s=c.getTime();let d=b.stateFile??r,e=function(a=r){try{let b=JSON.parse(k().readFileSync(a,"utf8"));return{lastRunAt:"string"==typeof b.lastRunAt?b.lastRunAt:null,seen:Array.isArray(b.seen)?b.seen.filter(a=>"string"==typeof a):[]}}catch{return{lastRunAt:null,seen:[]}}}(d),f=new Set(e.seen),g=Math.max(c.getTime()-36e5,e.lastRunAt?new Date(e.lastRunAt).getTime():0),h=new Set,j=[];(0,q.z4)(b=>{for(let a of b)a.source?.fingerprint&&h.add(a.source.fingerprint);let c=function(a,b,c){let d=[];for(let e of a.filter(a=>a.path.endsWith(".jsonl")&&("claude"===a.engine||"codex"===a.engine)&&1e3*a.mtime>=b).sort((a,b)=>a.mtime-b.mtime))(0,o.l)(e.path,e.engine).messages.forEach((a,b)=>{if("user"!==a.role)return;let f=function(a,b,c){var d;let e=t(b.text);return{path:a.path,ts:b.ts,text:e,fingerprint:(d=[a.path,b.ts??String(c),e],i().createHash("sha1").update(d.join("\0")).digest("hex")),engine:"codex"===a.engine?"codex":"claude"}}(e,a,b);if(c.has(f.fingerprint))return;let g=function(a){var b;let c,d,e,f=t(a);return!(c=f.trim())||/^(?:<|Caveat:|\[Request interrupted|This came from another Claude session|# AGENTS\.md instructions)/.test(c)||c.length<18||!u.test(f)?null:((e=(b=function(a){for(let[b,c]of[[/^создал[а]?\s+/iu,"создать "],[/^сделал[а]?\s+/iu,"сделать "],[/^написал[а]?\s+/iu,"написать "],[/^добавил[а]?\s+/iu,"добавить "],[/^исправил[а]?\s+/iu,"исправить "],[/^проверил[а]?\s+/iu,"проверить "],[/^запустил[а]?\s+/iu,"запустить "],[/^подготовил[а]?\s+/iu,"подготовить "],[/^обновил[а]?\s+/iu,"обновить "],[/^реализовал[а]?\s+/iu,"реализовать "]])if(b.test(a))return a.replace(b,c);return a}((d=f.split(/\n\s*\n/,1)[0]??f,(d.match(/^(.{18,}?[.!?。!?])(?:\s|$)/u)?.[1]??d).replace(/\s+/g," ").replace(/[.!?。!?]+$/u,"").trim()).replace(/^(?:я\s+бы\s+хотел(?:а)?|хочу|нужно|надо)(?:,?\s+чтобы\s+ты)?\s+/iu,"").replace(/^(?:пожалуйста|pls|please),?\s+/iu,"").replace(/^(?:i(?:'d| would)\s+like\s+(?:you\s+)?to|can you|could you)\s+/iu,"").trim())).charAt(0))?e.toLocaleUpperCase()+b.slice(1):b).slice(0,96).trim()||null}(f.text);g&&d.push({project:e.project,text:g,source:f,mtime:e.mtime})});return d.slice(-25)}(a,g,new Set([...f,...h])),d=b;for(let a of c){let b=d.filter(b=>b.project===a.project),c=(0,p.UT)(d,{project:a.project,text:a.text,pos:function(a){let b=a.length;return{x:740+b%2*300,y:120+120*Math.floor(b/2)}}(b),source:a.source});c.ok&&(d=c.tasks,j.push(a.source.fingerprint),f.add(a.source.fingerprint))}return{tasks:d===b?void 0:d,result:void 0}}),function(a,b=r){k().mkdirSync(m().dirname(b),{recursive:!0});let c=m().join(m().dirname(b),`.${m().basename(b)}.${process.pid}.${i().randomUUID()}.tmp`);k().writeFileSync(c,JSON.stringify({lastRunAt:a.lastRunAt,seen:a.seen.slice(-5e3)},null,2)+"\n","utf8"),k().renameSync(c,b)}({lastRunAt:c.toISOString(),seen:[...f,...j]},d)}(a),a}},17341:(a,b,c)=>{c.d(b,{M:()=>k,x:()=>l});var d=c(23855),e=c(52509),f=c(95544);let g=(0,e.E)("questions");function h(a){return(0,f.r$)(a.timestamp)??(0,f.r$)(a.created_at)??new Date().toISOString()}function i(a){let b=(0,f.r$)(a.label)?.trim();return b?{label:b.replace(/\s*\(Recommended\)\s*$/i,"").trim()||b,description:(0,f.r$)(a.description)?.trim()??"",recommended:/\(Recommended\)\s*$/i.test(b)}:null}function j(a){let b=(0,f.r$)(a.question)?.trim();if(!b)return null;let c=(0,f.Em)(a.options).map(i).filter(a=>null!==a);return c.sort((a,b)=>Number(b.recommended)-Number(a.recommended)),{question:b,header:(0,f.r$)(a.header)?.trim()??"Question",multiSelect:!0===a.multiSelect,options:c}}function k(a,b,c){for(let e of(0,d.He)(a,b).reverse()){let a=function(a,b){if((0,f.r$)(a.tool_use_id)===b){let b=a.content;return"string"==typeof b?b:Array.isArray(b)?b.map(a=>"string"==typeof a?a:(0,f.r$)((0,f.xK)(a)?.text)??"").filter(Boolean).join("\n"):JSON.stringify(a)}for(let c of(0,f.Em)((0,f.xK)(a.message)?.content)){if("tool_result"!==c.type||(0,f.r$)(c.tool_use_id)!==b)continue;let a=c.content;if("string"==typeof a)return a;if(Array.isArray(a))return a.map(a=>"string"==typeof a?a:(0,f.r$)((0,f.xK)(a)?.text)??"").filter(Boolean).join("\n");return JSON.stringify(c)}return null}(e,c);if(null!==a)return a.trim()||"answer is recorded in the transcript"}return null}function l(a){if("claude-projects"!==a.root||!a.path.endsWith(".jsonl")||"running"!==a.proc||null===a.pid)return null;let b=g.get(a.path);if(b?.[0]===a.size)return b[1];let c=null,e=new Set;for(let b of(0,d.He)(a.path,a.size).reverse()){let d=function(a){let b=(0,f.r$)(a.tool_use_id);if(b)return b;for(let b of(0,f.Em)((0,f.xK)(a.message)?.content)){let a=(0,f.r$)(b.tool_use_id);if("tool_result"===b.type&&a)return a}return null}(b);if(d){e.add(d);continue}let g=function(a){if("assistant"!==a.type)return null;for(let b of(0,f.Em)((0,f.xK)(a.message)?.content)){if("tool_use"!==b.type)continue;let a=(0,f.r$)(b.id),c=(0,f.r$)(b.name),d=(0,f.xK)(b.input)??{};if(a&&("AskUserQuestion"===c||"ExitPlanMode"===c))return{id:a,name:c,input:d}}return null}(b);if(!g||e.has(g.id))break;if("AskUserQuestion"===g.name){let d=(0,f.Em)(g.input.questions).map(j).filter(a=>null!==a);if(!d.length)break;c={kind:"question",toolUseId:g.id,transcriptPath:a.path,pid:a.pid,paneTarget:null,askedAt:h(b),questions:d};break}let i=(0,f.r$)(g.input.plan)?.trim();if(!i)break;c={kind:"plan",toolUseId:g.id,transcriptPath:a.path,pid:a.pid,paneTarget:null,askedAt:h(b),plan:i};break}return g.set(a.path,[a.size,c]),c}},21153:(a,b,c)=>{c.d(b,{h6:()=>m,z4:()=>n});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h);let j=(0,c(91724).BQ)("tasks.json");function k(a){var b;return!(!a||"object"!=typeof a||Array.isArray(a))&&("string"==typeof a.path||null===a.path)&&("number"==typeof a.panePid||null===a.panePid)&&(null===a.panePid||Number.isInteger(a.panePid)&&a.panePid>0)&&("delivered"===(b=a.state)||"failed"===b||"spawning"===b||"handoff"===b)&&("string"==typeof a.error||null===a.error)&&"string"==typeof a.at}function l(a){var b,c,d;return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.project&&("inbox"===(b=a.status)||"assigned"===b||"blocked"===b||"done"===b)&&"string"==typeof a.text&&!(!(c=a.pos)||"object"!=typeof c||Array.isArray(c))&&"number"==typeof c.x&&Number.isFinite(c.x)&&"number"==typeof c.y&&Number.isFinite(c.y)&&Array.isArray(a.assignments)&&a.assignments.every(k)&&(void 0===a.source||!(!(d=a.source)||"object"!=typeof d||Array.isArray(d))&&"string"==typeof d.path&&("string"==typeof d.ts||null===d.ts)&&"string"==typeof d.text&&"string"==typeof d.fingerprint&&("claude"===d.engine||"codex"===d.engine))&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt}function m(a=j){let b=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(a);return Array.isArray(b?.tasks)?b.tasks.filter(l):[]}function n(a,b=j){let c=a(m(b));return c.tasks&&function(a,b=j){let c;g().mkdirSync(i().dirname(b),{recursive:!0}),c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),g().writeFileSync(c,JSON.stringify({tasks:a},null,2)+"\n","utf8"),g().renameSync(c,b)}(c.tasks,b),c.result}},23855:(a,b,c)=>{c.d(b,{He:()=>k,Hz:()=>l});var d=c(73024),e=c.n(d),f=c(52509),g=c(95544),h=c(23921);let i=(0,f.E)("turn"),j=(0,f.E)("tail");function k(a,b,c=131072){let d=j.get(a);if(d&&d[0]===b&&d[1]===c)return d[2].slice();let f=function(a,b,c){let d,f=0;try{let g=e().openSync(a,"r");try{f=Math.max(0,b-c);let a=Buffer.alloc(Math.max(0,b-f));e().readSync(g,a,0,a.length,f),d=a.toString("utf8")}finally{e().closeSync(g)}}catch{return[]}let g=d.split("\n");f>0&&g.length&&(g=g.slice(1));let h=[];for(let a of g){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&h.push(a)}catch{}}return h}(a,b,c);if(j.size>=64&&!j.has(a)){let a=j.keys().next().value;void 0!==a&&j.delete(a)}return j.set(a,[b,c,f]),f.slice()}function l(a,b,c,d){let e=Date.now()/1e3-c;if("claude-tasks"===a&&b.endsWith(".output"))return(0,h.$w)().has(b)?{state:"live",reason:"output_held"}:{state:e<900?"recent":"idle",reason:"output_released"};if(b.endsWith(".jsonl")){let c,h=i.get(b);if(h?.[0]===d)c=h[1];else{var f;f=a.startsWith("codex"),c=function(a,b){let c=null;for(let d of[...a].reverse()){if(b){let a=(0,g.xK)(d.payload)??{},b=(0,g.r$)(a.type);if("session_meta"===d.type||"token_count"===b||"reasoning"===b||null===b)continue;if("task_complete"===b||"turn_complete"===b||"turn_aborted"===b)return"done";if("task_started"===b||"turn_started"===b||"user_message"===b)return"busy";if("agent_message"===b||"message"===b&&"assistant"===a.role){c??="done";continue}if("message"===b)return"busy";c??="busy";continue}let a=d.type;if("assistant"===a){let a=(0,g.r$)(((0,g.xK)(d.message)??{}).stop_reason);return"end_turn"===a||"stop_sequence"===a?"done":"busy"}if("user"===a)return"busy"}return c}(k(b,d),f),i.set(b,[d,c])}if("busy"===c)return e<180?{state:"live",reason:"jsonl_turn_open"}:{state:"stalled",reason:"jsonl_turn_stalled"};if("done"===c)return{state:e<900?"recent":"idle",reason:"jsonl_turn_completed"}}return e<20?{state:"live",reason:"mtime_fresh"}:e<900?{state:"recent",reason:"mtime_recent"}:{state:"idle",reason:"mtime_old"}}},23921:(a,b,c)=>{c.d(b,{$L:()=>s,$U:()=>r,$w:()=>n,BB:()=>q,Bj:()=>x,FQ:()=>p,Fe:()=>t,Ib:()=>w,SP:()=>o,Vt:()=>v,pl:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(59683),i=c(89333);let j=null,k=null,l=null;function m(a){return Number.isInteger(a)&&a>0&&h.B.pidAlive(a)}function n(a=!1){let b=Date.now();if(!a&&j&&b-j.at<12e3)return j.map;let c=new Map;return h.B.scanFdTargetsUnder(i.GH["claude-tasks"],(a,b)=>{a.endsWith(".output")&&!c.has(a)&&c.set(a,b)}),j={at:b,map:c},c}function o(a,b=!1){let c=new Map;for(let b of a){if(c.size>=512)break;if(!b)continue;c.set(b,b);let a=function(a){try{return e().realpathSync(a)}catch{return null}}(b);a&&c.set(a,b)}let d=[...c.keys()].sort().join("\0"),f=Date.now();if(!b&&k&&k.key===d&&f-k.at<12e3)return k.map;let g=new Map;return c.size>0&&h.B.scanFdTargetsFor([...c.keys()],(a,b,d)=>{let e=c.get(a);e&&!g.has(e)&&d()&&g.set(e,b)}),k={at:f,key:d,map:g},g}function p(a,b){return h.B.pidWritesPath(a,b)}function q(a,b){return h.B.pidHoldsPath(a,b)}function r(a){return h.B.readArgv(a)}function s(a){return h.B.readCwd(a)}function t(a){for(let b of a.slice(0,2)){let a=g().basename(b);if("claude"===a||"claude.exe"===a)return"claude";if("codex"===a||"codex.exe"===a)return"codex"}return null}let u=new Set(["daemon","--bg-pty-host","--bg-spare"]);function v(a){return a.some(a=>u.has(a))}function w(a){return h.B.readPpid(a)}function x(a=!1){let b=Date.now();if(!a&&l&&b-l.at<12e3)return l.list;let c=[];for(let a of h.B.listProcesses()){let b=t(a.argv);null===b||v(a.argv)||null!==a.cwd&&c.push({pid:a.pid,engine:b,argv:a.argv,cwd:a.cwd,tty:a.tty})}return l={at:b,list:c},c}},25750:(a,b,c)=>{c.d(b,{J8:()=>s,if:()=>p,Sn:()=>q,V_:()=>r});var d=c(73024),e=c.n(d);let f=/^\s*(?:VERDICT:\s*)?(REQUEST_CHANGES|APPROVE|COMMENT)\b/m,g=/^\s*(\d+)[.)]\s+(.*)$/,h=/(?:\[(P[0-3])\]|\b(Critical|High|Medium|Low|Info|P[0-3])\b)/i,i=/((?:\.{1,2}\/|\/|~\/)?[\w@.+-][\w@.+\-/]*\.(?:tsx?|jsx?|mjs|cjs|mts|cts|py|go|rs|md|json|ya?ml|toml|css|scss|html|sql|sh|env|ftl|txt))(?::(\d+))?/i,j=/\[([^\]]+)\]\(([^)\s]+)\)/,k=/([\w.-]*(?:api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|bearer|secret|password|passwd|pwd|token))\b(\s*[:=]\s*)(["']?)[^\s"',}]+/gi;function l(a){let b=a.replace(k,(a,b,c,d)=>`${b}${c}${d}[redacted]`);return{raw:b.slice(0,24e3),truncated:b.length>24e3}}var m=c(23855),n=c(95544),o=c(98590);function p(a){for(let b of(0,m.He)(a.path,a.size).reverse()){let c=Date.parse(String(b.timestamp??""))||1e3*a.mtime;if("codex-sessions"===a.root){let a=(0,n.xK)(b.payload)??{},d=(0,n.r$)(a.type);if("agent_message"===d)return{text:(0,n.r$)(a.message)??"",ts:c};if("message"===d&&"assistant"===a.role){let b=(0,n.Em)(a.content).map(a=>(0,n.r$)(a.text)??(0,n.r$)(a.input_text)??"").join("\n").trim();if(b)return{text:b,ts:c}}}if("claude-projects"===a.root&&"assistant"===b.type){let a=(0,n.Em)((0,n.xK)(b.message)?.content).filter(a=>"text"===a.type).map(a=>(0,n.r$)(a.text)??"").join("\n").trim();if(a)return{text:a,ts:c}}}return null}function q(a){let b=a.match(f)?.[1];if(!b)return null;let c=function(a){let b=a.match(f)?.[1];if(!b)return null;let c=[],d=[],e=null,k=()=>{let a,b,d,f=e?.trim();f&&c.push((a=function(a){let b=a.toUpperCase();if("P0"===b||"P1"===b||"P2"===b||"P3"===b)return b;let c=a.toLowerCase();return"critical"===c?"Critical":"high"===c?"High":"medium"===c?"Medium":"low"===c?"Low":"Info"}(f.match(h)?.[1]??f.match(h)?.[2]??"Info"),b=function(a){let b=a.match(j);if(b){var c;let a,d=(a=(c=(b[2]??"").replace(/^file:\/\//,"")).match(/^(.*?):(\d+(?:-\d+)?)$/))?{target:a[1]??c,line:a[2]}:{target:c},e=d.line?Number(d.line.split("-",1)[0]):void 0;return{file:d.target||b[1],line:Number.isFinite(e)?e:void 0}}let d=a.match(i);if(!d)return{};let e=d[2]?Number(d[2]):void 0;return{file:d[1],line:Number.isFinite(e)?e:void 0}}(f),d=function(a){let b=a,c=b.match(h);if(c&&void 0!==c.index){let a=b.slice(c.index+c[0].length).replace(/^[\s.:–—-]+/,"");a&&(b=a)}return b.replace(j,"$1").replace(/`([^`]*)`/g,"$1").replace(/\s+/g," ").trim().slice(0,200)}(f)||f.slice(0,200)||"Finding",{severity:a,file:b.file,line:b.line,title:d,body:l(f).raw})),e=null};for(let b of a.split("\n")){let a=b.trimEnd(),h=a.match(g);if(h){k(),e=h[2]??"";continue}let i=a.trim();if(null!==e){i?e=`${e}
3
- ${i}`:k();continue}!(!i||f.test(a)||/^(findings?|summary|open questions?|tests?|residual risk)\s*:?\s*$/i.test(i))&&0===c.length&&d.length<3&&i.length<=240&&d.push(i)}k();let m=c.filter(a=>h.test(a.body)).length;return b||/^findings?\s*:?$/im.test(a)||m>=2||m>=1&&/\b(review|request_changes|approve|comment)\b/i.test(a)?{kind:"review",ts:null,verdict:b,findings:c,summary:d,raw:l(a).raw}:null}(a);return{verdict:b,findingsCount:c?.findings.length??0,content:(0,o.Sn)(b,a)}}function r(a){if(!a.findingsPath)return null;try{return q(e().readFileSync(a.findingsPath,"utf8"))}catch{return null}}function s(a,b){if(!a.reviewerPath)return null;let c=b.get(a.reviewerPath);if(!c)return null;let d=p(c);return d?q(d.text):null}},26474:(a,b,c)=>{c.d(b,{A6:()=>q,N0:()=>p,OA:()=>s,_b:()=>r,a9:()=>o});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(23921);let j=(0,h.BQ)("handoff-lineage.json"),k=null,l=null,m=!1;function n(){if(k&&l)return{panes:k,children:l};k=new Map,l=new Map;let a={};try{a=JSON.parse(e().readFileSync(j,"utf8"))}catch{}for(let[b,c]of Object.entries(a.panes??{})){let a=Number(b);Number.isInteger(a)&&a>0&&"string"==typeof c&&(0,i.pl)(a)&&k.set(a,c)}for(let[b,c]of Object.entries(a.children??{}))"string"==typeof c&&e().existsSync(b)&&l.set(b,c);let b=Object.keys(a.panes??{}).length+Object.keys(a.children??{}).length;return k.size+l.size!==b&&(m=!0),{panes:k,children:l}}function o(a,b){if(!Number.isInteger(a)||a<=0)return;let c=n();c.panes.get(a)!==b&&(c.panes.set(a,b),m=!0,s())}function p(a){return n().panes.get(a)??null}function q(a,b){let c=n();if(c.children.get(a)!==b){for(c.children.set(a,b);c.children.size>2e3;){let a=c.children.keys().next().value;if(void 0===a)break;c.children.delete(a)}m=!0}}function r(a){return n().children.get(a)??null}function s(){if(!m)return;m=!1;let a=n();try{e().mkdirSync(g().dirname(j),{recursive:!0}),e().writeFileSync(j,JSON.stringify({panes:Object.fromEntries([...a.panes].map(([a,b])=>[String(a),b])),children:Object.fromEntries(a.children)}))}catch{}}},27359:(a,b,c)=>{c.d(b,{EB:()=>e,WM:()=>y,_1:()=>o,cZ:()=>w,d3:()=>z,dC:()=>m,fm:()=>v,g2:()=>l,ye:()=>n});let d=/^\s*[❯›]/,e=/\? for shortcuts|bypass permissions on|Press up to edit|⏎ send|Context \d+% used/,f=/Resume from summary/,g=/Do you trust|trust this folder|trust the contents of this directory/i,h=/Enter to confirm|Press enter to continue/i,i=/Allow command\?|Do you want to proceed\?|Press enter to approve|approve this (command|action)|\(y\/n\)|Yes, (allow|proceed|run)/i,j=/You(?:'ve| have) (?:hit|reached) (?:your|the) .{0,24}limit|(?:usage|rate).?limit (?:reached|hit|exceeded)|out of (?:quota|credits)|\d+.hour limit reached|limit resets/i,k=new Set(["zsh","bash","fish","sh","dash"]);function l(a){return null!==a&&k.has(a)}function m(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a-=1){let c=b[a]??"";if(d.test(c))return c}return""}function n(a){return f.test(a)?"resume_picker":g.test(a)?"trust_prompt":h.test(a)?"startup_gate":null}function o(a){let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a-=1)if(d.test(b[a]??"")){c=a;break}if(-1!==c){let a=b.slice(c+1).join("\n");if(e.test(a)&&!i.test(a)&&!j.test(a))return null}let f=b.slice(-14).join("\n");return i.test(f)?"approval_prompt":j.test(f)?"rate_limit":null}let p=/^\s*❯?\s*\d+\.\s+\S/m,q=/Enter to (select|confirm|submit)/,r=/^\s*[─━—]{6,}\s*$/,s=/[☐☑✔☒]/,t=/^\s*(❯\s*)?(\d{1,2})\.\s+(\S.*)$/,u=/\s*\(Recommended\)\s*$/i;function v(a){let b=a.split("\n").map(a=>a.replace(/\s+$/,"")),c=-1;for(let a=b.length-1;a>=0;a-=1)if(q.test(b[a]??"")){c=a;break}if(-1===c)return null;let d=-1;for(let a=c-1;a>=Math.max(0,c-40);a-=1){let c=t.exec(b[a]??"");if(c&&1===Number(c[2])){d=a;break}}if(-1===d)return null;let e=[];for(let a=d;a<c;a+=1){let c=b[a]??"";if(!c.trim()||r.test(c))continue;let d=t.exec(c);if(d){let a=d[3].trim(),b=a.replace(u,"").trim();e.push({value:Number(d[2]),label:b||a,description:"",recommended:u.test(a)});continue}let f=e[e.length-1];f&&/^\s{2,}\S/.test(c)&&(f.description=f.description?`${f.description} ${c.trim()}`:c.trim())}if(e.length<2||e.some((a,b)=>a.value!==b+1))return null;let f=[],g=d-1;for(;g>=0&&!(b[g]??"").trim();)g-=1;for(let a=g;a>=0&&f.length<8;a-=1){let c=b[a]??"";if(!c.trim()||r.test(c)||s.test(c)||t.test(c))break;f.unshift(c.trim())}let h=f.join(" ").trim();if(!h)return null;let i=[],j=g-f.length;for(;j>=0&&!(b[j]??"").trim();)j-=1;let k=j>=0?b[j]??"":"";if(s.test(k))for(let a of k.replace(/[←→]/g," ").split(/\s{2,}/)){let b=a.replace(/[☐☑✔☒]/g,"").trim();b&&i.push({label:b,done:/[☑✔]/.test(a)})}return{question:h,tabs:i,options:e}}function w(a){if(null!==o(a)||g.test(a))return!0;let b=a.split("\n").slice(-14).join("\n");return p.test(b)&&!e.test(b)}let x=/esc to interrupt|ctrl\+c to (?:stop|cancel)|Interrupting/i;function y(a){if(w(a))return!1;let b=a.split("\n").slice(-14).join("\n");return""!==m(a)&&e.test(b)&&!x.test(b)}function z(a){return a.split("\n").filter(a=>a.trim()).slice(-3).join(" | ").slice(0,300)}},30795:(a,b,c)=>{c.d(b,{cr:()=>d});function d(a,b=160){let c=a.replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/[*_~#>]+/g,"").replace(/\s+/g," ").trim().replace(/(?:\/[^\s)]+){3,}/g,a=>{if(a.length<=40)return a;let b=a.split("/").filter(Boolean);return b.length>=2?".../"+b.slice(-2).join("/"):a}).replace(/\s+/g," ").trim();return c.length>b?c.slice(0,b-1).trimEnd()+"…":c}},38905:(a,b,c)=>{c.d(b,{vT:()=>s,ni:()=>t,_p:()=>p,n1:()=>u});var d=c(77598),e=c.n(d),f=c(16089),g=c(1785),h=c(27359),i=c(64747),j=c(3249),k=c(51906),l=c(31421),m=c(59680),n=c(98590);function o(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}async function p(a,b){let c=b.find(b=>b.path===a.implementerPath);if(!c)return{error:"implementer transcript is unknown",status:404};if("claude-projects"!==c.root&&"codex-sessions"!==c.root)return{error:"implementer must be a Claude or Codex session",status:400};let d=function(a){let b=(0,n.Vd)();if(a.preset){let c=b.find(b=>b.name===a.preset);return c?{implementer:{...c.implementer},reviewer:{...c.reviewer}}:null}let c=o(a.roles?.implementer),d=o(a.roles?.reviewer);return c&&d?{implementer:c,reviewer:d}:null}(a);if(!d)return{error:"invalid flow roles or preset",status:400};let g="merge-base"===a.baseMode?"merge-base":"head",h=(0,f.tX)(c.path);if(!h)return{error:"could not determine the session working directory",status:409};let i="string"==typeof a.baseRef&&a.baseRef.trim()?{ok:!0,sha:a.baseRef.trim()}:function(a,b){let c="head"===b?["rev-parse","HEAD"]:["merge-base","HEAD",function(a){let b=(0,l.spawnSync)("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:a,encoding:"utf8"});if(0===b.status&&b.stdout.trim())return b.stdout.trim().replace(/^origin\//,"origin/");for(let b of["origin/main","origin/master","main","master"])if(0===(0,l.spawnSync)("git",["rev-parse","--verify",b],{cwd:a,encoding:"utf8"}).status)return b;return null}(a)??"origin/main"],d=(0,l.spawnSync)("git",c,{cwd:a,encoding:"utf8"});if(0!==d.status)return{ok:!1,error:(d.stderr||d.stdout||"failed to resolve git base ref").trim()};let e=d.stdout.trim();return e?{ok:!0,sha:e}:{ok:!1,error:"git returned an empty base ref"}}(h,g);if(!i.ok)return{error:i.error,status:409};let k=(0,n.mL)();if(k.find(a=>a.implementerPath===c.path&&null===a.closedAt&&"closed"!==a.state))return{error:"implementer already has an active flow",status:409};let p={id:e().randomUUID().slice(0,8),template:"implement-review-loop",project:c.project,cwd:h,implementerPath:c.path,roles:d,baseRef:i.sha,baseMode:g,mode:"manual"===a.mode?"manual":"auto",reviewerMode:"pane"===a.reviewerMode?"pane":"headless",roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>0?Math.min(a.roundLimit,50):5,state:"waiting_ready",pausedState:null,stateDetail:null,rounds:[],createdAt:(0,j.Ec)(),closedAt:null};k.push(p),(0,n.tu)(k);try{await (0,j.iq)(p,new Map(b.map(a=>[a.path,a])),(0,m.SB)())}catch(a){p.state="paused",p.pausedState="waiting_ready",p.stateDetail=a instanceof Error?a.message:String(a),(0,n.tu)(k)}return{flow:p}}function q(a){return"string"==typeof a.note&&a.note.trim()?a.note.trim().slice(0,2e3):null}async function r(a,b){if((0,k.T)(a.id,b.n,b.reviewerPid??null),"pane"===a.reviewerMode)try{let a=b.reviewerPane;if(a){let b=await (0,i.RZ)(a.paneId);b&&b.windowName===a.windowName&&!(0,h.g2)(b.command)&&await (0,i.VT)(a.paneId)}else if(b.reviewerPath){let a=await (0,g.AB)(b.reviewerPath);null!==a&&await (0,i.VT)(a)}}catch{}}async function s(a){let b=(0,n.mL)(),c=b.find(b=>b.id===a);if(!c)return{error:"flow not found",status:404};let d=(0,j.Hw)(c);return"reviewing"===c.state&&d?(await r(c,d),d.error="cancelled by user",c.state="needs_decision",c.stateDetail="round cancelled by user",(0,n.tu)(b),{flow:c}):{error:"no reviewer is running for this flow",status:409}}async function t(a){let b=(0,n.mL)(),c=b.find(b=>b.id===a);if(!c)return{error:"flow not found",status:404};let d=(0,j.Hw)(c);return d&&null===d.verdict&&!d.error&&await r(c,d),c.state="closed",c.closedAt=(0,j.Ec)(),c.stateDetail=null,(0,n.tu)(b),{flow:c}}function u(a,b){let c=(0,n.mL)(),d=c.find(b=>b.id===a);if(!d)return{error:"flow not found",status:404};let e=(0,j.Hw)(d);if("pause"===b.action)"paused"!==d.state&&"closed"!==d.state&&(d.pausedState=d.state,d.state="paused",d.stateDetail="paused by user");else if("resume"===b.action)"paused"===d.state&&(d.state=d.pausedState&&"paused"!==d.pausedState?d.pausedState:"waiting_ready",d.pausedState=null,d.stateDetail=null);else if("set-mode"===b.action){if("auto"!==b.mode&&"manual"!==b.mode)return{error:"mode must be auto or manual",status:400};d.mode=b.mode}else if("advance"===b.action){if("waiting_ready"===d.state)d.rounds.push((0,j.xz)(d,"button",q(b))),d.state="manual"===d.mode?"spawn_pending":"spawning";else if("spawn_pending"===d.state)d.state="spawning";else{if("relay_pending"!==d.state)return{error:"flow cannot advance from its current state",status:409};d.state="relaying"}d.stateDetail=null}else if("retry-round"===b.action){if("needs_decision"!==d.state||!e)return{error:"flow cannot retry from its current state",status:409};(0,k.T)(d.id,e.n,e.reviewerPid??null),Object.assign(e,{reviewerPath:null,sessionId:null,reviewerPid:null,reviewerPane:null,findingsPath:null,verdict:null,findingsCount:null,readyNote:q(b)??e.readyNote,startedAt:(0,j.Ec)(),spawnStartedAt:null,relayStartedAt:null,reviewedAt:null,relayedAt:null,error:null}),d.state="manual"===d.mode?"spawn_pending":"spawning",d.stateDetail=null}else if("extend"===b.action){let a=Number.isInteger(b.rounds)&&b.rounds&&b.rounds>0?Math.min(b.rounds,20):1;d.roundLimit>0&&(d.roundLimit+=a),"needs_decision"===d.state&&(d.state="waiting_ready",d.stateDetail=null)}else if("set-round-limit"===b.action){let a=b.rounds;if(!Number.isInteger(a)||void 0===a||a<0||a>50)return{error:"rounds must be an integer 0–50 (0 = unlimited)",status:400};d.roundLimit=0===a?0:Math.max(a,d.rounds.length),"needs_decision"===d.state&&"round limit reached"===d.stateDetail&&(0===d.roundLimit||d.roundLimit>d.rounds.length)&&(d.state="waiting_ready",d.stateDetail=null)}else if("another-round"===b.action){if("done_comment"!==d.state)return{error:"flow is not waiting for another round",status:409};d.closedAt=null,d.state="waiting_ready",d.stateDetail=null}return e&&"spawning"===d.state&&(e.error=null),(0,n.tu)(c),{flow:d}}},41017:(a,b,c)=>{c.d(b,{zN:()=>X,WD:()=>Y,w1:()=>W,u1:()=>U});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(14509),k=c(16089),l=c(38905),m=c(25750),n=c(98590),o=c(26474),p=c(70107),q=c(27359),r=c(64747),s=c(31421),t=c(23921),u=c(46825);let v=(a,b,c)=>{let d=(0,s.spawnSync)(a,b,{cwd:c,encoding:"utf8"});return d.error?{code:null,stdout:"",stderr:d.error.message}:{code:d.status,stdout:d.stdout??"",stderr:d.stderr??""}};function w(a,b){let c=(b.stderr||b.stdout||"no output").trim();return{ok:!1,error:`${a}: ${c}`}}function x(a){let b=a.template.setup;if(!b)return{pid:null,error:"workflow has no setup command"};let c=(0,u.VO)(a.id);g().mkdirSync(i().dirname(c),{recursive:!0}),g().rmSync(c,{force:!0});let d=g().openSync((0,u._F)(a.id),"w"),e=g().openSync((0,u.RK)(a.id),"w");try{let f=(0,s.spawn)("sh",["-c",'sh -c "$LLV_SETUP_CMD"; printf \'%s\' "$?" > "$LLV_SETUP_EXIT"'],{cwd:a.worktreeDir,env:{...process.env,LLV_SETUP_CMD:b,LLV_SETUP_EXIT:c},detached:!0,stdio:["ignore",d,e]});return f.unref(),{pid:f.pid??null}}catch(a){return{pid:null,error:a instanceof Error?a.message:String(a)}}finally{g().closeSync(d),g().closeSync(e)}}function y(a){try{return g().readFileSync(a,"utf8")}catch{return""}}function z(a,b=Date.now()){let c=y((0,u.VO)(a.id)).trim();if(""!==c){if("0"===c)return{status:"done",detail:""};let b=y((0,u.RK)(a.id)).trim().split("\n").slice(-3).join("\n");return{status:"failed",detail:`setup exited with code ${c}${b?`: ${b}`:""}`}}if(null!=a.setupPid&&(0,t.pl)(a.setupPid))return{status:"running",detail:""};let d=function(a,b){try{return b-g().statSync(a).mtimeMs}catch{return null}}((0,u._F)(a.id),b);return null!==d&&d<3e3?{status:"running",detail:""}:{status:"failed",detail:"setup was interrupted before it finished"}}function A(a){let b=a.task.split("\n").map(a=>a.trim()).find(Boolean)??a.name;return b.length>72?b.slice(0,69)+"…":b}function B(a,b){let c=[];for(let d of a.stageRuns){if(d.index>=b||!d.doneAt)continue;let e=a.template.stages[d.index],f=e?.kind==="implement"?e.scope:`stage ${d.index+1}`;c.push(`- Stage ${d.index+1} (${f}): ${d.doneNote||"done, no note left"}`)}return c.length?["Notes from the stages already finished in this worktree:",...c,""]:[]}function C(a){return a.template.verify?[`Before declaring the stage done, verify your work: run \`${a.template.verify}\` and get it green.`]:["Before declaring the stage done, verify your work with the project's own build/test commands."]}let D=new Set(["approved","closed"]),E=new Set(["needs_decision","paused"]),F=/^STAGE_DONE:\s*(.*)$/m;function G(){return{exec:v,startSetup:x,setupStatus:z,spawnAgent:async(a,b,c)=>{let d=(0,j.lV)(a.engine,b,{model:a.model,effort:a.effort}),e=await (0,r.Tk)(d,c);return{paneId:e.paneId,transcript:d.transcript??null,panePid:e.panePid??null}},paneAgentAlive:async a=>{let b=await (0,r.RZ)(a);return null!==b&&!(0,q.g2)(b.command)},headCwd:a=>(0,k.tX)(a),lastMessage:m.if,createFlow:l._p,advanceFlow:(a,b)=>void(0,l.n1)(a,{action:"advance",note:b}),closeFlow:l.ni,getFlow:a=>(0,n.mL)().find(b=>b.id===a)??null,findFlowByImplementer:a=>(0,n.mL)().filter(b=>b.implementerPath===a).sort((a,b)=>a.createdAt<b.createdAt?1:-1)[0]??null,projectForCwd:p.hY,linkChild:(a,b)=>{(0,o.A6)(a,b),(0,o.OA)()},now:()=>new Date().toISOString()}}let H=new Set;function I(a,b){return`${a.id}:${b.index}`}function J(a,b){a.pausedState=a.state,a.state="needs_decision",a.stateDetail=b}function K(a){return a.stageRuns[a.stageIndex]??null}function L(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function M(a,b){for(let c=b-1;c>=0;c-=1){let b=a.stageRuns[c];if(b?.agentPath)return b.agentPath}return a.srcPath??null}function N(a){a.stageIndex+=1;let b=a.template.stages[a.stageIndex];a.state=b?.kind==="review-loop"?"reviewing":"implementing",a.stateDetail=null}async function O(a,b,c,d,e,f,g){if(!b.startedAt){b.startedAt=f.now(),H.add(I(a,b)),g();try{let e=await f.spawnAgent(c,a.worktreeDir,d);if(b.paneId=e.paneId,e.transcript){b.agentPath=e.transcript;let c=M(a,b.index);c&&f.linkChild(e.transcript,c)}}catch(b){J(a,b instanceof Error?b.message:String(b))}return"spawning"}if(!b.paneId&&!H.has(I(a,b)))return J(a,"stage agent spawn was interrupted by a restart"),"spawning";if(!b.agentPath){let d,g,h,j=(d=L(b.startedAt)/1e3-5,g=function(a){let b=new Set;for(let c of a.stageRuns)c.agentPath&&b.add(c.agentPath);return a.fixerPath&&b.add(a.fixerPath),b}(a),h=e.filter(b=>b.engine===c.engine&&("claude-projects"===b.root||"codex-sessions"===b.root)&&!b.path.includes(i().sep+"subagents"+i().sep)&&b.mtime>=d&&!g.has(b.path)&&f.headCwd(b.path)===a.worktreeDir).sort((a,b)=>b.mtime-a.mtime)[0],h?.path??null);if(j){b.agentPath=j;let c=M(a,b.index);return c&&f.linkChild(j,c),"ready"}return b.paneId&&!await f.paneAgentAlive(b.paneId)&&J(a,"stage agent died before its transcript appeared"),"waiting"}return"ready"}async function P(a,b,c){if(!a.baseRef){let d=function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return w("resolving the repo branch",c);let d=c.stdout.trim();if(!d||"HEAD"===d)return{ok:!1,error:"the repo checkout is detached; a workflow needs a branch to target"};let e=b("git",["worktree","add","-b",a.branch,a.worktreeDir,"HEAD"],a.repoDir);if(0!==e.code){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==c.code||c.stdout.trim()!==a.branch)return w("git worktree add",e)}let f=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==f.code)return w("resolving the workflow base ref",f);let g=f.stdout.trim();return g?{ok:!0,baseBranch:d,baseRef:g}:{ok:!1,error:"git returned an empty base ref"}}(a,b.exec);if(!d.ok)return void J(a,d.error);a.baseBranch=d.baseBranch,a.baseRef=d.baseRef,c()}if(a.template.setup){if(null==a.setupPid&&"done"!==b.setupStatus(a).status){let c=b.startSetup(a);return null==c.pid?void J(a,c.error??"setup failed to start"):void(a.setupPid=c.pid)}let c=b.setupStatus(a);if("running"===c.status)return;if("failed"===c.status)return void J(a,c.detail)}a.state="implementing",a.stateDetail=null}async function Q(a,b,c,d,e){var f,g;let h,i,j,k=K(a),l=(f=a.stageIndex,h=a.template.stages[f],h?.kind==="implement"?h.agent:h?.kind==="review-loop"?h.fixer:null);if(!k||!l)return void J(a,"stage index points outside the template");if(k.doneAt){"auto"===a.mode&&N(a);return}if("ready"!==await O(a,k,l,(g=a.stageIndex,i=a.template.stages[g],j=i?.kind==="implement"?i.scope:"",[`You are stage ${g+1} of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",`Your scope for this stage: ${j}`,"Stay inside that scope — other stages own the rest of the work.","",...B(a,g),...C(a),"Commit your work in this worktree; later stages and the final PR build on your commits.","","When the stage is complete, end your final assistant message with a line that starts exactly with:","STAGE_DONE: <one-line note for the next stage>","Do not print the STAGE_DONE marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the stage is actually complete. The note travels to the next stage's kickoff, so state where the contract lives and what the next stage should build on."].join("\n")),b,d,e))return;let m=c.get(k.agentPath);if(!m)return;let n=function(a,b,c){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let d=c.lastMessage(b);return!d||d.ts<=L(a.startedAt)?null:d.text.match(F)?.[1]?.trim()??null}(k,m,d);if(null!==n){k.doneAt=d.now(),k.doneNote=n||null,"auto"===a.mode&&N(a);return}k.paneId&&!await d.paneAgentAlive(k.paneId)&&J(a,"stage agent pane died before STAGE_DONE")}async function R(a,b,c,d){let e,f,g=K(a),h=(e=a.template.stages.at(-1),e?.kind==="review-loop"?e:null);if(!g||!h)return void J(a,"the template has no review-loop stage");if(g.doneAt){"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}if("ready"!==await O(a,g,h.fixer,(f=a.template.stages.length-1,[`You are the fixer of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",...B(a,f),"The implementation stages above are finished. A review loop starts now: a fresh reviewer examines the full workflow diff each round and its findings arrive here as messages.","","For each finding, apply the fix or argue against it. Respond to every finding with:","FIXED","or","REJECTED — <reason>","Give concrete arguments for rejections because the next reviewer is fresh and blind to previous discussion.","",...C(a),"Commit the fixes you apply. When every finding is addressed and the work is reviewable again, end your final assistant message with a line that starts exactly with:","REVIEW_READY: <one-line note>","Do not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only after addressing a round's findings."].join("\n")),b,c,d))return;if(a.fixerPath||(a.fixerPath=g.agentPath),!a.flowId){let e=c.findFlowByImplementer(a.fixerPath);if(e){a.flowId=e.id;return}let f=await c.createFlow({implementerPath:a.fixerPath,roles:{implementer:h.fixer,reviewer:h.reviewer},baseMode:"head",baseRef:a.baseRef,mode:a.mode,reviewerMode:h.reviewerMode,roundLimit:h.roundLimit},b);return f.flow?(a.flowId=f.flow.id,d(),void c.advanceFlow(a.flowId,`Workflow "${a.name}": review the full diff from the captured base ref.`)):void J(a,`creating the review flow failed: ${f.error??"unknown error"}`)}let i=c.getFlow(a.flowId);if(!i)return void J(a,"the embedded review flow record disappeared");if("approved"===i.state){g.doneAt=c.now(),g.doneNote=`review approved after ${i.rounds.length} round(s)`,"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}"done_comment"===i.state?J(a,"review ended with a COMMENT verdict"):"needs_decision"===i.state?J(a,`review loop needs a decision: ${i.stateDetail??"unknown reason"}`):"closed"===i.state&&J(a,"the embedded review flow was closed")}async function S(a,b,c,d,e){let f=JSON.stringify(a);if("provisioning"===a.state)await P(a,d,e);else if("implementing"===a.state)await Q(a,b,c,d,e);else if("reviewing"===a.state)await R(a,b,d,e);else{var g;let b,c,e,f;"finishing"===a.state&&(b=a.flowId?d.getFlow(a.flowId):null,(f=function(a,b,c){let d=c("git",["status","--porcelain"],a.worktreeDir);if(0!==d.code)return w("checking the worktree state",d);let e=d.stdout.split("\n").filter(a=>a.trim());if(e.length){let a=e.slice(0,3).map(a=>a.slice(3).trim()||a.trim()),b=e.length>a.length?`, +${e.length-a.length} more`:"";return{ok:!1,error:`the worktree has uncommitted changes (${a.join(", ")}${b}) — commit them, then retry the finish`}}return"merge"===a.template.finish?function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return w("resolving the repo branch",c);let d=c.stdout.trim();if(d!==a.baseBranch)return{ok:!1,error:`the repo checkout is on ${d}; check out ${a.baseBranch} before merging`};let e=b("git",["merge","--no-ff",a.branch,"-m",`Merge ${a.branch}: ${A(a)}`],a.repoDir);return 0!==e.code?(b("git",["merge","--abort"],a.repoDir),w("git merge",e)):{ok:!0,prUrl:null}}(a,c):function(a,b,c){let d=c("git",["push","-u","origin",a.branch],a.worktreeDir);if(0!==d.code)return w("git push",d);let e=c("gh",["pr","create","--title",A(a),"--body",b,"--base",a.baseBranch,"--head",a.branch],a.worktreeDir);if(0===e.code){var f;return{ok:!0,prUrl:(f=e.stdout,f.match(/https:\/\/\S+\/pull\/\d+/)?.[0]??null)}}if(/already exists/i.test(e.stderr)){let b=c("gh",["pr","view",a.branch,"--json","url","--jq",".url"],a.worktreeDir);if(0===b.code&&b.stdout.trim())return{ok:!0,prUrl:b.stdout.trim()}}return w("gh pr create",e)}(a,b,c)}(a,(g=b?.rounds??[],c=a.stageRuns.filter(a=>a.doneAt).map(b=>{let c=a.template.stages[b.index],d=c?.kind==="implement"?c.scope.split(/[.:\n]/)[0]:"review loop";return`- Stage ${b.index+1} (${d}): ${b.doneNote||"done"}`}),e=g.map(a=>`- Round ${a.n}: ${a.verdict??"no verdict"}${null!=a.findingsCount?` (${a.findingsCount} findings)`:""}`),["## Task","",a.task.trim(),"","## Stages","",...c.length?c:["- (no stage notes recorded)"],"","## Review rounds","",...e.length?e:["- (no review rounds recorded)"],"","\uD83E\uDD16 Generated with [Claude Code](https://claude.com/claude-code)"].join("\n")),d.exec)).ok?(a.prUrl=f.prUrl,a.state="approved",a.stateDetail=null,a.closedAt=d.now()):J(a,f.error))}return JSON.stringify(a)!==f}let T=globalThis;async function U(a,b=G()){if(T.__llvWorkflowTick)return{workflows:(0,u.Ny)(),changed:!1};T.__llvWorkflowTick=!0;try{let c=(0,u.Ny)(),d=new Map(a.map(a=>[a.path,a])),e=!1;for(let f of c)!(D.has(f.state)||E.has(f.state))&&(await S(f,a,d,b,()=>(0,u.co)(c))&&(e=!0),e&&(0,u.co)(c));return e&&(0,u.co)(c),{workflows:c,changed:e}}finally{T.__llvWorkflowTick=!1}}function V(a){return"needs_decision"===a.state||"paused"===a.state?a.pausedState??"provisioning":a.state}async function W(a,b,c=G()){let d=(0,u.Ny)(),e=d.find(b=>b.id===a);if(!e)return{error:"workflow not found",status:404};if("pause"===b.action)"paused"===e.state||D.has(e.state)||("needs_decision"!==e.state&&(e.pausedState=e.state),e.state="paused",e.stateDetail="paused by user");else if("resume"===b.action)("paused"===e.state||"needs_decision"===e.state)&&(e.state=e.pausedState&&!E.has(e.pausedState)?e.pausedState:"provisioning",e.pausedState=null,e.stateDetail=null);else if("advance"===b.action){let a=V(e);if(D.has(e.state)||"finishing"===a)return{error:"workflow cannot advance from its current state",status:409};if("provisioning"===a){if(!e.baseRef)return{error:"workflow has no worktree yet — retry provisioning instead",status:409};e.state="implementing"}else{let d=K(e);if(!d)return{error:"workflow has no current stage",status:409};!d.doneAt&&(d.doneAt=c.now(),d.doneNote=("string"==typeof b.note&&b.note.trim()?b.note.trim().slice(0,2e3):null)??d.doneNote??"advanced manually");if("reviewing"===a){let a=e.flowId?c.getFlow(e.flowId):null;a&&null===a.closedAt&&"closed"!==a.state&&await c.closeFlow(a.id),e.state="finishing"}else N(e)}e.pausedState=null,e.stateDetail=null}else if("retry-stage"===b.action){let a=V(e);if(D.has(e.state))return{error:"workflow is finished",status:409};if("provisioning"===a){e.setupPid=null;try{g().rmSync((0,u.VO)(e.id),{force:!0})}catch{}}else if("implementing"===a||"reviewing"===a){let b=K(e);if(b&&Object.assign(b,{agentPath:null,paneId:null,startedAt:null,doneAt:null,doneNote:null}),"reviewing"===a){let a=e.flowId?c.getFlow(e.flowId):null;a&&null===a.closedAt&&"closed"!==a.state&&await c.closeFlow(a.id),e.flowId=null,e.fixerPath=null}}e.state=a,e.pausedState=null,e.stateDetail=null}else if("close"===b.action){let a=e.flowId?c.getFlow(e.flowId):null;a&&null===a.closedAt&&"closed"!==a.state&&await c.closeFlow(a.id),e.state="closed",e.pausedState=null,e.stateDetail=null,e.closedAt=c.now()}return(0,u.co)(d),{workflow:e}}function X(a,b=G()){let c,d="string"==typeof a.task?a.task.trim():"";if(!d)return{error:"task brief is required",status:400};let f="string"==typeof a.repoDir?a.repoDir.trim():"";if(!f)return{error:"repoDir is required",status:400};if(0!==b.exec("git",["rev-parse","--git-dir"],f).code)return{error:`not a git repository: ${f}`,status:400};if(a.template){let b=(0,u.K8)().find(b=>b.name===a.template);if(!b)return{error:`unknown workflow template: ${a.template}`,status:400};c=b}else{let b=(0,u.Fl)(a.stages);if("error"in b)return{error:b.error,status:400};c={name:"ad-hoc",stages:b.stages,finish:"merge"===a.finish?"merge":"pr",..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}let g=(0,u.aL)({id:e().randomUUID().slice(0,8),name:c.name,task:d,project:b.projectForCwd(f)??i().basename(f),repoDir:f,template:c,mode:"manual"===a.mode?"manual":"auto",now:b.now()});"string"==typeof a.src&&a.src.trim()&&(g.srcPath=a.src.trim());let h=(0,u.Ny)();return h.push(g),(0,u.co)(h),{workflow:g}}function Y(){return{workflows:(0,u.Ny)(),templates:(0,u.K8)()}}},46825:(a,b,c)=>{c.d(b,{Fl:()=>r,K8:()=>w,Ny:()=>u,RK:()=>A,VO:()=>B,_F:()=>z,aL:()=>x,co:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(98590);let j=(0,h.BQ)("workflows.json"),k=(0,h.BQ)("workflow-templates.json"),l=(0,h.BQ)("workflows"),m={engine:"codex",model:null,effort:"low"},n=[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:{engine:"codex",model:null,effort:"high"},scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:{engine:"claude",model:"fable",effort:null},scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:{engine:"codex",model:null,effort:"xhigh"},fixer:{...m},roundLimit:5,reviewerMode:"headless"}]}];function o(a,b){(0,i.Yj)(a,JSON.stringify(b,null,2)+"\n")}function p(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch{return null}}function q(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function r(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=q(a.agent))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=q(a.reviewer);return c?{kind:"review-loop",reviewer:c,fixer:(b=q(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:{...m},roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}function s(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=r(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}function t(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==s(a.template)}function u(){let a=p(j);return(Array.isArray(a?.workflows)?a.workflows.filter(t):[]).map(a=>({...a,project:a.project??"",pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,prUrl:a.prUrl??null}))}function v(a){o(j,{workflows:a})}function w(){let a=p(k),b=Array.isArray(a?.templates)?a.templates.map(s).filter(a=>null!==a):[];return b.length>0?b:(o(k,{templates:n}),n)}function x(a){let b=g().basename(a.repoDir);return{id:a.id,name:a.name,task:a.task,project:a.project,repoDir:a.repoDir,worktreeDir:g().join(g().dirname(a.repoDir),`${b}-wf-${a.id}`),branch:`wf/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`,baseBranch:"",baseRef:"",template:JSON.parse(JSON.stringify(a.template)),stageRuns:a.template.stages.map((a,b)=>({index:b,agentPath:null,paneId:null,startedAt:null,doneAt:null,doneNote:null})),stageIndex:0,flowId:null,fixerPath:null,state:"provisioning",pausedState:null,stateDetail:null,mode:a.mode,setupPid:null,srcPath:null,prUrl:null,createdAt:a.now,closedAt:null}}function y(a){return g().join(l,a)}function z(a){return g().join(y(a),"setup-stdout.log")}function A(a){return g().join(y(a),"setup-stderr.log")}function B(a){return g().join(y(a),"setup-exit")}},51906:(a,b,c)=>{c.d(b,{IL:()=>v,T:()=>w,gn:()=>t});var d=c(31421),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(14509),l=c(16089),m=c(98590);let n=new Map;function o(a,b){return`${a}:${b}`}function p(a){if(!a||!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}function q(a,b=3e3){let c=b=>{try{process.kill(-a,b)}catch{try{process.kill(a,b)}catch{}}};c("SIGTERM"),setTimeout(()=>{p(a)&&c("SIGKILL")},b).unref()}let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=new Set(["session_id","sessionId","thread_id","threadId","rollout_id"]);function t(a,b,c,e,g,i=18e5){let p,r=o(a,b);if(n.has(r))return{pid:null,sessionId:null,reviewerPath:null};let s=(0,m.WJ)(a,b);h().mkdirSync(j().dirname(s),{recursive:!0});let u=function(a,b,c,d){if("claude"===a.engine){let c=f().randomUUID(),e=["-p",b,"--permission-mode","plan","--session-id",c,"--disallowedTools","Edit,Write,NotebookEdit"];return a.model&&e.push("--model",a.model),a.effort&&e.push("--effort",a.effort),{command:(0,k.uX)("claude"),args:e,outputPath:null,sessionId:c,reviewerPath:(0,l.eV)(d,c)}}let e=["exec",b,"--json","--output-last-message",c,"--sandbox","read-only"];return a.model&&e.push("-m",a.model),a.effort&&e.push("-c",`model_reasoning_effort=${a.effort}`),{command:(0,k.uX)("codex"),args:e,outputPath:c,sessionId:null,reviewerPath:null}}(c,g,s,e),v=h().openSync((0,m.Ml)(a,b),"w"),w=h().openSync((0,m.NO)(a,b),"w");try{p=(0,d.spawn)(u.command,u.args,{cwd:e,env:process.env,detached:!0,stdio:["ignore",v,w]})}finally{h().closeSync(v),h().closeSync(w)}p.unref();let x={child:p,startedAt:Date.now(),exit:null,timer:setTimeout(()=>{!x.exit&&p.pid&&q(p.pid)},i)};return x.timer.unref(),n.set(r,x),p.on("error",()=>{clearTimeout(x.timer),x.exit={code:null,signal:null}}),p.on("close",(a,b)=>{clearTimeout(x.timer),x.exit={code:a,signal:b}}),{pid:p.pid??null,sessionId:u.sessionId,reviewerPath:u.reviewerPath}}function u(a){if(!a)return"";try{return h().readFileSync(a,"utf8")}catch{return""}}function v(a,b,c,d,e=18e5){let f=n.get(o(a,b)),g=u((0,m.Ml)(a,b)),h=f?.child.pid??c.reviewerPid??null;if(!f&&null===h&&!g)return null;let i=u((0,m.NO)(a,b)),j=function(a){let b=null,c="";for(let d of a.split("\n")){let a=d.trim();if(a.startsWith("{"))try{let d=JSON.parse(a);b||(b=function a(b,c=0){if(!b||"object"!=typeof b||c>4)return null;for(let[d,e]of Object.entries(b)){if(s.has(d)&&"string"==typeof e&&r.test(e))return e;let b=a(e,c+1);if(b)return b}return null}(d));let e=function(a){let b=a.item;if(b&&("agent_message"===b.type||"agent_message"===b.item_type)&&"string"==typeof b.text)return b.text;let c=a.msg;return c?.type==="agent_message"&&"string"==typeof c.message?c.message:null}(d);e&&(c=e)}catch{}}return{sessionId:b,lastAgentMessage:c}}(g),k=f?.startedAt??Date.parse(c.spawnStartedAt??""),l=Number.isFinite(k)?Date.now()-k:0;if(f?null===f.exit&&p(h):p(h))return!f&&l>=e&&h&&q(h),{status:"running",stdout:g,stderr:i,finalOutput:"",sessionId:j.sessionId,code:null,signal:null};let t=u("codex"===d?(0,m.WJ)(a,b):null).trim()||j.lastAgentMessage||("claude"===d?g.trim():""),w=f?.exit??null;return{status:w?.code===0||t?"done":!t&&l>=e?"timeout":"failed",stdout:g,stderr:i,finalOutput:t,sessionId:j.sessionId,code:w?.code??null,signal:w?.signal??null}}function w(a,b,c){let e=o(a,b),f=n.get(e);n.delete(e);let g=f?.child.pid??c??null;if(f&&clearTimeout(f.timer),g){p(g)&&q(g);return}!function(a){let b=(0,d.spawnSync)("ps",["-eo","pid=,args="],{encoding:"utf8"});if(!b.error&&0===b.status)for(let c of b.stdout.split("\n")){if(!c.includes(a)||!/\bcodex\b/.test(c))continue;let b=/^\s*(\d+)\s+/.exec(c),d=b?Number(b[1]):0;Number.isInteger(d)&&!(d<=0)&&d!==process.pid&&q(d)}}((0,m.WJ)(a,b))}},52509:(a,b,c)=>{c.d(b,{E:()=>e});let d=globalThis;function e(a){return d.__llvCaches??={},d.__llvCaches[a]??=new Map,d.__llvCaches[a]}},58152:(a,b,c)=>{c.d(b,{BL:()=>e});let d={claude:["low","medium","high","xhigh","max"],codex:["low","medium","high","xhigh"]};function e(a,b){let c="string"==typeof b.effort?b.effort.trim():"";return c&&!d[a].includes(c)?{effort:null,fast:null,error:`effort for ${a} must be one of: ${d[a].join(", ")}`}:{effort:c||null,fast:"codex"===a&&"boolean"==typeof b.fast?b.fast:null}}},59680:(a,b,c)=>{function d(){return"You are now in an implement-review loop controlled by the local log viewer.\n\nWork normally in this long-lived implementer session. When the work is ready for a fresh independent review, end your final assistant message with a line that starts exactly with:\nREVIEW_READY: <one-line note>\nDo not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the work is actually ready for review.\n\nEvery review round will use a fresh reviewer who sees the full diff from the captured base ref, with no history from earlier rounds. If the reviewer sends findings back, respond to each finding before the next marker using:\nFIXED\nor\nREJECTED — <reason>\n\nGive concrete arguments for rejections because the next reviewer will be fresh and blind to previous discussion."}function e(a,b){return["You are the reviewer in an implement-review loop.\n",`Working directory: ${a.cwd}`,`Review scope: git diff ${a.baseRef}...HEAD plus uncommitted changes in the same working tree.`,b.readyNote?`Ready note: ${b.readyNote}`:"Ready note: none provided.","\nRead-only requirement: inspect files and commands as needed, but do not edit files, write notebooks, commit, stage, or mutate the working tree.\n\nOutput exactly this format:\nVERDICT: APPROVE | REQUEST_CHANGES | COMMENT\n\nThen write findings in Markdown. For each finding include severity, file, line, title, and explanation. Use REQUEST_CHANGES for required fixes, COMMENT for non-blocking notes, and APPROVE only when no blocking issues remain."].join("\n")}function f(a,b){return["Review round findings are below. Address every finding before the next review marker.\n",b.trim(),"\nFor each finding, respond with FIXED or REJECTED — <reason>. When the work is reviewable again, end your final assistant message with:\nREVIEW_READY: <one-line note>"].join("\n")}c.d(b,{SB:()=>d,i0:()=>f,qu:()=>e})},59683:(a,b,c)=>{let d;c.d(b,{B:()=>B});var e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(70547);let j="/proc";function k(a){try{return f().readFileSync(h().join(j,String(a),"cmdline"),"utf8").split("\0").filter(Boolean)}catch{return[]}}function l(a){try{return f().readlinkSync(h().join(j,String(a),"cwd"))}catch{return null}}function m(a){let b;try{b=f().readFileSync(h().join(j,String(a),"stat"),"utf8")}catch{return null}return b.slice(b.lastIndexOf(")")+2).trim().split(/\s+/)}function n(a){try{return(128&f().lstatSync(a).mode)!=0}catch{return!1}}function o(a){let b;try{b=f().readdirSync(j,{withFileTypes:!0})}catch{return}for(let c of b){let b;if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let d=Number(c.name),e=h().join(j,c.name,"fd");try{b=f().readdirSync(e,{withFileTypes:!0})}catch{continue}for(let c of b){let b,g=h().join(e,c.name);try{b=f().readlinkSync(g)}catch{continue}a(b,d,()=>n(g))}}}let p={name:"linux",pidAlive:function(a){return Number.isInteger(a)&&a>0&&f().existsSync(h().join(j,String(a)))},readArgv:k,readCwd:l,readPpid:function(a){let b=m(a),c=b?Number(b[1]):NaN;return Number.isInteger(c)&&c>1?c:null},readEnvVar:function(a,b){let c;try{c=f().readFileSync(h().join(j,String(a),"environ"),"utf8")}catch{return null}let d=b+"=",e=null;for(let a of c.split("\0"))a.startsWith(d)&&(e=a.slice(d.length));return e},listProcesses:function(){let a,b=[];try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name);b.push({pid:a,argv:k(a),cwd:l(a),tty:function(a){let b=m(a),c=b?Number(b[4]):NaN;return Number.isInteger(c)&&c>0?c:0}(a)})}return b},systemMemory:function(){try{return(0,i.NW)(f().readFileSync(h().join(j,"meminfo"),"utf8"))}catch{return null}},processMemory:function(a){let b=new Map;for(let c of a)if(Number.isInteger(c)&&!(c<=0))try{b.set(c,(0,i.sW)(f().readFileSync(h().join(j,String(c),"status"),"utf8")))}catch{}return b},ppidMap:function(){let a,b=new Map;try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name),d=m(a),e=d?Number(d[1]):NaN;Number.isInteger(e)&&e>0&&b.set(a,e)}return b},scanFdTargetsUnder:function(a,b){o(b)},scanFdTargetsFor:function(a,b){o(b)},pidWritesPath:function(a,b){let c,d;try{c=f().realpathSync(b)}catch{c=null}let e=h().join(j,String(a),"fd");try{d=f().readdirSync(e,{withFileTypes:!0})}catch{return!1}for(let a of d){let d,g=h().join(e,a.name);try{d=f().readlinkSync(g)}catch{continue}if((d===b||d===c)&&n(g))return!0}return!1},pidHoldsPath:function(a,b){let c;try{c=f().readdirSync(h().join(j,String(a),"fd"),{withFileTypes:!0})}catch{return!1}for(let d of c)try{if(f().readlinkSync(h().join(j,String(a),"fd",d.name))===b)return!0}catch{continue}return!1}};var q=c(31421),r=c(48161),s=c.n(r);function t(a,b){let c=(0,q.spawnSync)(a,b,{encoding:"utf8",maxBuffer:0x1000000,timeout:1e4});return c.error||"string"!=typeof c.stdout?"":c.stdout}let u=new Map,v=1,w=/^\s*(\d+)\s+(\d+)\s+(\S+)\s+(.*)$/;function x(a,b){let c=0,d="";for(let e of a.split("\n")){if(!e)continue;let a=e[0],f=e.slice(1);if("p"===a)c=Number(f),d="";else if("f"===a)d="";else if("a"===a)d=f;else if("n"===a&&c>0&&f){let a="w"===d||"u"===d;b(f,c,()=>a)}}}let y=null;function z(){let a=Date.now();if(y&&a-y.at<5e3)return y.byPid;let b=function(a){let b=new Map;for(let c of a.split("\n")){let a=w.exec(c);if(!a)continue;let d=Number(a[1]),e=Number(a[2]),f=(a[4]??"").trim().split(/\s+/).filter(Boolean);b.set(d,{ppid:Number.isInteger(e)&&e>1?e:null,tty:function(a){if(!a||"?"===a||"??"===a||"-"===a)return 0;let b=u.get(a);return void 0===b&&(b=v,v+=1,u.set(a,b)),b}(a[3]??""),argv:f})}return b}(t("ps",["-axo","pid=,ppid=,tty=,args="])),c=function(a){let b=new Map,c=0;for(let d of a.split("\n")){if(!d)continue;let a=d[0],e=d.slice(1);"p"===a?c=Number(e):"n"===a&&c>0&&b.set(c,e)}return b}(t("lsof",["-w","-d","cwd","-Fpn"])),d=new Map;for(let[a,e]of b)d.set(a,{argv:e.argv,ppid:e.ppid,tty:e.tty,cwd:c.get(a)??null});return y={at:a,byPid:d},d}let A={name:"portable",pidAlive:function(a){if(!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}},readArgv:function(a){return z().get(a)?.argv??[]},readCwd:function(a){return z().get(a)?.cwd??null},readPpid:function(a){return z().get(a)?.ppid??null},readEnvVar:function(){return null},listProcesses:function(){let a=[];for(let[b,c]of z())a.push({pid:b,argv:c.argv,cwd:c.cwd,tty:c.tty});return a},systemMemory:function(){let a=s().totalmem(),b=(0,i.Lc)(t("vm_stat",[]));if(!a||null===b)return null;let c=(0,i.yh)(t("sysctl",["-n","vm.swapusage"]));return{ramTotal:a,ramAvailable:Math.min(b,a),swapTotal:c?.swapTotal??0,swapUsed:c?.swapUsed??0}},processMemory:function(a){let b=new Set;for(let c of a)Number.isInteger(c)&&c>0&&b.add(c);let c=new Map;if(0===b.size)return c;for(let[a,d]of(0,i.CT)(t("ps",["-axo","pid=,rss="])))b.has(a)&&c.set(a,{rssBytes:d,swapBytes:0});return c},ppidMap:function(){let a=new Map;for(let[b,c]of z())null!==c.ppid&&a.set(b,c.ppid);return a},scanFdTargetsUnder:function(a,b){a&&f().existsSync(a)&&x(t("lsof",["-w","+D",a,"-Fpfan"]),b)},scanFdTargetsFor:function(a,b){let c=[...new Set(a.filter(Boolean))];0!==c.length&&x(t("lsof",["-w","-Fpfan","--",...c]),b)},pidWritesPath:function(a,b){let c=!1;return x(t("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),(a,b,d)=>{d()&&(c=!0)}),c},pidHoldsPath:function(a,b){let c=!1;return x(t("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),()=>{c=!0}),c}},B="portable"===(d=process.env.VIEWER_PROC_BACKEND)?A:"linux"===d||"linux"===process.platform?p:A},60641:(a,b,c)=>{function d(){return new Date().toISOString()}function e(a,b){return`Task #${a.slice(0,8)}: ${b}`}c.d(b,{Ec:()=>d,F7:()=>e})},64747:(a,b,c)=>{c.d(b,{Am:()=>aa,Fu:()=>t,IJ:()=>_,HZ:()=>T,VT:()=>I,aI:()=>y,mB:()=>S,RZ:()=>R,m7:()=>w,zX:()=>H,ZB:()=>Y,I6:()=>A,u1:()=>x,EW:()=>G,V1:()=>Z,oF:()=>E,KY:()=>V,Tk:()=>$,WS:()=>C});var d=c(31421),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(91724);let l=(0,k.BQ)("events.ndjson");function m(a,b){try{h().mkdirSync(j().dirname(l),{recursive:!0});try{h().statSync(l).size>4194304&&h().renameSync(l,l+".1")}catch{}let c={ts:new Date().toISOString(),action:a,...b};h().appendFileSync(l,JSON.stringify(c)+"\n","utf8")}catch{}}let n={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/webp":"webp"};var o=c(14289),p=c(16462),q=c(23921),r=c(89333),s=c(27359);function t(a){let b=Array.isArray(a.images)?a.images:a.image&&"object"==typeof a.image?[a.image]:[],c=[];for(let a of b){let b=a&&"object"==typeof a?a.base64:void 0,d=a&&"object"==typeof a?a.mime:void 0;if("string"!=typeof b||!b)return{images:[],error:{error:"invalid image",status:400}};if(null===(n["string"==typeof d?d:""]??null))return{images:[],error:{error:"unsupported image type",status:415}};if(function(a){if(!a.length)return 0;let b=a.endsWith("==")?2:+!!a.endsWith("=");return Math.floor(3*a.length/4)-b}(b)>0xa00000)return{images:[],error:{error:"image is too large (10 MB limit)",status:413}};c.push({base64:b,mime:d})}return{images:c,error:null}}let u=null;function v(a,b){return new Promise((c,e)=>{let f=(0,d.spawn)("tmux",a,{stdio:["pipe","pipe","pipe"]}),g="",h="";f.stdout.on("data",a=>g+=a.toString("utf8")),f.stderr.on("data",a=>h+=a.toString("utf8")),f.on("error",e),f.on("close",a=>c({code:a,stdout:g,stderr:h})),void 0!==b?f.stdin.end(b):f.stdin.end()})}async function w(a=!1){let b,c=Date.now();if(!a&&u&&c-u.at<12e3)return u.map;let d=new Map;try{b=await v(["list-panes","-a","-F","#{session_name}:#{window_index}.#{pane_index} #{pane_id} #{pane_pid}"])}catch{return u={at:c,map:d},d}if(0===b.code)for(let a of b.stdout.split("\n")){let[b="",c="",e=""]=a.split(" "),f=Number(e.trim());b.trim()&&c.startsWith("%")&&Number.isInteger(f)&&f>0&&d.set(f,{target:b.trim(),paneId:c.trim()})}return u={at:c,map:d},d}async function x(a){if(!Number.isInteger(a)||a<=0)return null;let b=await w();if(0===b.size)return null;let c=new Set,d=a;for(let a=0;a<64&&null!==d&&d>1;a+=1){let a=b.get(d);if(a)return a.target;if(c.has(d)||(0,q.Vt)((0,q.$U)(d)))break;c.add(d),d=(0,q.Ib)(d)}return null}async function y(){let a=new Set;for(let b of(await (0,p.C)()))null!==b.pid&&"running"===b.proc&&(0,q.pl)(b.pid)&&a.add(b.pid);return a}async function z(a){return(await y()).has(a)?x(a):"unknown"}async function A(a,b){if(null!==a){let b=await z(a);if("unknown"!==b&&null!==b)return b}if(b&&(0,r.EG)(b)){let a=await S(b);if(a)return a.display}return null}let B=new Map;async function C(a,b){let c=(B.get(a)??Promise.resolve()).then(b,b);B.set(a,c.catch(()=>void 0));try{return await c}finally{B.get(a)!==c&&B.size>256&&B.clear()}}async function D(a){let b=await X(a);if(null===b)throw Error("tmux pane is unavailable");if((0,s.g2)(b))throw m("gate",{target:a,result:"error",reason:"shell_prompt"}),Error("pane has no agent (plain shell) — message was not sent");for(let b=0;b<3;b+=1){let b=await Y(a);if(null!==(0,s.fm)(b))throw m("gate",{target:a,result:"error",reason:"select_dialog"}),Error("agent is waiting for a choice in the pane — answer before sending a new message");let c=(0,s._1)(b);if(null!==c)throw m("gate",{target:a,result:"error",reason:c}),Error("rate_limit"===c?"agent hit a rate limit — message was not sent":"agent is waiting for confirmation in the pane — answer before sending a new message");let d=(0,s.ye)(b);if(null!==d){m("gate",{target:a,result:"ok",reason:d}),await v(["send-keys","-t",a,"Enter"]),await W(700);continue}return}}async function E(a,b){await C(a,async()=>{try{await D(a),await F(a,b),m("send",{target:a,result:"ok",meta:{bytes:b.length}})}catch(b){throw m("send",{target:a,result:"error",reason:b instanceof Error?b.message:String(b)}),b}})}async function F(a,b){let c=`viewer-${Date.now()}-${Math.floor(1e6*Math.random())}`,d=await v(["load-buffer","-b",c,"-"],Buffer.from(b,"utf8"));if(0!==d.code)throw Error(d.stderr.trim()||"could not load tmux buffer");let e=await v(["paste-buffer","-d","-p","-b",c,"-t",a]);if(0!==e.code)throw Error(e.stderr.trim()||"could not paste text into pane");await W(250);let f=await v(["send-keys","-t",a,"Enter"]);if(0!==f.code)throw Error(f.stderr.trim()||"could not press Enter");let g=b.split("\n").map(a=>a.trim()).find(Boolean)?.slice(0,32)??"";for(let b=0;b<4;b+=1){await W(400);let b=(0,s.dC)(await Y(a));if(!(""!==g&&b.includes(g)||b.includes("[Pasted text")))return;await v(["send-keys","-t",a,"Enter"])}}async function G(a){let b=await v(["send-keys","-t",a,"Escape"]);if(m("interrupt",{target:a,result:0===b.code?"ok":"error",reason:b.stderr.trim()||void 0}),0!==b.code)throw Error(b.stderr.trim()||"could not send Escape")}async function H(a){let b=await v(["display-message","-p","-t",a,"#{pane_pid}"]).catch(()=>null),c=b&&0===b.code?Number(b.stdout.trim()):NaN;return Number.isInteger(c)&&c>0?c:null}async function I(a){let b=await v(["kill-pane","-t",a]);if(m("kill",{target:a,result:0===b.code?"ok":"error",reason:b.stderr.trim()||void 0}),0!==b.code)throw Error(b.stderr.trim()||"could not close tmux pane")}async function J(){let a=await v(["list-clients","-F","#{client_activity} #{client_session}"]).catch(()=>null),b=a=>{let b=null;for(let c of a.split("\n")){let a=c.indexOf(" ");if(a<0)continue;let d=Number(c.slice(0,a)),e=c.slice(a+1).trim();e&&Number.isFinite(d)&&(!b||d>b.at)&&(b={at:d,name:e})}return b?.name??null};if(a&&0===a.code){let c=b(a.stdout);if(c)return c}let c=await v(["list-sessions","-F","#{session_activity} #{session_name}"]).catch(()=>null);if(c&&0===c.code){let a=b(c.stdout);if(a)return a}let d=await v(["new-session","-d","-x","220","-y","50","-s","agents"]);if(0!==d.code&&!/duplicate session/.test(d.stderr))throw Error(d.stderr.trim()||"could not create tmux session");return"agents"}let K=(0,k.BQ)("resume-panes.json"),L=null,M=null;function N(){if(L)return L;L=new Map,M=null;try{var a;let b=(a=JSON.parse(h().readFileSync(K,"utf8")))&&"object"==typeof a&&"panes"in a?{serverPid:"number"==typeof a.serverPid&&Number.isInteger(a.serverPid)?a.serverPid:null,panes:a.panes&&"object"==typeof a.panes?a.panes:{}}:{serverPid:null,panes:a&&"object"==typeof a?a:{}};for(let[a,c]of(M=b.serverPid,Object.entries(b.panes)))c&&"string"==typeof c.paneId&&"string"==typeof c.windowName&&L.set(a,c)}catch{}return L}function O(){if(L)try{h().mkdirSync(j().dirname(K),{recursive:!0});let a={serverPid:M,panes:Object.fromEntries(L)};h().writeFileSync(K,JSON.stringify(a))}catch{}}async function P(){let a=await v(["display-message","-p","#{pid}"]).catch(()=>null),b=a&&0===a.code?Number(a.stdout.trim()):NaN;return Number.isInteger(b)&&b>0?b:null}function Q(a){let b=N();return M!==a&&(b.clear(),M=a,O()),b}async function R(a){let b=await v(["display-message","-p","-t",a,"#{window_name} #{pane_current_command} #{session_name}:#{window_index}.#{pane_index}"]).catch(()=>null),c=b&&0===b.code?b.stdout.trim().split(" "):null;return c&&3===c.length?{windowName:c[0]??"",command:c[1]??"",display:c[2]??a}:null}async function S(a){let b=await P();if(null===b)return null;let c=Q(b),d=c.get(a);if(!d)return null;let e=await R(d.paneId);return!e||e.windowName!==d.windowName||(0,s.g2)(e.command)?(c.delete(a),O(),null):{paneId:d.paneId,display:e.display}}function T(a){N().delete(a)&&O()}let U=new Map;async function V(a,b,c){let d=await S(a);if(d)return await E(d.paneId,c),{target:d.display,spawned:!1};let e=U.get(a);if(e){let a=await e;return await E(a.paneId,c),{target:a.display,spawned:!1}}let f=$(b,c);U.set(a,f);try{let c=await f,d=await P();return null!==d&&(Q(d).set(a,{paneId:c.paneId,windowName:b.windowName}),O()),m("resume",{target:c.display,path:a,cwd:b.cwd,result:"ok"}),{target:c.display,spawned:!0}}catch(c){throw m("resume",{path:a,cwd:b.cwd,result:"error",reason:c instanceof Error?c.message:String(c)}),c}finally{U.delete(a)}}function W(a){return new Promise(b=>setTimeout(b,a))}async function X(a){let b=await v(["display-message","-p","-t",a,"#{pane_current_command}"]).catch(()=>null);return b&&0===b.code?b.stdout.trim():null}async function Y(a){let b=await v(["capture-pane","-p","-t",a]).catch(()=>null);return b&&0===b.code?b.stdout:""}async function Z(a,b){if(!b.length)return;let c=await v(["send-keys","-t",a,...b]);if(0!==c.code)throw Error(c.stderr.trim()||"could not send keys")}async function $(a,b){var c;let d=await J(),e=await v(["new-window","-d","-P","-F","#{pane_id} #{session_name}:#{window_index}.#{pane_index} #{pane_pid}","-t",d+":","-n",a.windowName,"-c",a.cwd]);if(0!==e.code)throw Error(e.stderr.trim()||"could not open tmux window");let[f="",g="",h=""]=e.stdout.trim().split(" ");if(!f)throw Error("tmux did not return a window address");let i=Number(h),j=await v(["send-keys","-t",f,"-l",(c=a.cwd,`cd -- '${c.replaceAll("'","'\\''")}'`)]);if(0!==j.code)throw Error(j.stderr.trim()||"could not type cwd into pane");let k=await v(["send-keys","-t",f,"Enter"]);if(0!==k.code)throw Error(k.stderr.trim()||"could not enter cwd");let l=await v(["send-keys","-t",f,"-l",a.command]);if(0!==l.code)throw Error(l.stderr.trim()||"could not type command into pane");let n=await v(["send-keys","-t",f,"Enter"]);if(0!==n.code)throw Error(n.stderr.trim()||"could not start agent");let o=Date.now()+6e4,p=!1,q="",r="",t=0;for(;Date.now()<o;){await W(1e3);let b=await X(f);if(null===b)throw Error("agent window closed immediately after launch");if((0,s.g2)(b)){if(p)throw Error(`agent exited immediately after launch: ${(0,s.d3)(await Y(f))}`);continue}p=!0;let c=await Y(f),d=c!==q?(0,s.ye)(c):null;if(null!==d){m("gate",{target:f,cwd:a.cwd,result:"ok",reason:d}),await v(["send-keys","-t",f,"Enter"]),q=c,r="",t=0;continue}if(s.EB.test(c))break;if(c===r){if((t+=1)>=3)break}else t=0,r=c}let u=await X(f);if(null===u||(0,s.g2)(u))throw m("spawn",{target:f,cwd:a.cwd,result:"error",reason:"agent_exited_on_boot"}),Error(`agent did not start in the window: ${(0,s.d3)(await Y(f))}`);return m("spawn",{target:f,cwd:a.cwd,...a.transcript?{path:a.transcript}:{},result:"ok",meta:{window:a.windowName}}),b&&await E(f,b),{paneId:f,display:g||f,...Number.isInteger(i)&&i>0?{panePid:i}:{}}}function _(a){for(let b of a)try{h().unlinkSync(b)}catch{}}function aa(a,b){let c=[];try{for(let a of b)c.push(function(a,b){let c=n[b]??null;if(null===c)throw Error("unsupported image type");let d=Buffer.from(a,"base64");if(0===d.length)throw Error("invalid image data");if(d.length>0xa00000)throw Error("image is too large");h().mkdirSync(o.j,{recursive:!0});let e=j().join(o.j,`img-${Date.now()}-${f().randomUUID().slice(0,8)}.${c}`);return h().writeFileSync(e,d),{path:e}}(a.base64,a.mime).path)}catch(a){throw _(c),a}return{payload:[a,...c].filter(Boolean).join("\n"),imagePaths:c}}},70107:(a,b,c)=>{c.d(b,{hY:()=>C,q0:()=>G});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(30795),l=c(52509),m=c(95544);let n=(0,l.E)("meta-v2"),o=(0,l.E)("title"),p=(0,l.E)("codex-project-v2"),q=(0,l.E)("claude-cwd");function r(a,b){try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(Math.min(b,131072)),d=e().readSync(c,a,0,a.length,0);return{text:a.toString("utf8",0,d),read:d}}finally{e().closeSync(c)}}catch{return null}}let s="-"+g().homedir().split(i().sep).filter(Boolean).join("-"),t=[s+"-Projects-",s+"-"],u=["<","#","Caveat:","{","[","This session is being continued"];function v(a){if(a===s)return i().basename(g().homedir());for(let b of t)if(a.startsWith(b))return a.slice(b.length)||a;return a}let w=(0,l.E)("worktree-git"),x=(0,l.E)("persisted-project");function y(a){try{return JSON.parse(e().readFileSync(i().join((0,j.Pn)(),a),"utf8"))}catch{return null}}function z(a,b,c=!1){if("string"!=typeof a||!a.trim()||"string"!=typeof b||!b.trim())return null;let d=v(b.replace(/[^a-zA-Z0-9]/g,"-")),e=c||d!==a?i().basename(b):void 0;return{project:a,worktree:e}}function A(){let a=(0,j.Pn)(),b=x.get("state");if(b&&b[0]>Date.now()&&b[1]===a)return b[2];let c=new Map,d=new Map,e=new Map,f=(a,b)=>{b&&"string"==typeof a&&a.trim()&&d.set(a,b),((a,b)=>{if(!b||"string"!=typeof a||!a.endsWith(".jsonl"))return;let c=i().basename(i().dirname(a));c.startsWith("-")&&e.set(c,b)})(a,b)},g=y("flows.json");for(let a of Array.isArray(g?.flows)?g.flows:[]){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=z(a.project,a.cwd);if(b&&"string"==typeof a.cwd)for(let d of(c.set(a.cwd,b),f(a.implementerPath,b),Array.isArray(a.rounds)?a.rounds:[]))!d||"object"!=typeof d||Array.isArray(d)||f(d.reviewerPath,b)}let h=y("workflows.json");for(let a of Array.isArray(h?.workflows)?h.workflows:[]){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=z(a.project,a.repoDir);b&&"string"==typeof a.repoDir&&c.set(a.repoDir,b);let d=z(a.project,a.worktreeDir,!0);for(let e of(d&&"string"==typeof a.worktreeDir&&c.set(a.worktreeDir,d),Array.isArray(a.stageRuns)?a.stageRuns:[]))!e||"object"!=typeof e||Array.isArray(e)||f(e.agentPath,d??b);f(a.fixerPath,d??b)}let k={byCwd:c,byPath:d,bySlug:e};return x.set("state",[Date.now()+1e4,a,k]),k}function B(a){let b=function(a){let b=i().sep+".claude"+i().sep+"worktrees"+i().sep,c=a.indexOf(b);if(c<0)return null;let d=a.slice(c+b.length).split(i().sep).filter(Boolean)[0];return d?{repo:a.slice(0,c),worktree:d}:null}(a)??function(a){let b=w.get(a);if(b&&b[0]>Date.now())return b[1];let c=null;try{let b=i().join(a,".git");e().lstatSync(b).isFile()&&(c=function(a,b){let c=/^gitdir:\s*(.+?)\s*$/m.exec(b)?.[1];if(!c)return null;let d=i().resolve(a,c).split(i().sep),e=d.lastIndexOf("worktrees"),f=e>=0?d[e+1]:void 0;return f&&".git"===d[e-1]?{repo:d.slice(0,e-1).join(i().sep)||i().sep,worktree:f}:null}(a,e().readFileSync(b,"utf8")))}catch{}return w.set(a,[Date.now()+6e4,c]),c}(a)??function(a){let b=i().sep+".codex"+i().sep+"worktrees"+i().sep,c=a.indexOf(b);if(c<0)return null;let[d,f]=a.slice(c+b.length).split(i().sep).filter(Boolean);return d&&f?{repo:function(a){for(let b of[i().join(g().homedir(),"Projects"),i().join(g().homedir(),".agents","tools")]){let c=i().join(b,a);try{if(e().statSync(c).isDirectory())return c}catch{continue}}return i().join(g().homedir(),"Projects",a)}(f),worktree:d}:null}(a);if(!b&&!function(a){try{return e().lstatSync(i().join(a,".git")),!0}catch{return!1}}(a)){let b=A().byCwd.get(a);if(b)return b}let c=v((b?b.repo:a).replace(/[^a-zA-Z0-9]/g,"-"));return c?{project:c,worktree:b?.worktree}:null}function C(a){return B(a)?.project??null}function D(a){let b="string"==typeof a?a.trim():"";return b&&!u.some(a=>b.startsWith(a))?b:null}function E(a){return A().byPath.get(a)??null}function F(a,b,c){let d=o.get(a);if(d&&(null!==d[1]||d[0]>=131072))return d[1];let e=r(a,b);if(!e)return d?.[1]??null;let f=function(a,b){for(let c of a){let a;try{let b=JSON.parse(c);if(!b||"object"!=typeof b||Array.isArray(b))continue;a=b}catch{continue}if("summary"===a.type){let b=D(a.summary);if(b)return b}if("ai-title"===a.type){let b=D(a.aiTitle);if(b)return b}if(b){let b=(0,m.xK)(a.payload)??{};if("user_message"===b.type){let a=D(b.message);if(a)return a}if("message"===b.type&&"user"===b.role){let a=D((0,m.Em)(b.content).map(a=>(0,m.r$)(a.text)??(0,m.r$)(a.input_text)??"").join(" ").trim());if(a)return a}}else if("user"===a.type){let b=(0,m.xK)(a.message)?.content;if("string"==typeof b){let a=D(b);if(a)return a}let c=D((0,m.Em)(b).filter(a=>"text"===a.type).map(a=>(0,m.r$)(a.text)??"").join(" ").trim());if(c)return c}}return null}(e.text.split("\n").slice(0,151),c);return o.set(a,[e.read,f]),f}function G(a,b,c,d){let e,f=n.get(c);if(f?.[0]===d.size)return f[1];let g=i().relative(b,c),h=i().basename(c),j="other",l=null,o="claude",s="",t="plain";if("codex-sessions"===a){let a=p.get(c);if(a)j=a.project,e=a.worktree;else{j="";let a=r(c,d.size);if(a)try{let b=JSON.parse(a.text.split("\n")[0]??"{}"),c=(0,m.r$)((0,m.xK)(b.payload)?.cwd)??"",d=B(c);j=d?.project??"",e=d?.worktree}catch{j=""}if(!j){let a=E(c);j=a?.project??"",e=a?.worktree}j&&p.set(c,{project:j,worktree:e})}j||(j="codex"),o="codex",s="session",t="codex",l=F(c,d.size,!0)??"Codex session"}else if("claude-projects"===a){let a=g.split(i().sep)[0]??"",b=function(a){let b="--claude-worktrees-",c=a.indexOf(b);if(c<0)return null;let d=a.slice(c+b.length);if(!d)return null;let e=a.slice(0,c),f=e.split("--").at(-1)?.split("-").filter(Boolean).at(-1);return f?{project:e.slice(e.lastIndexOf("-"+f)+1)||f,worktree:d}:null}(a);j=b?.project??v(a),e=b?.worktree;let f=function(a,b){let c=q.get(a);if(c&&(null!==c[1]||c[0]>=131072))return c[1];let d=r(a,b);if(!d)return c?.[1]??null;let e=function(a){for(let b of a)try{let a=JSON.parse(b),c=(0,m.r$)((0,m.xK)(a)?.cwd);if(c)return c}catch{continue}return null}(d.text.split("\n").slice(0,25));return q.set(a,[d.read,e]),e}(c,d.size),k=f?B(f):E(c),n=E(c);if(k&&(b||k.worktree||n)&&(j=k.project,e=k.worktree??e),t="claude",h.startsWith("agent-")){s="subagent";let a=(0,m.Vh)(c.slice(0,-6)+".meta.json")??{};l=(0,m.r$)(a.description)??(0,m.r$)(a.name)??"Subagent "+h.slice(6).split(".")[0]}else s="session",l=F(c,d.size,!1)??"Claude session"}else if("claude-tasks"===a){let a=g.split(i().sep)[0]??"",b=A().bySlug.get(a)??null;j=b?.project??v(a),e=b?.worktree,o="shell",s="background",l="Background task "+h.split(".")[0]}let u={project:j,worktree:e,title:(0,k.cr)(l??h,120),engine:o,kind:s,fmt:t};return n.set(c,[d.size,u]),u}},70547:(a,b,c)=>{function d(a,b){let c=RegExp(`^${b}:\\s+(\\d+)\\s*kB`,"m").exec(a);if(!c)return null;let d=Number(c[1]);return Number.isFinite(d)?1024*d:null}function e(a){let b=d(a,"MemTotal"),c=d(a,"MemAvailable");if(null===b||null===c||b<=0)return null;let e=d(a,"SwapTotal")??0,f=d(a,"SwapFree")??e;return{ramTotal:b,ramAvailable:c,swapTotal:e,swapUsed:Math.max(0,e-f)}}function f(a){return{rssBytes:d(a,"VmRSS")??0,swapBytes:d(a,"VmSwap")??0}}function g(a){let b=Number(/page size of (\d+) bytes/.exec(a)?.[1]);if(!Number.isFinite(b)||b<=0)return null;let c=b=>{let c=RegExp(`^${b}:\\s+(\\d+)\\.?`,"m").exec(a);return c?Number(c[1]):null},d=c("Pages free"),e=c("Pages inactive");return null===d||null===e?null:(d+e+(c("Pages purgeable")??0))*b}c.d(b,{CT:()=>k,Lc:()=>g,NW:()=>e,mO:()=>l,sW:()=>f,yh:()=>j});let h=/([\d.]+)\s*([KMGT])/;function i(a){let b=h.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isFinite(c)?Math.round(c*({K:1024,M:1048576,G:0x40000000,T:0x10000000000})[b[2]]):null}function j(a){let b=/total\s*=\s*(\S+)/.exec(a)?.[1],c=/used\s*=\s*(\S+)/.exec(a)?.[1];if(!b||!c)return null;let d=i(b),e=i(c);return null===d||null===e?null:{swapTotal:d,swapUsed:e}}function k(a){let b=new Map;for(let c of a.split("\n")){let a=/^\s*(\d+)\s+(\d+)\s*$/.exec(c);a&&b.set(Number(a[1]),1024*Number(a[2]))}return b}function l(a,b){let c=new Map;for(let[a,d]of b){if(a===d)continue;let b=c.get(d);b?b.push(a):c.set(d,[a])}let d=new Set([a]),e=[],f=[a];for(;f.length;){let a=f.pop();for(let b of(e.push(a),c.get(a)??[]))d.has(b)||(d.add(b),f.push(b))}return e}},74127:(a,b,c)=>{c.d(b,{l:()=>m});var d=c(73024),e=c.n(d);function f(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function g(a){return Array.isArray(a)?a.filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)):[]}function h(a){return"string"==typeof a?a:""}function i(a){return h(a.timestamp)||h(a.ts)||null}function j(a,b=8388608){let c;try{let d=e().statSync(a),f=Math.max(0,d.size-b),g=e().openSync(a,"r");try{let a=Buffer.alloc(d.size-f);e().readSync(g,a,0,a.length,f),c=a.toString("utf8")}finally{e().closeSync(g)}f>0&&(c=c.slice(c.indexOf("\n")+1))}catch{return[]}let d=[];for(let a of c.split("\n")){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&d.push(a)}catch{}}return d}function k(a){return"string"==typeof a?a:g(a).map(a=>"text"===a.type?h(a.text):"thinking"===a.type?h(a.thinking):"tool_use"===a.type?`${h(a.name)} ${JSON.stringify(f(a.input))}`.trim():"tool_result"===a.type?k(a.content)||h(a.tool_use_id):"").filter(Boolean).join("\n").trim()}function l(a,b){b.text.trim()&&("message"===b.kind?a.messages.push(b):"reasoning"===b.kind?a.reasoning.push(b):"tool_call"===b.kind||"tool_result"===b.kind?a.tools.push(b):a.traces.push(b))}function m(a,b){return"claude"===b?function(a){let b={path:a,engine:"claude",messages:[],reasoning:[],tools:[],traces:[]};for(let c of j(a)){let a=i(c);if("user"===c.type){let d=f(c.message).content;if(g(d).some(a=>"tool_result"===a.type)){for(let c of g(d))"tool_result"===c.type&&l(b,{kind:"tool_result",role:"tool",ts:a,text:k(c.content)||h(c.tool_use_id)});continue}l(b,{kind:"message",role:"user",ts:a,text:k(d)});continue}if("assistant"===c.type){for(let d of g(f(c.message).content))"text"===d.type?l(b,{kind:"message",role:"assistant",ts:a,text:h(d.text)}):"thinking"===d.type?l(b,{kind:"reasoning",role:"assistant",ts:a,text:h(d.thinking)}):"tool_use"===d.type?l(b,{kind:"tool_call",role:"assistant",ts:a,name:h(d.name),text:JSON.stringify(f(d.input))}):"tool_result"===d.type&&l(b,{kind:"tool_result",role:"tool",ts:a,text:k(d.content)||h(d.tool_use_id)});continue}("summary"===c.type||"compact"===c.type)&&l(b,{kind:"trace",role:"system",ts:a,name:h(c.type),text:k(c.summary)||JSON.stringify(c)})}return b}(a):function(a){let b={path:a,engine:"codex",messages:[],reasoning:[],tools:[],traces:[]};for(let c of j(a)){let a=i(c),d=f(c.payload),e=h(d.type),g=function(a){let b=h(a.type);return"user_message"===b?{role:"user",text:h(a.message)}:"agent_message"===b?{role:"assistant",text:h(a.message)}:"message"===b?{role:"assistant"===a.role?"assistant":"user"===a.role?"user":"system",text:k(a.content)||h(a.message)}:null}(d);if(g){l(b,{kind:"message",role:g.role,ts:a,phase:h(d.phase)||void 0,text:g.text});continue}if("reasoning"===e||"reasoning_delta"===e){l(b,{kind:"reasoning",role:"assistant",ts:a,text:h(d.text)||h(d.message)});continue}if("response_item"===c.type){let c=f(d.item)||d,e=h(c.type);"function_call"===e||"custom_tool_call"===e?l(b,{kind:"tool_call",role:"assistant",ts:a,name:h(c.name),text:h(c.arguments)||JSON.stringify(c)}):"function_call_output"===e||"custom_tool_call_output"===e?l(b,{kind:"tool_result",role:"tool",ts:a,name:h(c.name),text:h(c.output)||JSON.stringify(c)}):e&&l(b,{kind:"trace",role:"system",ts:a,name:e,text:JSON.stringify(c)});continue}e&&l(b,{kind:"trace",role:"system",ts:a,name:e,text:JSON.stringify(d)})}return b}(a)}},89333:(a,b,c)=>{let d,e,f;c.d(b,{EG:()=>s,GH:()=>n,Rg:()=>o,aA:()=>q,jQ:()=>p});var g=c(73024),h=c.n(g),i=c(48161),j=c.n(i),k=c(76760),l=c.n(k);let m=j().homedir(),n={"codex-sessions":l().join(m,".codex/sessions"),"claude-projects":l().join(m,".claude/projects"),"claude-tasks":(d=process.getuid?.()??1e3,e=l().join(j().tmpdir(),"claude-"+d),e===(f="/tmp/claude-"+d)||h().existsSync(e)?e:h().existsSync(f)?f:e)},o=[".log",".jsonl",".output",".txt"],p=786432,q=400;function r(a){try{return h().realpathSync(a)}catch{return null}}function s(a){let b=r(a);return!!b&&Object.values(n).some(a=>{let c=r(a);return null!==c&&b.startsWith(c+l().sep)})}},90748:(a,b,c)=>{c.d(b,{O6:()=>n,UT:()=>j,mQ:()=>k,vq:()=>l,yy:()=>m});var d=c(77598),e=c.n(d),f=c(60641);function g(a){return"string"!=typeof a?null:a.trim()||null}function h(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)?{x:a.x,y:a.y}:null}function i(){return{ok:!1,error:"Task text must be no longer than 6000 characters",status:400}}function j(a,b,c={}){var d,k;let l="string"!=typeof(k=b.project)?null:k.trim()||null;if(!l)return{ok:!1,error:"project is required",status:400};let m=g(b.text);if(!m)return{ok:!1,error:"task text is required",status:400};if(m.length>6e3)return i();let n=h(b.pos);if(!n)return{ok:!1,error:"task position is required",status:400};let o=void 0===(d=b.source)?void 0:!d||"object"!=typeof d||Array.isArray(d)?null:"string"==typeof d.path&&d.path.trim()&&(null===d.ts||"string"==typeof d.ts)&&"string"==typeof d.text&&d.text.trim()&&"string"==typeof d.fingerprint&&d.fingerprint.trim()&&("claude"===d.engine||"codex"===d.engine)?{path:d.path,ts:d.ts,text:d.text,fingerprint:d.fingerprint,engine:d.engine}:null;if(null===o)return{ok:!1,error:"invalid task source",status:400};if(a.filter(a=>a.project===l).length>=300)return{ok:!1,error:"The project already has 300 tasks. Close or delete extra tasks.",status:409};let p=c.now?.()??(0,f.Ec)(),q={id:c.id?.()??e().randomUUID(),project:l,status:"inbox",text:m,pos:n,assignments:[],...o?{source:o}:{},createdAt:p,updatedAt:p};return{ok:!0,tasks:[...a,q],task:q}}function k(a,b,c,d=(0,f.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let j=a[e],l={};if(Object.hasOwn(c,"text")){let a=g(c.text);if(!a)return{ok:!1,error:"task text is required",status:400};if(a.length>6e3)return i();l.text=a}if(Object.hasOwn(c,"status")){var m;let a="inbox"===(m=c.status)||"assigned"===m||"blocked"===m||"done"===m?m:null;if(!a)return{ok:!1,error:"invalid task status",status:400};l.status=a}if(Object.hasOwn(c,"pos")){let a=h(c.pos);if(!a)return{ok:!1,error:"invalid task position",status:400};l.pos=a}let n={...j,...l,updatedAt:d},o=a.slice();return o[e]=n,{ok:!0,tasks:o,task:n}}function l(a,b){let c=a.filter(a=>a.id!==b);return c.length===a.length?{ok:!1,error:"task not found",status:404}:{ok:!0,tasks:c}}function m(a,b,c,d=(0,f.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let g=a[e],h=g.assignments.filter(a=>a.path!==c);if(h.length===g.assignments.length)return{ok:!0,tasks:a,task:g};let i={...g,assignments:h,updatedAt:d},j=a.slice();return j[e]=i,{ok:!0,tasks:j,task:i}}function n(a,b,c,d=(0,f.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let g=a[e],h=c.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state),i={...g,status:"inbox"===g.status&&h?"assigned":g.status,assignments:function(a,b){let c=a.slice();for(let a of b){let b=c.findIndex(b=>null!==a.path&&b.path===a.path||null===a.path&&null!==a.panePid&&null===b.path&&b.panePid===a.panePid),d={path:a.path,panePid:a.panePid,state:a.state,error:a.error,at:a.at};c=b>=0?[...c.slice(0,b),d,...c.slice(b+1)]:[...c,d]}return c}(g.assignments,c),updatedAt:d},j=a.slice();return j[e]=i,{ok:!0,tasks:j,task:i}}},95544:(a,b,c)=>{c.d(b,{Em:()=>k,Vg:()=>i,Vh:()=>g,r$:()=>h,xK:()=>j});var d=c(73024),e=c.n(d);let f=(0,c(52509).E)("json");function g(a){let b;try{b=e().statSync(a).mtimeMs}catch{return null}let c=f.get(a);if(c?.[0]===b)return c[1];let d=null;try{d=JSON.parse(e().readFileSync(a,"utf8"))}catch{d=null}let g=d&&"object"==typeof d&&!Array.isArray(d)?d:null;return f.set(a,[b,g]),g}function h(a){return"string"==typeof a?a:null}function i(a){return"number"==typeof a&&Number.isFinite(a)?a:null}function j(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function k(a){return Array.isArray(a)?a.filter(a=>null!==a&&"object"==typeof a&&!Array.isArray(a)):[]}},98590:(a,b,c)=>{c.d(b,{Ml:()=>A,NO:()=>z,Sn:()=>B,Vd:()=>v,WJ:()=>y,Yj:()=>p,mL:()=>t,tR:()=>x,tu:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724);let k=(0,j.BQ)("flows.json"),l=(0,j.BQ)("review-loop-presets.json"),m=(0,j.BQ)("flows"),n=[{name:"Codex high → Fable",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"claude",model:"fable",effort:null}},{name:"Fable → Codex xhigh",implementer:{engine:"claude",model:"fable",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Sonnet → Codex xhigh",implementer:{engine:"claude",model:"sonnet",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Codex high → Codex xhigh",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"codex",model:null,effort:"xhigh"}}];function o(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function p(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,b,"utf8"),g().renameSync(c,a)}function q(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}function r(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"implement-review-loop"===a.template&&"string"==typeof a.cwd&&"string"==typeof a.implementerPath&&"string"==typeof a.baseRef&&Array.isArray(a.rounds)}function s(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.name&&!!a.implementer&&!!a.reviewer}function t(){let a=q(k);return(Array.isArray(a?.flows)?a.flows.filter(r):[]).map(a=>({...a,pausedState:a.pausedState??null,rounds:a.rounds.map(a=>({...a,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,spawnStartedAt:a.spawnStartedAt??null,relayStartedAt:a.relayStartedAt??null,error:a.error??null}))}))}function u(a){o(k,{flows:a})}function v(){let a=q(l),b=Array.isArray(a?.presets)?a.presets.filter(s):[];return b.length>0?b:(o(l,{presets:n}),n)}function w(a){return i().join(m,a)}function x(a,b){return i().join(w(a),`round-${b}-review.md`)}function y(a,b){return i().join(w(a),`round-${b}-last-message.md`)}function z(a,b){return i().join(w(a),`round-${b}-stderr.txt`)}function A(a,b){return i().join(w(a),`round-${b}-stdout.log`)}function B(a,b){let c=b.replace(/^\s*VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)\s*$/im,"").trim();return`VERDICT: ${a}
2
+ ${r.payload}`,t=m.length?{imagePaths:m}:{};if(null!==p)return await (0,h.oF)(p,s),{ok:!0,target:p,...t};let u=await (0,h.KY)(o.path,q,s);return{ok:!0,target:u.target,spawned:u.spawned,...t}}catch(a){return(0,h.IJ)(m),i(a)}}},3249:(a,b,c)=>{c.d(b,{Ec:()=>v,Hw:()=>y,iq:()=>B,w1:()=>J,xz:()=>z,zn:()=>H});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(14509),i=c(42087),j=c(16089),k=c(66024),l=c(64747),m=c(51906),n=c(25750),o=c(59680),p=c(98590);let q=new Set(["approved","done_comment","needs_decision","closed"]),r=/^REVIEW_READY:\s*(.*)$/m,s=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,t=globalThis,u=new Set;function v(){return new Date().toISOString()}function w(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function x(a){return a.map(a=>({...a,roles:{implementer:{...a.roles.implementer},reviewer:{...a.roles.reviewer}},rounds:a.rounds.map(a=>({...a}))}))}function y(a){return a.rounds.at(-1)??null}function z(a,b,c){return{n:a.rounds.length+1,reviewerPath:null,sessionId:null,reviewerPane:null,findingsPath:null,triggeredBy:b,readyNote:c,verdict:null,findingsCount:null,startedAt:v(),spawnStartedAt:null,relayStartedAt:null,reviewedAt:null,relayedAt:null,error:null}}function A(a,b){a.state="needs_decision",a.stateDetail=b}async function B(a,b,c){let d=b.get(a.implementerPath);if(!d)throw Error("implementer transcript is missing from scanner");if(null!==d.pid){let a=await (0,l.u1)(d.pid);if(a)return void await (0,l.oF)(a,c)}let e=(0,h.A9)(d.root,d.path);if(!e)throw Error("implementer session cannot be resumed");await (0,l.KY)(d.path,e,c)}function C(a,b,c){if(c.reviewerPath)return!1;let d=w(c.startedAt)/1e3-5,e=a.roles.reviewer.engine,f=b.filter(b=>b.engine===e&&b.path!==a.implementerPath&&b.mtime>=d&&!("codex-sessions"===b.root&&b.path.endsWith(".jsonl")&&(0,k.ET)(b.path,b.size))&&(0,j.tX)(b.path)===a.cwd).sort((a,b)=>b.mtime-a.mtime)[0];return!!f&&(c.reviewerPath=f.path,!0)}function D(a,b,c){let d=b.findingsPath??(0,p.tR)(a.id,b.n);(0,p.Yj)(d,c.content),b.findingsPath=d,b.verdict=c.verdict,b.findingsCount=c.findingsCount,b.reviewedAt=v(),"manual"===a.mode?a.state="relay_pending":a.state="relaying",a.stateDetail=null}async function E(a,b){let c=(0,o.qu)(a,b);if(a.state="reviewing",a.stateDetail=null,"pane"===a.reviewerMode){let d=(0,h.lV)(a.roles.reviewer.engine,a.cwd,{model:a.roles.reviewer.model,effort:a.roles.reviewer.effort,readOnly:!0}),e=Date.now(),f=await (0,l.Tk)(d,c);b.reviewerPane={paneId:f.paneId,windowName:d.windowName};let g=await (0,i.s)({engine:a.roles.reviewer.engine,knownTranscript:d.transcript??null,panePid:f.panePid??null,cwd:a.cwd,startedAtMs:e});g&&(b.reviewerPath=g),!b.reviewerPath&&f.panePid&&(b.error=null);return}let d=(0,m.gn)(a.id,b.n,a.roles.reviewer,a.cwd,c);d.pid&&(b.reviewerPid=d.pid),d.sessionId&&(b.sessionId=d.sessionId),d.reviewerPath&&(b.reviewerPath=d.reviewerPath)}async function F(a,b,c){if(!c.findingsPath)throw Error("round has no findings artifact");let d=e().readFileSync(c.findingsPath,"utf8");a.state="relaying",await B(a,b,(0,o.i0)(c,d)),c.relayedAt=v(),"APPROVE"===c.verdict?(a.state="approved",a.closedAt=v()):"COMMENT"===c.verdict?a.state="done_comment":a.roundLimit>0&&a.rounds.length>=a.roundLimit?A(a,"round limit reached"):(a.state="fixing",a.stateDetail=null)}async function G(a,b,c,d){var e;let f=JSON.stringify(a);if("closed"===a.state||"paused"===a.state)return!1;let h=c.get(a.implementerPath);if(!h){let b=a.state;return a.state="paused",a.pausedState=b,a.stateDetail="implementer transcript is missing",JSON.stringify(a)!==f}if("waiting_ready"===a.state||"fixing"===a.state){let b=function(a,b){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let c=(0,n.if)(b);if(!c)return null;let d=Math.max(...a.rounds.map(a=>w(a.startedAt)),w(a.createdAt));return c.ts<=d?null:c.text.match(r)?.[1]?.trim()??null}(a,h);return null!==b&&(a.rounds.push(z(a,"marker",b)),a.state="manual"===a.mode?"spawn_pending":"spawning",a.stateDetail=null),JSON.stringify(a)!==f}let i=y(a);if(!i)return JSON.stringify(a)!==f;if("spawning"===a.state){let b=(0,m.IL)(a.id,i.n,i,a.roles.reviewer.engine);if(i.spawnStartedAt&&"headless"===a.reviewerMode&&b)return a.state="reviewing",a.stateDetail=null,JSON.stringify(a)!==f;if(i.spawnStartedAt&&!b&&null===i.reviewerPath)return A(a,"reviewer spawn was interrupted by a restart"),JSON.stringify(a)!==f;try{i.spawnStartedAt=v(),d(),await E(a,i)}catch(b){i.error=b instanceof Error?b.message:String(b),A(a,i.error)}return JSON.stringify(a)!==f}if("reviewing"===a.state){let d=(0,n.V_)(i);if(d)return D(a,i,d),JSON.stringify(a)!==f;if("headless"===a.reviewerMode){let d,h=(0,m.IL)(a.id,i.n,i,a.roles.reviewer.engine);if(i.sessionId||(i.sessionId=h?.sessionId??(e=h?.stdout??"",(d=e.match(/session id:?\s*([0-9a-f-]{36})/i)?.[1])&&s.test(d)?d:e.split("\n").slice(0,40).join("\n").match(s)?.[0]??null)),!function(a,b,c){if(b.reviewerPath||!c)return;let d=a.find(a=>g().basename(a.path).includes(c));d&&(b.reviewerPath=d.path)}(b,i,i.sessionId??null),i.reviewerPath||i.sessionId||C(a,b,i),h?.status==="running")return JSON.stringify(a)!==f;if(h){(0,m.T)(a.id,i.n,i.reviewerPid??null);let b=(0,n.Sn)(h.finalOutput);if(b)D(a,i,b);else{let b=i.findingsPath??(0,p.tR)(a.id,i.n);(0,p.Yj)(b,h.finalOutput||h.stdout||h.stderr),i.findingsPath=b,i.error="timeout"===h.status?"reviewer timed out":h.stderr.trim()||"reviewer verdict was unparseable",A(a,i.error)}return JSON.stringify(a)!==f}let j=(0,n.J8)(i,c);return j?D(a,i,j):A(a,"reviewer process is missing after server restart"),JSON.stringify(a)!==f}if(C(a,b,i),i.reviewerPath){let b=c.get(i.reviewerPath),d=(0,n.J8)(i,c);d?D(a,i,d):b&&"live"!==b.activity&&"stalled"!==b.activity&&A(a,"reviewer verdict was unparseable")}return JSON.stringify(a)!==f}if("relaying"===a.state){let b=`${a.id}:${i.n}`;if(i.relayStartedAt&&null===i.relayedAt&&!u.has(b))return A(a,"relay was interrupted; it may have been delivered twice"),JSON.stringify(a)!==f;try{i.relayStartedAt=v(),u.add(b),d(),await F(a,c,i)}catch(b){i.error=b instanceof Error?b.message:String(b),a.state="paused",a.pausedState="relaying",a.stateDetail=i.error}}return JSON.stringify(a)!==f}async function H(a){if(t.__llvFlowTick){let b=x((0,p.mL)());return I(a,b),{flows:b,changed:!1}}t.__llvFlowTick=!0;let b=x((0,p.mL)());try{let c=new Map(a.map(a=>[a.path,a])),d=!1;for(let e of b)!q.has(e.state)&&(await G(e,a,c,()=>(0,p.tu)(b))&&(d=!0),d&&(0,p.tu)(b));return I(a,b),d&&(0,p.tu)(b),{flows:b,changed:d}}finally{t.__llvFlowTick=!1}}function I(a,b){for(let b of a)delete b.flow;let c=new Map(a.map(a=>[a.path,a]));for(let a of b){let b=c.get(a.implementerPath);for(let d of(b&&(b.flow={flowId:a.id,flowRole:"implementer",round:null}),a.rounds)){if(!d.reviewerPath)continue;let b=c.get(d.reviewerPath);b&&(b.flow={flowId:a.id,flowRole:"reviewer",round:d.n})}}}function J(){return{flows:(0,p.mL)(),presets:(0,p.Vd)()}}},14289:(a,b,c)=>{c.d(b,{Z:()=>i,j:()=>f});var d=c(76760),e=c.n(d);let f=(0,c(91724).oy)(),g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"},h=/^[A-Za-z0-9._-]+\.(png|jpe?g|gif|webp)$/i;function i(a){let b=a.match(h);if(!b||e().basename(a)!==a)return null;let c=g[(b[1]??"").toLowerCase()];return c?{path:e().join(f,a),mime:c}:null}},14509:(a,b,c)=>{c.d(b,{A9:()=>p,lV:()=>o,uX:()=>m});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j),l=c(16089);function m(a){let b=i().homedir();if("1"===process.env.LLV_DOCKER_NSENTER_SHIMS&&("claude"===a||"codex"===a)){let b="/usr/local/bin/"+a;try{return g().accessSync(b,g().constants.X_OK),b}catch{}}for(let c of[k().join(b,".bun","bin",a),k().join(b,".npm-global","bin",a),k().join(b,".local","bin",a),k().join(b,"go","bin",a),"/usr/local/bin/"+a,"/usr/bin/"+a])try{return g().accessSync(c,g().constants.X_OK),c}catch{}return a}function n(a){return"'"+a.replace(/'/g,"'\\''")+"'"}function o(a,b,c={}){if("claude"===a){let a=e().randomUUID(),d=[m("claude")];return c.readOnly?d.push("--permission-mode","plan","--disallowedTools","Edit,Write,NotebookEdit"):d.push("--dangerously-skip-permissions"),d.push("--session-id",a),c.model&&d.push("--model",c.model),c.effort&&d.push("--effort",c.effort),{command:d.map(n).join(" "),cwd:b,windowName:"claude-new",transcript:(0,l.eV)(b,a)}}let d=[m("codex")];return c.model&&d.push("-m",c.model),c.effort&&d.push("-c",`model_reasoning_effort=${c.effort}`),null!=c.fast&&d.push("-c",`service_tier=${c.fast?"priority":"standard"}`),c.readOnly&&d.push("--sandbox","read-only"),{command:d.map(n).join(" "),cwd:b,windowName:"codex-new"}}function p(a,b){let c=k().basename(b);if("claude-projects"===a&&c.endsWith(".jsonl")&&!b.includes(k().sep+"subagents"+k().sep)){let a=c.slice(0,-6);return/^[0-9a-f-]{36}$/.test(a)?{command:`${m("claude")} --dangerously-skip-permissions --resume ${a}`,cwd:q(b),windowName:"claude-resume"}:null}if("codex-sessions"===a&&c.endsWith(".jsonl")){let a=c.match(/([0-9a-f-]{36})\.jsonl$/)?.[1];return a?{command:`${m("codex")} resume ${a}`,cwd:q(b),windowName:"codex-resume"}:null}return null}function q(a){return(0,l.tX)(a,{maxLines:30,requireDir:!0})??i().homedir()}c(58152)},15159:(a,b,c)=>{c.d(b,{em:()=>u,tJ:()=>v,vF:()=>l});var d=c(76760),e=c.n(d),f=c(16089),g=c(52509),h=c(23921),i=c(89333);let j=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi,k=(0,g.E)("codex-cwd");function l(a){return a.endsWith(".jsonl")?a.startsWith(i.GH["claude-projects"]+e().sep)?"claude":a.startsWith(i.GH["codex-sessions"]+e().sep)?"codex":null:null}function m(a){return"codex-sessions"===a.root?a.path.endsWith(".jsonl"):"claude-projects"===a.root&&!!a.path.endsWith(".jsonl")&&!e().basename(a.path).startsWith("agent-")&&!a.path.includes(e().sep+"subagents"+e().sep)}function n(a){return"idle"!==a.activity&&null===a.pid&&m(a)}function o(a){let b=e().basename(a).match(j);return b?.at(-1)?.toLowerCase()??null}function p(a){if(!a)return null;let b=a.match(j);return b?.at(-1)?.toLowerCase()??null}function q(a){let b=a.indexOf("--session-id"),c=p(b>=0?a[b+1]:void 0);if(c)return c;let d=a.indexOf("--resume"),e=p(d>=0?a[d+1]:void 0);if(e)return e;let f=a.indexOf("resume");return p(f>=0?a[f+1]:void 0)}function r(a){return e().relative(i.GH["claude-projects"],a).split(e().sep)[0]??""}function s(a){let b=k.get(a);if(void 0!==b&&""!==b)return b;let c=(0,f.tX)(a,{bytes:8192})??"";return k.set(a,c),c}function t(a,b){a.pid=b,a.proc="running"}function u(a){let b=a.filter(a=>null===a.pid&&m(a)),c=b.filter(n).slice(0,12);if(0===b.length&&0===c.length)return;let d=(0,h.SP)(b.map(a=>a.path)),e=new Set,g=[];for(let a of b){let b=d.get(a.path)??null;null!==b&&!e.has(b)&&(0,h.pl)(b)?(t(a,b),e.add(b)):g.push(a)}if(0===g.length)return;let i=(0,h.Bj)().filter(a=>!e.has(a.pid)),j=new Map;for(let a of i){let b=q(a.argv);if(!b)continue;let c=a.engine+":"+b,d=j.get(c);d?d.push(a):j.set(c,[a])}let k=[];for(let a of g){let b=o(a.path),d="codex-sessions"===a.root?"codex":"claude",f=(b?j.get(d+":"+b)??[]:[]).filter(a=>!e.has(a.pid));1===f.length?(t(a,f[0].pid),e.add(f[0].pid)):c.includes(a)&&k.push(a)}if(0===k.length)return;let l=new Map;for(let a of i){if(0===a.tty||e.has(a.pid)||null!==q(a.argv))continue;let b="claude"===a.engine?"claude:"+(0,f.Me)(a.cwd):"codex:"+a.cwd,c=l.get(b);c?c.push(a):l.set(b,[a])}let p=new Set;for(let a of k){let b=function(a){if("claude-projects"===a.root){let b=r(a.path);return b?"claude:"+b:null}let b=s(a.path);return b?"codex:"+b:null}(a);if(null===b||p.has(b))continue;p.add(b);let c=(l.get(b)??[]).filter(a=>!e.has(a.pid));1===c.length&&(t(a,c[0].pid),e.add(c[0].pid))}}function v(a,b){let c=l(a);if(null===c||!(0,h.pl)(b))return!1;let d=(0,h.$U)(b);if((0,h.Fe)(d)!==c||(0,h.Vt)(d))return!1;if((0,h.FQ)(b,a))return!0;let e=o(a);if(null!==e&&q(d)===e)return!0;let g=(0,h.$L)(b);if(null===g)return!1;if("claude"===c)return(0,f.Me)(g)===r(a);let i=s(a);return""!==i&&i===g}},16089:(a,b,c)=>{c.d(b,{Me:()=>j,eV:()=>k,tX:()=>l});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h);function j(a){return a.replace(/[^A-Za-z0-9]/g,"-")}function k(a,b){return i().join(g().homedir(),".claude","projects",j(a),b+".jsonl")}function l(a,b={}){let c=function(a,b=65536){try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(b),d=e().readSync(c,a,0,a.length,0);return a.toString("utf8",0,d)}finally{e().closeSync(c)}}catch{return""}}(a,b.bytes??65536);if(!c)return null;let d=c.split("\n");for(let a of(void 0!==b.maxLines&&(d=d.slice(0,b.maxLines)),d))if(a.trim())try{let c=JSON.parse(a),d="string"==typeof c.cwd?c.cwd:"string"==typeof c.payload?.cwd?c.payload.cwd:null;if(!d||b.requireDir&&!e().existsSync(d))continue;return d}catch{}return null}},16462:(a,b,c)=>{c.d(b,{C:()=>at});var d=c(20640),e=c(64747),f=c(23855),g=c(3249),h=c(77598),i=c.n(h),j=c(73024),k=c.n(j),l=c(76760),m=c.n(l),n=c(91724),o=c(74127),p=c(90748),q=c(21153);let r=(0,n.BQ)("task-inbox-scan.json"),s=0;function t(a){let b,c,d;return((c=(b=a).lastIndexOf("</environment_context>"))>=0&&(b=b.slice(c+22)),(d=b.lastIndexOf("</INSTRUCTIONS>"))>=0&&(b=b.slice(d+15)),b.trim()).replace(/(?:э[-\s]*э[-\s]*э|эээ|ээ|эм|ммм)/giu," ").replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim()}let u=/(?:созда(?:й|ть|л)|сдела(?:й|ть)|добав(?:ь|ить)|исправ(?:ь|ить)|почин(?:и|ить)|проверь|разберись|найди|напиши|реализ(?:уй|овать)|запусти|подготовь|обнови|перенеси|удали|отрефактори|проанализируй|\b(?:create|add|fix|implement|build|write|review|check|investigate|run|update|refactor|deploy|make|set up|setup)\b)/i;var v=c(41017),w=c(52509),x=c(95544);let y=(0,w.E)("ctx");function z(a,b){return null===a||a<=0||null===b||b<=0?null:{usedTokens:a,windowTokens:b,pct:Math.min(100,Math.round(a/b*100))}}var A=c(51455),B=c(66024),C=c(70107),D=c(89333);function E(a,b){let c=m().relative(a,b).split(m().sep);return 4===c.length&&"tasks"===c[2]&&c[3]?.endsWith(".output")?[c[0]??"",c[1]??"",c[3].slice(0,-7)]:null}async function F(a,b,c,d,e){let f;try{f=await e(()=>(0,A.readdir)(d,{withFileTypes:!0}))}catch{return[]}return(await Promise.all(f.map(async f=>{let g;if(f.isDirectory())return f.name.startsWith(".git")?[]:F(a,b,c,m().join(d,f.name),e);if(!f.isFile()||!D.Rg.some(a=>f.name.endsWith(a)))return[];let h=m().join(d,f.name);if("claude-projects"===a&&h.includes(m().sep+"tool-results"+m().sep))return[];try{g=await e(()=>(0,A.stat)(h))}catch{return[]}let i="claude-tasks"===a?E(b["claude-tasks"],h):null;if("claude-tasks"===a&&!i||0===g.size&&!i)return[];if(i){let[a,c,d]=i,f=m().join(b["claude-projects"],a,c,"subagents","agent-"+d+".jsonl");try{return await e(()=>(0,A.access)(f)),[]}catch{}}return[{rootName:a,root:c,path:h,st:g}]}))).flat()}async function G(a,b){try{return await b(()=>(0,A.access)(a)),!0}catch{return!1}}async function H(a=D.GH){let b,c,d=(b=0,c=[],async function(a){b>=48&&await new Promise(a=>c.push(a)),b+=1;try{return await a()}finally{b-=1,c.shift()?.()}}),e=(await Promise.all(Object.entries(a).map(async([b,c])=>await G(c,d)?F(b,a,c,c,d):[]))).flat();e.sort((a,b)=>b.st.mtimeMs-a.st.mtimeMs);let f=new Map;for(let a of e){if("codex-sessions"!==a.rootName||!a.path.endsWith(".jsonl"))continue;let b=(0,B.Gz)(a.path);b&&f.set(b,a)}let g=e.slice(0,D.aA),h=new Set(g.map(a=>a.path));for(let a=0;a<g.length;a+=1){let b=g[a];if("codex-sessions"!==b.rootName||!b.path.endsWith(".jsonl"))continue;let c=(0,B.S)(b.path,b.st.size),d=c?f.get(c):void 0;d&&!h.has(d.path)&&(h.add(d.path),g.push(d))}return g.map(a=>{let b=(0,C.q0)(a.rootName,a.root,a.path,a.st);return{path:a.path,root:a.rootName,name:m().relative(a.root,a.path),project:b.project,worktree:b.worktree,title:b.title,engine:b.engine,kind:b.kind,fmt:b.fmt,parent:null,mtime:a.st.mtimeMs/1e3,size:a.st.size,activity:"idle",proc:null,pid:null,model:null,pendingQuestion:null,waitingInput:null}})}var I=c(23921);let J=(0,w.E)("effort"),K=new Set(["minimal","low","medium","high","xhigh","max"]);function L(a){let b=a?.trim().toLowerCase()??"";return K.has(b)?b:null}function M(a,b){if("codex-sessions"===a.root&&"turn_context"===b.type){let a=(0,x.xK)(b.payload),c=(0,x.r$)(a?.effort);if(c)return c;let d=(0,x.xK)((0,x.xK)(a?.collaboration_mode)?.settings);return(0,x.r$)(d?.reasoning_effort)}if("claude-projects"===a.root&&"assistant"===b.type){let a=(0,x.xK)(b.message);if((0,x.Em)(a?.content).some(a=>"thinking"===(0,x.r$)(a.type)))return"high"}return null}var N=c(26474);let O=(0,w.E)("needle");function P(a,b){let c,d=O.get(a);if(d&&d.hits||(d={hits:{},scanned:d?.scanned??{}},O.set(a,d)),d.hits[b])return!0;let e=Buffer.from(a),f=Math.max(0,e.length-1);try{c=k().statSync(b).size}catch{return!1}let g=d.scanned[b]??0;if(c<=g)return!1;try{let a=k().openSync(b,"r");try{let h=Math.max(0,g-f),i=Buffer.alloc(0),j=!1;for(;h<c;){let b=Math.min(1048576,c-h),d=Buffer.alloc(b),g=k().readSync(a,d,0,b,h);if(!g)break;if(Buffer.concat([i,d.subarray(0,g)]).includes(e)){j=!0;break}i=f?d.subarray(Math.max(0,g-f),g):Buffer.alloc(0),h+=g}return d.scanned[b]=c,j&&(d.hits[b]=!0),j}finally{k().closeSync(a)}}catch{return!1}}let Q=(0,w.E)("sid-slug"),R=(0,w.E)("bgcmd"),S=(0,w.E)("chain-uuid");async function T(a,b,c){let d;try{d=await c(()=>(0,A.readdir)(a,{withFileTypes:!0}))}catch{return[]}return(await Promise.all(d.map(async d=>{let e=m().join(a,d.name);return d.isDirectory()?T(e,b,c):d.isFile()&&b(e)?[e]:[]}))).flat()}async function U(a,b,c){let d=D.GH["claude-projects"],e=c??Q.get(a)??null;if(!e){let c=(await T(d,b=>m().basename(b)===a+".jsonl",b))[0];if(!c)return[null,[]];e=m().basename(m().dirname(c)),Q.set(a,e)}let f=m().join(d,e,a+".jsonl"),g=m().join(d,e,a,"subagents"),h=(await T(g,a=>m().basename(a).startsWith("agent-")&&a.endsWith(".jsonl"),b)).sort();return[k().existsSync(f)?f:null,h]}let V=(0,n.BQ)("codex-lineage.json"),W=(0,w.E)("codex-lineage"),X=!1,Y=!1;function Z(){if(X)return;X=!0;let a=(0,x.Vh)(V);if(a&&"object"==typeof a&&!Array.isArray(a)){for(let[b,c]of Object.entries(a))"string"!=typeof c||W.has(b)||W.set(b,c);W.size!==Object.keys(a).length&&(Y=!0)}}function $(a,b){if(W.get(a)!==b){for(W.set(a,b);W.size>2e4;){let a=W.keys().next().value;if(void 0===a)break;W.delete(a)}Y=!0}}function _(){if(Y){Y=!1;try{k().mkdirSync(m().dirname(V),{recursive:!0}),k().writeFileSync(V,JSON.stringify(Object.fromEntries(W)))}catch{}}}async function aa(a){let b,c,d=(b=0,c=[],async function(a){b>=48&&await new Promise(a=>c.push(a)),b+=1;try{return await a()}finally{b-=1,c.shift()?.()}}),e=new Map(a.map(a=>[a.path,a]));for(let b of a)if("claude-projects"===b.root){let a=b.name.split(m().sep);if(a.length>=3&&"subagents"===a.at(-2)){let c=a[0]??"",e=a.at(-3)??"",[f,g]=await U(e,d,c);b.parent=f;let h=(0,x.Vh)(b.path.slice(0,-6)+".meta.json")??{},i=(0,x.r$)(h.toolUseId),j=Number(h.spawnDepth??0);if(i&&j>=1){let a=function(a,b){for(let c of b)if(c&&P(a,c))return c;return null}(i,g.filter(a=>a!==b.path).concat(f?[f]:[]));a&&(b.parent=a)}}}else if("claude-tasks"===b.root){let a=E(D.GH["claude-tasks"],b.path);if(!a)continue;let[c,e,f]=a,[g,h]=await U(e,d,c),i=function(a,b,c){if(R.has(a))return R.get(a)??null;let d="background with ID: "+a,e=null;for(let f of[...b,...c]){if(!f||!P(d,f))continue;let b=function(a,b){let c=null;try{for(let d of k().readFileSync(b,"utf8").split("\n"))if(d.includes(a)){c=d.match(/"tool_use_id"\s*:\s*"([^"]+)"/)?.[1]??null;break}if(!c)return null;for(let a of k().readFileSync(b,"utf8").split("\n"))if(a.includes(c)&&a.includes('"tool_use"'))try{let b=JSON.parse(a);for(let a of(0,x.Em)((0,x.xK)(b.message)?.content))if("tool_use"===a.type&&a.id===c){let b=(0,x.xK)(a.input)??{};return{command:String(b.command??""),description:String(b.description??"")}}}catch{}}catch{}return null}(d,f);if(b&&(b.command||b.description)){let c={...b,source:f};return R.set(a,c),c}e??={command:"",description:"",source:f}}return e&&R.set(a,e),e}(f,(g?[g]:[]).concat(h),function(a,b){let c,d=m().join(D.GH["claude-projects"],a);try{c=k().readdirSync(d,{withFileTypes:!0})}catch{return[]}let e=[];for(let a of c){if(!a.isFile()||!a.name.endsWith(".jsonl")||a.name===b+".jsonl")continue;let c=m().join(d,a.name);try{let a=k().statSync(c);if(a.size>0x4000000)continue;e.push({pathname:c,mtime:a.mtimeMs})}catch{continue}}return e.sort((a,b)=>b.mtime-a.mtime).slice(0,8).map(a=>a.pathname)}(c,e));if(i){b.parent=i.source,b.cmd=i.command,b.cmdDesc=i.description;let a=i.description||i.command;a&&(b.title=a.split(/\s+/).join(" ").slice(0,120))}else b.title="Background task "+f,b.cmd="",b.cmdDesc=""}Z();let f=new Map;for(let b of a){if("codex-sessions"!==b.root||!b.path.endsWith(".jsonl"))continue;let a=(0,B.Gz)(b.path);a&&f.set(a,b.path)}for(let b of a){if("codex-sessions"!==b.root||b.parent)continue;let a=(0,B.S)(b.path,b.size),c=a?f.get(a)??null:null;c&&c!==b.path&&(b.parent=c,$(b.path,c))}_(),function(a){Z();let b=a.filter(a=>"codex-sessions"===a.root&&!a.parent);if(0===b.length)return;let c=new Map;for(let b of a)("claude-projects"===b.root||"codex-sessions"===b.root)&&null!==b.pid&&c.set(b.pid,b.path);for(let a of b){let b=null,d=new Set;for(let e=a.pid;null!==e&&!d.has(e)&&(d.add(e),!(d.size>15));e=(0,I.Ib)(e)){let d=c.get(e);if(d&&d!==a.path){b=d;break}}if(b)a.parent=b,$(a.path,b);else{let b=W.get(a.path);b&&(a.parent=b)}}_()}(a);let g=new Map(a.map(a=>[a.path,a]));for(let b of a){if(b.parent||"claude-projects"!==b.root&&"codex-sessions"!==b.root||!b.path.endsWith(".jsonl")||b.path.includes(m().sep+"subagents"+m().sep))continue;let a=(0,N._b)(b.path);if(!a&&null!==b.pid){let c=new Set;for(let d=b.pid;null!==d&&!c.has(d)&&(c.add(d),!(c.size>15||(a=(0,N.N0)(d))));d=(0,I.Ib)(d));a&&a!==b.path&&(0,N.A6)(b.path,a)}a&&a!==b.path&&g.has(a)&&(b.parent=a,b.handoff=!0)}(0,N.OA)(),function(a){let b=new Map;for(let c of a){if("claude-projects"!==c.root)continue;let a=c.name.split(m().sep);if(2!==a.length)continue;let d=a[0]??"";b.set(d,(b.get(d)??[]).concat(c))}let c=(a,b,c)=>{let d=new Map(c.map(a=>[a.path,a])),e=new Set;for(let c=a;c?.parent&&!e.has(c.path);c=d.get(c.parent))if(e.add(c.path),c.parent===b.path)return!0;return!1};for(let a of b.values()){let b=[...a].sort((a,b)=>a.mtime-b.mtime);for(let d of b){let e=function(a,b){let c=S.get(a);if(c&&(null!==c[1]||c[0]>=524288||c[0]>=b))return c[1];let d=null,e=0;try{let c=k().openSync(a,"r");try{let a=Buffer.alloc(Math.min(b,524288));for(let b of(e=k().readSync(c,a,0,a.length,0),a.toString("utf8",0,e).split("\n")))if(b.includes('"compact_boundary"')){d=b.match(/"logicalParentUuid"\s*:\s*"([0-9a-f-]{36})"/)?.[1]??null;break}}finally{k().closeSync(c)}}catch{return null}return S.set(a,[e,d]),d}(d.path,d.size);if(!e)continue;let f=b.filter(a=>a!==d&&!a.parent).sort((a,b)=>b.mtime-a.mtime),g="live"===d.activity||"recent"===d.activity,h=f.find(a=>P(e,a.path))??(g?f.find(a=>"live"!==a.activity):void 0);h&&!c(d,h,a)&&(h.parent=d.path)}}}(a);let h=a=>{let b=new Set,c=a;for(;!b.has(c.path);){b.add(c.path);let a=e.get(c.parent??"");if(!a)return c.project;c=a}return a.project};for(let b of a)b.parent&&e.has(b.parent)?b.project=h(b):b.parent=null}let ab=(0,w.E)("model");function ac(a){return a?a.trim().replace(/^claude-/,"").replace(/-20\d{6}$/,""):null}function ad(a,b){if("codex-sessions"===a.root){if("turn_context"===b.type||"session_meta"===b.type)return(0,x.r$)((0,x.xK)(b.payload)?.model)}else if("assistant"===b.type){let a=(0,x.r$)((0,x.xK)(b.message)?.model);if(a&&"<synthetic>"!==a)return a}return null}let ae=(0,w.E)("plan"),af=(0,w.E)("goal");function ag(a){return"in_progress"===a||"completed"===a?a:"pending"}function ah(a,b){if(!a.length)return null;let c=a.filter(a=>"completed"===a.status).length,d=a.find(a=>"in_progress"===a.status)?.text??a.find(a=>"pending"===a.status)?.text??null;return{steps:a,done:c,total:a.length,current:d,updatedAt:b}}function ai(a){return"active"===a||"complete"===a||"blocked"===a?a:null}var aj=c(17341),ak=c(15159),al=c(27359);let am=new Map,an={waiting:null,atComposer:!1};async function ao(a){let b=Date.now();for(let[a,c]of am)b-c.at>6e5&&am.delete(a);if("running"!==a.proc||null===a.pid||a.pendingQuestion)return am.delete(a.path),an;if(Date.now()/1e3-a.mtime<15)return an;let c=await (0,e.u1)(a.pid);if(null===c)return an;let d=await (0,e.ZB)(c);if(!(0,al.cZ)(d))return am.delete(a.path),{waiting:null,atComposer:(0,al.WM)(d)};let f=am.get(a.path);return f&&f.screen===d?(am.set(a.path,{...f,at:b}),b/1e3-f.since<15)?an:{waiting:{since:f.since,screenTail:d.split("\n").map(a=>a.replace(/\s+$/,"")).filter(a=>a.trim()).slice(-10).join("\n").slice(-1200),target:c,menu:(0,al.fm)(d)},atComposer:!1}:(am.set(a.path,{screen:d,at:b,since:b/1e3}),an)}let ap=new Map;function aq(){return new Promise(a=>setImmediate(a))}async function ar(a,b){for(let c=0;c<a.length;c+=1)b(a[c]),(c+1)%75==0&&await aq()}async function as(a,b){for(let c=0;c<a.length;c+=75)await Promise.all(a.slice(c,c+75).map(b)),c+75<a.length&&await aq()}async function at(){let a=await H(),b=a.some(a=>"claude-tasks"===a.root&&a.path.endsWith(".output"))?(0,I.$w)():ap;return await ar(a,a=>{let b=(0,f.Hz)(a.root,a.path,a.mtime,a.size);a.activity=b.state,a.activityReason=b.reason,a.model=function(a){if("claude-projects"===a.root&&a.path.includes(m().sep+"subagents"+m().sep)){let b=(0,x.Vh)(a.path.slice(0,-6)+".meta.json")??{},c=(0,x.r$)(b.model);if(c)return ac(c)}if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=ab.get(a.path);if(b?.[0]===a.size)return b[1];let c=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(c=ad(a,b))break;if(!c)try{for(let b of k().readFileSync(a.path,"utf8").split("\n").slice(0,41))try{let d=JSON.parse(b);if(d&&"object"==typeof d&&!Array.isArray(d)&&(c=ad(a,d)))break}catch{}}catch{}let d=ac(c);return ab.set(a.path,[a.size,d]),d}(a)}),await ar(a,a=>{if("claude-tasks"===a.root&&a.path.endsWith(".output")){let c=b.get(a.path)??null;a.pid=c,a.proc=null===c?"done":"running",null!==c&&(a.activity="live",a.activityReason="output_held")}}),(0,ak.em)(a),await ar(a,a=>{a.effort=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=L(function(a){if(null===a.pid)return null;let b=(0,I.$U)(a.pid);for(let c=0;c<b.length-1;c++){if("codex"===a.engine&&("-c"===b[c]||"--config"===b[c])){let a=b[c+1].match(/^model_reasoning_effort\s*=\s*"?([a-z]+)"?$/i);if(a)return a[1]}if("claude"===a.engine&&"--effort"===b[c])return b[c+1]}return null}(a));if("claude-projects"===a.root&&b)return b;let c=J.get(a.path);if(c?.[0]===a.size)return c[1]??b;let d=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(d=L(M(a,b)))break;if(!d)try{for(let b of k().readFileSync(a.path,"utf8").split("\n").slice(0,41))try{let c=JSON.parse(b);if(c&&"object"==typeof c&&!Array.isArray(c)&&(d=L(M(a,c))))break}catch{}}catch{}return J.set(a.path,[a.size,d]),d??b}(a)}),await as(a,async a=>{let b=(0,aj.x)(a);a.pendingQuestion=b&&null!==a.pid?{...b,paneTarget:await (0,e.u1)(a.pid)}:b;let c=await ao(a);a.waitingInput=c.waiting,c.atComposer&&"stalled"===a.activity&&(a.activity=Date.now()/1e3-a.mtime<900?"recent":"idle",a.activityReason="pane_at_composer"),a.plan=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=ae.get(a.path);if(b?.[0]===a.size)return b[1];let c=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(c="codex-sessions"===a.root?function(a){let b,c=(0,x.xK)(a.payload);if(!c||"function_call"!==c.type||"update_plan"!==(0,x.r$)(c.name))return null;let d=(0,x.r$)(c.arguments);if(!d)return null;try{b=JSON.parse(d)}catch{return null}return ah((0,x.Em)((0,x.xK)(b)?.plan).map(a=>{let b=(0,x.r$)(a.step)?.trim();return b?{text:b,status:ag(a.status)}:null}).filter(a=>null!==a),(0,x.r$)(a.timestamp))}(b):function(a){if("assistant"!==a.type)return null;for(let b of(0,x.Em)((0,x.xK)(a.message)?.content))if("tool_use"===b.type&&"TodoWrite"===(0,x.r$)(b.name))return ah((0,x.Em)((0,x.xK)(b.input)?.todos).map(a=>{let b=ag(a.status),c=("in_progress"===b?(0,x.r$)(a.activeForm)?.trim():null)||(0,x.r$)(a.content)?.trim()||null;return c?{text:c,status:b}:null}).filter(a=>null!==a),(0,x.r$)(a.timestamp));return null}(b))break;return ae.set(a.path,[a.size,c]),c}(a),a.goal=function(a){if("codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=af.get(a.path);if(b?.[0]===a.size)return b[1];let c=null,d=null,e=null,g=null;for(let b of(0,f.He)(a.path,a.size).reverse()){let a=function(a){let b=(0,x.xK)(a.payload);if(!b)return null;if("thread_goal_updated"===b.type){let a=(0,x.xK)(b.goal);return a?{objective:(0,x.r$)(a.objective),status:ai(a.status)??void 0,tokensUsed:(0,x.Vg)(a.tokensUsed),timeUsedSeconds:(0,x.Vg)(a.timeUsedSeconds)}:null}if("function_call"===b.type&&"update_goal"===(0,x.r$)(b.name)){let a=(0,x.r$)(b.arguments);if(!a)return null;try{let b=(0,x.xK)(JSON.parse(a));if(!b)return null;return{objective:(0,x.r$)(b.objective),status:ai(b.status)??((0,x.r$)(b.objective)?"active":void 0)}}catch{}}return null}(b);if(a&&(null===d&&a.status&&(d=a.status),null===c&&a.objective&&(c=a.objective),null===e&&"number"==typeof a.tokensUsed&&(e=a.tokensUsed),null===g&&"number"==typeof a.timeUsedSeconds&&(g=a.timeUsedSeconds),null!==d&&null!==c&&null!==e))break}let h=null===d&&null===c?null:{objective:c,status:d??"active",tokensUsed:e,timeUsedSeconds:g};return af.set(a.path,[a.size,h]),h}(a),a.ctx=function(a){if("claude-projects"!==a.root&&"codex-sessions"!==a.root||!a.path.endsWith(".jsonl"))return null;let b=y.get(a.path);if(b?.[0]===a.size)return b[1];let c=null;for(let b of(0,f.He)(a.path,a.size).reverse())if(c="codex-sessions"===a.root?function(a){let b=(0,x.xK)(a.payload);if(!b||"token_count"!==(0,x.r$)(b.type))return null;let c=(0,x.xK)(b.info);if(!c)return null;let d=(0,x.xK)(c.last_token_usage)??(0,x.xK)(c.total_token_usage);return d?z((0,x.Vg)(d.total_tokens),(0,x.Vg)(c.model_context_window)):null}(b):function(a){if("assistant"!==a.type)return null;let b=(0,x.xK)(a.message),c=(0,x.r$)(b?.model);if(!b||"<synthetic>"===c)return null;let d=(0,x.xK)(b.usage);if(!d)return null;let e=((0,x.Vg)(d.input_tokens)??0)+((0,x.Vg)(d.cache_read_input_tokens)??0)+((0,x.Vg)(d.cache_creation_input_tokens)??0),f=c?.includes("[1m]")||c?.includes("fable")?1e6:2e5;return e>f&&(f=1e6),z(e,f)}(b))break;return y.set(a.path,[a.size,c]),c}(a)}),await ar(a,a=>{(a.pendingQuestion||a.waitingInput)&&(0,d.M$)(a)}),await aa(a),await (0,g.zn)(a),await (0,v.u1)(a),!function(a,b={}){if("1"!==process.env.LLV_ENABLE_AUTO_TASK_INBOX)return;let c=b.now?.()??new Date;if(c.getTime()-s<36e5)return;s=c.getTime();let d=b.stateFile??r,e=function(a=r){try{let b=JSON.parse(k().readFileSync(a,"utf8"));return{lastRunAt:"string"==typeof b.lastRunAt?b.lastRunAt:null,seen:Array.isArray(b.seen)?b.seen.filter(a=>"string"==typeof a):[]}}catch{return{lastRunAt:null,seen:[]}}}(d),f=new Set(e.seen),g=Math.max(c.getTime()-36e5,e.lastRunAt?new Date(e.lastRunAt).getTime():0),h=new Set,j=[];(0,q.z4)(b=>{for(let a of b)a.source?.fingerprint&&h.add(a.source.fingerprint);let c=function(a,b,c){let d=[];for(let e of a.filter(a=>a.path.endsWith(".jsonl")&&("claude"===a.engine||"codex"===a.engine)&&1e3*a.mtime>=b).sort((a,b)=>a.mtime-b.mtime))(0,o.l)(e.path,e.engine).messages.forEach((a,b)=>{if("user"!==a.role)return;let f=function(a,b,c){var d;let e=t(b.text);return{path:a.path,ts:b.ts,text:e,fingerprint:(d=[a.path,b.ts??String(c),e],i().createHash("sha1").update(d.join("\0")).digest("hex")),engine:"codex"===a.engine?"codex":"claude"}}(e,a,b);if(c.has(f.fingerprint))return;let g=function(a){var b;let c,d,e,f=t(a);return!(c=f.trim())||/^(?:<|Caveat:|\[Request interrupted|This came from another Claude session|# AGENTS\.md instructions)/.test(c)||c.length<18||!u.test(f)?null:((e=(b=function(a){for(let[b,c]of[[/^создал[а]?\s+/iu,"создать "],[/^сделал[а]?\s+/iu,"сделать "],[/^написал[а]?\s+/iu,"написать "],[/^добавил[а]?\s+/iu,"добавить "],[/^исправил[а]?\s+/iu,"исправить "],[/^проверил[а]?\s+/iu,"проверить "],[/^запустил[а]?\s+/iu,"запустить "],[/^подготовил[а]?\s+/iu,"подготовить "],[/^обновил[а]?\s+/iu,"обновить "],[/^реализовал[а]?\s+/iu,"реализовать "]])if(b.test(a))return a.replace(b,c);return a}((d=f.split(/\n\s*\n/,1)[0]??f,(d.match(/^(.{18,}?[.!?。!?])(?:\s|$)/u)?.[1]??d).replace(/\s+/g," ").replace(/[.!?。!?]+$/u,"").trim()).replace(/^(?:я\s+бы\s+хотел(?:а)?|хочу|нужно|надо)(?:,?\s+чтобы\s+ты)?\s+/iu,"").replace(/^(?:пожалуйста|pls|please),?\s+/iu,"").replace(/^(?:i(?:'d| would)\s+like\s+(?:you\s+)?to|can you|could you)\s+/iu,"").trim())).charAt(0))?e.toLocaleUpperCase()+b.slice(1):b).slice(0,96).trim()||null}(f.text);g&&d.push({project:e.project,text:g,source:f,mtime:e.mtime})});return d.slice(-25)}(a,g,new Set([...f,...h])),d=b;for(let a of c){let b=d.filter(b=>b.project===a.project),c=(0,p.UT)(d,{project:a.project,text:a.text,pos:function(a){let b=a.length;return{x:740+b%2*300,y:120+120*Math.floor(b/2)}}(b),source:a.source});c.ok&&(d=c.tasks,j.push(a.source.fingerprint),f.add(a.source.fingerprint))}return{tasks:d===b?void 0:d,result:void 0}}),function(a,b=r){k().mkdirSync(m().dirname(b),{recursive:!0});let c=m().join(m().dirname(b),`.${m().basename(b)}.${process.pid}.${i().randomUUID()}.tmp`);k().writeFileSync(c,JSON.stringify({lastRunAt:a.lastRunAt,seen:a.seen.slice(-5e3)},null,2)+"\n","utf8"),k().renameSync(c,b)}({lastRunAt:c.toISOString(),seen:[...f,...j]},d)}(a),a}},17341:(a,b,c)=>{c.d(b,{M:()=>k,x:()=>l});var d=c(23855),e=c(52509),f=c(95544);let g=(0,e.E)("questions");function h(a){return(0,f.r$)(a.timestamp)??(0,f.r$)(a.created_at)??new Date().toISOString()}function i(a){let b=(0,f.r$)(a.label)?.trim();return b?{label:b.replace(/\s*\(Recommended\)\s*$/i,"").trim()||b,description:(0,f.r$)(a.description)?.trim()??"",recommended:/\(Recommended\)\s*$/i.test(b)}:null}function j(a){let b=(0,f.r$)(a.question)?.trim();if(!b)return null;let c=(0,f.Em)(a.options).map(i).filter(a=>null!==a);return c.sort((a,b)=>Number(b.recommended)-Number(a.recommended)),{question:b,header:(0,f.r$)(a.header)?.trim()??"Question",multiSelect:!0===a.multiSelect,options:c}}function k(a,b,c){for(let e of(0,d.He)(a,b).reverse()){let a=function(a,b){if((0,f.r$)(a.tool_use_id)===b){let b=a.content;return"string"==typeof b?b:Array.isArray(b)?b.map(a=>"string"==typeof a?a:(0,f.r$)((0,f.xK)(a)?.text)??"").filter(Boolean).join("\n"):JSON.stringify(a)}for(let c of(0,f.Em)((0,f.xK)(a.message)?.content)){if("tool_result"!==c.type||(0,f.r$)(c.tool_use_id)!==b)continue;let a=c.content;if("string"==typeof a)return a;if(Array.isArray(a))return a.map(a=>"string"==typeof a?a:(0,f.r$)((0,f.xK)(a)?.text)??"").filter(Boolean).join("\n");return JSON.stringify(c)}return null}(e,c);if(null!==a)return a.trim()||"answer is recorded in the transcript"}return null}function l(a){if("claude-projects"!==a.root||!a.path.endsWith(".jsonl")||"running"!==a.proc||null===a.pid)return null;let b=g.get(a.path);if(b?.[0]===a.size)return b[1];let c=null,e=new Set;for(let b of(0,d.He)(a.path,a.size).reverse()){let d=function(a){let b=(0,f.r$)(a.tool_use_id);if(b)return b;for(let b of(0,f.Em)((0,f.xK)(a.message)?.content)){let a=(0,f.r$)(b.tool_use_id);if("tool_result"===b.type&&a)return a}return null}(b);if(d){e.add(d);continue}let g=function(a){if("assistant"!==a.type)return null;for(let b of(0,f.Em)((0,f.xK)(a.message)?.content)){if("tool_use"!==b.type)continue;let a=(0,f.r$)(b.id),c=(0,f.r$)(b.name),d=(0,f.xK)(b.input)??{};if(a&&("AskUserQuestion"===c||"ExitPlanMode"===c))return{id:a,name:c,input:d}}return null}(b);if(!g||e.has(g.id))break;if("AskUserQuestion"===g.name){let d=(0,f.Em)(g.input.questions).map(j).filter(a=>null!==a);if(!d.length)break;c={kind:"question",toolUseId:g.id,transcriptPath:a.path,pid:a.pid,paneTarget:null,askedAt:h(b),questions:d};break}let i=(0,f.r$)(g.input.plan)?.trim();if(!i)break;c={kind:"plan",toolUseId:g.id,transcriptPath:a.path,pid:a.pid,paneTarget:null,askedAt:h(b),plan:i};break}return g.set(a.path,[a.size,c]),c}},21153:(a,b,c)=>{c.d(b,{h6:()=>m,z4:()=>n});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h);let j=(0,c(91724).BQ)("tasks.json");function k(a){var b;return!(!a||"object"!=typeof a||Array.isArray(a))&&("string"==typeof a.path||null===a.path)&&("number"==typeof a.panePid||null===a.panePid)&&(null===a.panePid||Number.isInteger(a.panePid)&&a.panePid>0)&&("delivered"===(b=a.state)||"failed"===b||"spawning"===b||"handoff"===b)&&("string"==typeof a.error||null===a.error)&&"string"==typeof a.at}function l(a){var b,c,d;return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.project&&("inbox"===(b=a.status)||"assigned"===b||"blocked"===b||"done"===b)&&"string"==typeof a.text&&!(!(c=a.pos)||"object"!=typeof c||Array.isArray(c))&&"number"==typeof c.x&&Number.isFinite(c.x)&&"number"==typeof c.y&&Number.isFinite(c.y)&&Array.isArray(a.assignments)&&a.assignments.every(k)&&(void 0===a.source||!(!(d=a.source)||"object"!=typeof d||Array.isArray(d))&&"string"==typeof d.path&&("string"==typeof d.ts||null===d.ts)&&"string"==typeof d.text&&"string"==typeof d.fingerprint&&("claude"===d.engine||"codex"===d.engine))&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt}function m(a=j){let b=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}(a);return Array.isArray(b?.tasks)?b.tasks.filter(l):[]}function n(a,b=j){let c=a(m(b));return c.tasks&&function(a,b=j){let c;g().mkdirSync(i().dirname(b),{recursive:!0}),c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`),g().writeFileSync(c,JSON.stringify({tasks:a},null,2)+"\n","utf8"),g().renameSync(c,b)}(c.tasks,b),c.result}},23855:(a,b,c)=>{c.d(b,{He:()=>k,Hz:()=>l});var d=c(73024),e=c.n(d),f=c(52509),g=c(95544),h=c(23921);let i=(0,f.E)("turn"),j=(0,f.E)("tail");function k(a,b,c=131072){let d=j.get(a);if(d&&d[0]===b&&d[1]===c)return d[2].slice();let f=function(a,b,c){let d,f=0;try{let g=e().openSync(a,"r");try{f=Math.max(0,b-c);let a=Buffer.alloc(Math.max(0,b-f));e().readSync(g,a,0,a.length,f),d=a.toString("utf8")}finally{e().closeSync(g)}}catch{return[]}let g=d.split("\n");f>0&&g.length&&(g=g.slice(1));let h=[];for(let a of g){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&h.push(a)}catch{}}return h}(a,b,c);if(j.size>=64&&!j.has(a)){let a=j.keys().next().value;void 0!==a&&j.delete(a)}return j.set(a,[b,c,f]),f.slice()}function l(a,b,c,d){let e=Date.now()/1e3-c;if("claude-tasks"===a&&b.endsWith(".output"))return(0,h.$w)().has(b)?{state:"live",reason:"output_held"}:{state:e<900?"recent":"idle",reason:"output_released"};if(b.endsWith(".jsonl")){let c,h=i.get(b);if(h?.[0]===d)c=h[1];else{var f;f=a.startsWith("codex"),c=function(a,b){let c=null;for(let d of[...a].reverse()){if(b){let a=(0,g.xK)(d.payload)??{},b=(0,g.r$)(a.type);if("session_meta"===d.type||"token_count"===b||"reasoning"===b||null===b)continue;if("task_complete"===b||"turn_complete"===b||"turn_aborted"===b)return"done";if("task_started"===b||"turn_started"===b||"user_message"===b)return"busy";if("agent_message"===b||"message"===b&&"assistant"===a.role){c??="done";continue}if("message"===b)return"busy";c??="busy";continue}let a=d.type;if("assistant"===a){let a=(0,g.r$)(((0,g.xK)(d.message)??{}).stop_reason);return"end_turn"===a||"stop_sequence"===a?"done":"busy"}if("user"===a)return"busy"}return c}(k(b,d),f),i.set(b,[d,c])}if("busy"===c)return e<180?{state:"live",reason:"jsonl_turn_open"}:{state:"stalled",reason:"jsonl_turn_stalled"};if("done"===c)return{state:e<900?"recent":"idle",reason:"jsonl_turn_completed"}}return e<20?{state:"live",reason:"mtime_fresh"}:e<900?{state:"recent",reason:"mtime_recent"}:{state:"idle",reason:"mtime_old"}}},23921:(a,b,c)=>{c.d(b,{$L:()=>s,$U:()=>r,$w:()=>n,BB:()=>q,Bj:()=>x,FQ:()=>p,Fe:()=>t,Ib:()=>w,SP:()=>o,Vt:()=>v,pl:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(59683),i=c(89333);let j=null,k=null,l=null;function m(a){return Number.isInteger(a)&&a>0&&h.B.pidAlive(a)}function n(a=!1){let b=Date.now();if(!a&&j&&b-j.at<12e3)return j.map;let c=new Map;return h.B.scanFdTargetsUnder(i.GH["claude-tasks"],(a,b)=>{a.endsWith(".output")&&!c.has(a)&&c.set(a,b)}),j={at:b,map:c},c}function o(a,b=!1){let c=new Map;for(let b of a){if(c.size>=512)break;if(!b)continue;c.set(b,b);let a=function(a){try{return e().realpathSync(a)}catch{return null}}(b);a&&c.set(a,b)}let d=[...c.keys()].sort().join("\0"),f=Date.now();if(!b&&k&&k.key===d&&f-k.at<12e3)return k.map;let g=new Map;return c.size>0&&h.B.scanFdTargetsFor([...c.keys()],(a,b,d)=>{let e=c.get(a);e&&!g.has(e)&&d()&&g.set(e,b)}),k={at:f,key:d,map:g},g}function p(a,b){return h.B.pidWritesPath(a,b)}function q(a,b){return h.B.pidHoldsPath(a,b)}function r(a){return h.B.readArgv(a)}function s(a){return h.B.readCwd(a)}function t(a){for(let b of a.slice(0,2)){let a=g().basename(b);if("claude"===a||"claude.exe"===a)return"claude";if("codex"===a||"codex.exe"===a)return"codex"}return null}let u=new Set(["daemon","--bg-pty-host","--bg-spare"]);function v(a){return a.some(a=>u.has(a))}function w(a){return h.B.readPpid(a)}function x(a=!1){let b=Date.now();if(!a&&l&&b-l.at<12e3)return l.list;let c=[];for(let a of h.B.listProcesses()){let b=t(a.argv);null===b||v(a.argv)||null!==a.cwd&&c.push({pid:a.pid,engine:b,argv:a.argv,cwd:a.cwd,tty:a.tty})}return l={at:b,list:c},c}},25750:(a,b,c)=>{c.d(b,{J8:()=>s,if:()=>p,Sn:()=>q,V_:()=>r});var d=c(73024),e=c.n(d);let f=/^\s*(?:VERDICT:\s*)?(REQUEST_CHANGES|APPROVE|COMMENT)\b/m,g=/^\s*(\d+)[.)]\s+(.*)$/,h=/(?:\[(P[0-3])\]|\b(Critical|High|Medium|Low|Info|P[0-3])\b)/i,i=/((?:\.{1,2}\/|\/|~\/)?[\w@.+-][\w@.+\-/]*\.(?:tsx?|jsx?|mjs|cjs|mts|cts|py|go|rs|md|json|ya?ml|toml|css|scss|html|sql|sh|env|ftl|txt))(?::(\d+))?/i,j=/\[([^\]]+)\]\(([^)\s]+)\)/,k=/([\w.-]*(?:api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|bearer|secret|password|passwd|pwd|token))\b(\s*[:=]\s*)(["']?)[^\s"',}]+/gi;function l(a){let b=a.replace(k,(a,b,c,d)=>`${b}${c}${d}[redacted]`);return{raw:b.slice(0,24e3),truncated:b.length>24e3}}var m=c(23855),n=c(95544),o=c(98590);function p(a){for(let b of(0,m.He)(a.path,a.size).reverse()){let c=Date.parse(String(b.timestamp??""))||1e3*a.mtime;if("codex-sessions"===a.root){let a=(0,n.xK)(b.payload)??{},d=(0,n.r$)(a.type);if("agent_message"===d)return{text:(0,n.r$)(a.message)??"",ts:c};if("message"===d&&"assistant"===a.role){let b=(0,n.Em)(a.content).map(a=>(0,n.r$)(a.text)??(0,n.r$)(a.input_text)??"").join("\n").trim();if(b)return{text:b,ts:c}}}if("claude-projects"===a.root&&"assistant"===b.type){let a=(0,n.Em)((0,n.xK)(b.message)?.content).filter(a=>"text"===a.type).map(a=>(0,n.r$)(a.text)??"").join("\n").trim();if(a)return{text:a,ts:c}}}return null}function q(a){let b=a.match(f)?.[1];if(!b)return null;let c=function(a){let b=a.match(f)?.[1];if(!b)return null;let c=[],d=[],e=null,k=()=>{let a,b,d,f=e?.trim();f&&c.push((a=function(a){let b=a.toUpperCase();if("P0"===b||"P1"===b||"P2"===b||"P3"===b)return b;let c=a.toLowerCase();return"critical"===c?"Critical":"high"===c?"High":"medium"===c?"Medium":"low"===c?"Low":"Info"}(f.match(h)?.[1]??f.match(h)?.[2]??"Info"),b=function(a){let b=a.match(j);if(b){var c;let a,d=(a=(c=(b[2]??"").replace(/^file:\/\//,"")).match(/^(.*?):(\d+(?:-\d+)?)$/))?{target:a[1]??c,line:a[2]}:{target:c},e=d.line?Number(d.line.split("-",1)[0]):void 0;return{file:d.target||b[1],line:Number.isFinite(e)?e:void 0}}let d=a.match(i);if(!d)return{};let e=d[2]?Number(d[2]):void 0;return{file:d[1],line:Number.isFinite(e)?e:void 0}}(f),d=function(a){let b=a,c=b.match(h);if(c&&void 0!==c.index){let a=b.slice(c.index+c[0].length).replace(/^[\s.:–—-]+/,"");a&&(b=a)}return b.replace(j,"$1").replace(/`([^`]*)`/g,"$1").replace(/\s+/g," ").trim().slice(0,200)}(f)||f.slice(0,200)||"Finding",{severity:a,file:b.file,line:b.line,title:d,body:l(f).raw})),e=null};for(let b of a.split("\n")){let a=b.trimEnd(),h=a.match(g);if(h){k(),e=h[2]??"";continue}let i=a.trim();if(null!==e){i?e=`${e}
3
+ ${i}`:k();continue}!(!i||f.test(a)||/^(findings?|summary|open questions?|tests?|residual risk)\s*:?\s*$/i.test(i))&&0===c.length&&d.length<3&&i.length<=240&&d.push(i)}k();let m=c.filter(a=>h.test(a.body)).length;return b||/^findings?\s*:?$/im.test(a)||m>=2||m>=1&&/\b(review|request_changes|approve|comment)\b/i.test(a)?{kind:"review",ts:null,verdict:b,findings:c,summary:d,raw:l(a).raw}:null}(a);return{verdict:b,findingsCount:c?.findings.length??0,content:(0,o.Sn)(b,a)}}function r(a){if(!a.findingsPath)return null;try{return q(e().readFileSync(a.findingsPath,"utf8"))}catch{return null}}function s(a,b){if(!a.reviewerPath)return null;let c=b.get(a.reviewerPath);if(!c)return null;let d=p(c);return d?q(d.text):null}},26474:(a,b,c)=>{c.d(b,{A6:()=>q,N0:()=>p,OA:()=>s,_b:()=>r,a9:()=>o});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(23921);let j=(0,h.BQ)("handoff-lineage.json"),k=null,l=null,m=!1;function n(){if(k&&l)return{panes:k,children:l};let a={};try{a=JSON.parse(e().readFileSync(j,"utf8"))}catch{}let b=function(a,b=i.pl){let c=new Map,d=new Map;for(let[d,e]of Object.entries(a.panes??{})){let a=Number(d);Number.isInteger(a)&&a>0&&"string"==typeof e&&b(a)&&c.set(a,e)}for(let[b,c]of Object.entries(a.children??{}))"string"==typeof c&&d.set(b,c);let e=Object.keys(a.panes??{}).length+Object.keys(a.children??{}).length;return{panes:c,children:d,dirty:c.size+d.size!==e}}(a);return k=b.panes,l=b.children,b.dirty&&(m=!0),{panes:k,children:l}}function o(a,b){if(!Number.isInteger(a)||a<=0)return;let c=n();c.panes.get(a)!==b&&(c.panes.set(a,b),m=!0,s())}function p(a){return n().panes.get(a)??null}function q(a,b){let c=n();if(c.children.get(a)!==b){for(c.children.set(a,b);c.children.size>2e4;){let a=c.children.keys().next().value;if(void 0===a)break;c.children.delete(a)}m=!0}}function r(a){return n().children.get(a)??null}function s(){if(!m)return;m=!1;let a=n();try{e().mkdirSync(g().dirname(j),{recursive:!0}),e().writeFileSync(j,JSON.stringify({panes:Object.fromEntries([...a.panes].map(([a,b])=>[String(a),b])),children:Object.fromEntries(a.children)}))}catch{}}},27359:(a,b,c)=>{c.d(b,{EB:()=>e,WM:()=>y,_1:()=>o,cZ:()=>w,d3:()=>z,dC:()=>m,fm:()=>v,g2:()=>l,ye:()=>n});let d=/^\s*[❯›]/,e=/\? for shortcuts|bypass permissions on|Press up to edit|⏎ send|Context \d+% used/,f=/Resume from summary/,g=/Do you trust|trust this folder|trust the contents of this directory/i,h=/Enter to confirm|Press enter to continue/i,i=/Allow command\?|Do you want to proceed\?|Press enter to approve|approve this (command|action)|\(y\/n\)|Yes, (allow|proceed|run)/i,j=/You(?:'ve| have) (?:hit|reached) (?:your|the) .{0,24}limit|(?:usage|rate).?limit (?:reached|hit|exceeded)|out of (?:quota|credits)|\d+.hour limit reached|limit resets/i,k=new Set(["zsh","bash","fish","sh","dash"]);function l(a){return null!==a&&k.has(a)}function m(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a-=1){let c=b[a]??"";if(d.test(c))return c}return""}function n(a){return f.test(a)?"resume_picker":g.test(a)?"trust_prompt":h.test(a)?"startup_gate":null}function o(a){let b=a.split("\n"),c=-1;for(let a=b.length-1;a>=0;a-=1)if(d.test(b[a]??"")){c=a;break}if(-1!==c){let a=b.slice(c+1).join("\n");if(e.test(a)&&!i.test(a)&&!j.test(a))return null}let f=b.slice(-14).join("\n");return i.test(f)?"approval_prompt":j.test(f)?"rate_limit":null}let p=/^\s*❯?\s*\d+\.\s+\S/m,q=/Enter to (select|confirm|submit)/,r=/^\s*[─━—]{6,}\s*$/,s=/[☐☑✔☒]/,t=/^\s*(❯\s*)?(\d{1,2})\.\s+(\S.*)$/,u=/\s*\(Recommended\)\s*$/i;function v(a){let b=a.split("\n").map(a=>a.replace(/\s+$/,"")),c=-1;for(let a=b.length-1;a>=0;a-=1)if(q.test(b[a]??"")){c=a;break}if(-1===c)return null;let d=-1;for(let a=c-1;a>=Math.max(0,c-40);a-=1){let c=t.exec(b[a]??"");if(c&&1===Number(c[2])){d=a;break}}if(-1===d)return null;let e=[];for(let a=d;a<c;a+=1){let c=b[a]??"";if(!c.trim()||r.test(c))continue;let d=t.exec(c);if(d){let a=d[3].trim(),b=a.replace(u,"").trim();e.push({value:Number(d[2]),label:b||a,description:"",recommended:u.test(a)});continue}let f=e[e.length-1];f&&/^\s{2,}\S/.test(c)&&(f.description=f.description?`${f.description} ${c.trim()}`:c.trim())}if(e.length<2||e.some((a,b)=>a.value!==b+1))return null;let f=[],g=d-1;for(;g>=0&&!(b[g]??"").trim();)g-=1;for(let a=g;a>=0&&f.length<8;a-=1){let c=b[a]??"";if(!c.trim()||r.test(c)||s.test(c)||t.test(c))break;f.unshift(c.trim())}let h=f.join(" ").trim();if(!h)return null;let i=[],j=g-f.length;for(;j>=0&&!(b[j]??"").trim();)j-=1;let k=j>=0?b[j]??"":"";if(s.test(k))for(let a of k.replace(/[←→]/g," ").split(/\s{2,}/)){let b=a.replace(/[☐☑✔☒]/g,"").trim();b&&i.push({label:b,done:/[☑✔]/.test(a)})}return{question:h,tabs:i,options:e}}function w(a){if(null!==o(a)||g.test(a))return!0;let b=a.split("\n").slice(-14).join("\n");return p.test(b)&&!e.test(b)}let x=/esc to interrupt|ctrl\+c to (?:stop|cancel)|Interrupting/i;function y(a){if(w(a))return!1;let b=a.split("\n").slice(-14).join("\n");return""!==m(a)&&e.test(b)&&!x.test(b)}function z(a){return a.split("\n").filter(a=>a.trim()).slice(-3).join(" | ").slice(0,300)}},30795:(a,b,c)=>{c.d(b,{cr:()=>d});function d(a,b=160){let c=a.replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/[*_~#>]+/g,"").replace(/\s+/g," ").trim().replace(/(?:\/[^\s)]+){3,}/g,a=>{if(a.length<=40)return a;let b=a.split("/").filter(Boolean);return b.length>=2?".../"+b.slice(-2).join("/"):a}).replace(/\s+/g," ").trim();return c.length>b?c.slice(0,b-1).trimEnd()+"…":c}},38905:(a,b,c)=>{c.d(b,{vT:()=>s,ni:()=>t,_p:()=>p,n1:()=>u});var d=c(77598),e=c.n(d),f=c(16089),g=c(1785),h=c(27359),i=c(64747),j=c(3249),k=c(51906),l=c(31421),m=c(59680),n=c(98590);function o(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}async function p(a,b){let c=b.find(b=>b.path===a.implementerPath);if(!c)return{error:"implementer transcript is unknown",status:404};if("claude-projects"!==c.root&&"codex-sessions"!==c.root)return{error:"implementer must be a Claude or Codex session",status:400};let d=function(a){let b=(0,n.Vd)();if(a.preset){let c=b.find(b=>b.name===a.preset);return c?{implementer:{...c.implementer},reviewer:{...c.reviewer}}:null}let c=o(a.roles?.implementer),d=o(a.roles?.reviewer);return c&&d?{implementer:c,reviewer:d}:null}(a);if(!d)return{error:"invalid flow roles or preset",status:400};let g="merge-base"===a.baseMode?"merge-base":"head",h=(0,f.tX)(c.path);if(!h)return{error:"could not determine the session working directory",status:409};let i="string"==typeof a.baseRef&&a.baseRef.trim()?{ok:!0,sha:a.baseRef.trim()}:function(a,b){let c="head"===b?["rev-parse","HEAD"]:["merge-base","HEAD",function(a){let b=(0,l.spawnSync)("git",["symbolic-ref","--quiet","--short","refs/remotes/origin/HEAD"],{cwd:a,encoding:"utf8"});if(0===b.status&&b.stdout.trim())return b.stdout.trim().replace(/^origin\//,"origin/");for(let b of["origin/main","origin/master","main","master"])if(0===(0,l.spawnSync)("git",["rev-parse","--verify",b],{cwd:a,encoding:"utf8"}).status)return b;return null}(a)??"origin/main"],d=(0,l.spawnSync)("git",c,{cwd:a,encoding:"utf8"});if(0!==d.status)return{ok:!1,error:(d.stderr||d.stdout||"failed to resolve git base ref").trim()};let e=d.stdout.trim();return e?{ok:!0,sha:e}:{ok:!1,error:"git returned an empty base ref"}}(h,g);if(!i.ok)return{error:i.error,status:409};let k=(0,n.mL)();if(k.find(a=>a.implementerPath===c.path&&null===a.closedAt&&"closed"!==a.state))return{error:"implementer already has an active flow",status:409};let p={id:e().randomUUID().slice(0,8),template:"implement-review-loop",project:c.project,cwd:h,implementerPath:c.path,roles:d,baseRef:i.sha,baseMode:g,mode:"manual"===a.mode?"manual":"auto",reviewerMode:"pane"===a.reviewerMode?"pane":"headless",roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>0?Math.min(a.roundLimit,50):5,state:"waiting_ready",pausedState:null,stateDetail:null,rounds:[],createdAt:(0,j.Ec)(),closedAt:null};k.push(p),(0,n.tu)(k);try{await (0,j.iq)(p,new Map(b.map(a=>[a.path,a])),(0,m.SB)())}catch(a){p.state="paused",p.pausedState="waiting_ready",p.stateDetail=a instanceof Error?a.message:String(a),(0,n.tu)(k)}return{flow:p}}function q(a){return"string"==typeof a.note&&a.note.trim()?a.note.trim().slice(0,2e3):null}async function r(a,b){if((0,k.T)(a.id,b.n,b.reviewerPid??null),"pane"===a.reviewerMode)try{let a=b.reviewerPane;if(a){let b=await (0,i.RZ)(a.paneId);b&&b.windowName===a.windowName&&!(0,h.g2)(b.command)&&await (0,i.VT)(a.paneId)}else if(b.reviewerPath){let a=await (0,g.AB)(b.reviewerPath);null!==a&&await (0,i.VT)(a)}}catch{}}async function s(a){let b=(0,n.mL)(),c=b.find(b=>b.id===a);if(!c)return{error:"flow not found",status:404};let d=(0,j.Hw)(c);return"reviewing"===c.state&&d?(await r(c,d),d.error="cancelled by user",c.state="needs_decision",c.stateDetail="round cancelled by user",(0,n.tu)(b),{flow:c}):{error:"no reviewer is running for this flow",status:409}}async function t(a){let b=(0,n.mL)(),c=b.find(b=>b.id===a);if(!c)return{error:"flow not found",status:404};let d=(0,j.Hw)(c);return d&&null===d.verdict&&!d.error&&await r(c,d),c.state="closed",c.closedAt=(0,j.Ec)(),c.stateDetail=null,(0,n.tu)(b),{flow:c}}function u(a,b){let c=(0,n.mL)(),d=c.find(b=>b.id===a);if(!d)return{error:"flow not found",status:404};let e=(0,j.Hw)(d);if("pause"===b.action)"paused"!==d.state&&"closed"!==d.state&&(d.pausedState=d.state,d.state="paused",d.stateDetail="paused by user");else if("resume"===b.action)"paused"===d.state&&(d.state=d.pausedState&&"paused"!==d.pausedState?d.pausedState:"waiting_ready",d.pausedState=null,d.stateDetail=null);else if("set-mode"===b.action){if("auto"!==b.mode&&"manual"!==b.mode)return{error:"mode must be auto or manual",status:400};d.mode=b.mode}else if("advance"===b.action){if("waiting_ready"===d.state)d.rounds.push((0,j.xz)(d,"button",q(b))),d.state="manual"===d.mode?"spawn_pending":"spawning";else if("spawn_pending"===d.state)d.state="spawning";else{if("relay_pending"!==d.state)return{error:"flow cannot advance from its current state",status:409};d.state="relaying"}d.stateDetail=null}else if("retry-round"===b.action){if("needs_decision"!==d.state||!e)return{error:"flow cannot retry from its current state",status:409};(0,k.T)(d.id,e.n,e.reviewerPid??null),Object.assign(e,{reviewerPath:null,sessionId:null,reviewerPid:null,reviewerPane:null,findingsPath:null,verdict:null,findingsCount:null,readyNote:q(b)??e.readyNote,startedAt:(0,j.Ec)(),spawnStartedAt:null,relayStartedAt:null,reviewedAt:null,relayedAt:null,error:null}),d.state="manual"===d.mode?"spawn_pending":"spawning",d.stateDetail=null}else if("extend"===b.action){let a=Number.isInteger(b.rounds)&&b.rounds&&b.rounds>0?Math.min(b.rounds,20):1;d.roundLimit>0&&(d.roundLimit+=a),"needs_decision"===d.state&&(d.state="waiting_ready",d.stateDetail=null)}else if("set-round-limit"===b.action){let a=b.rounds;if(!Number.isInteger(a)||void 0===a||a<0||a>50)return{error:"rounds must be an integer 0–50 (0 = unlimited)",status:400};d.roundLimit=0===a?0:Math.max(a,d.rounds.length),"needs_decision"===d.state&&"round limit reached"===d.stateDetail&&(0===d.roundLimit||d.roundLimit>d.rounds.length)&&(d.state="waiting_ready",d.stateDetail=null)}else if("another-round"===b.action){if("done_comment"!==d.state)return{error:"flow is not waiting for another round",status:409};d.closedAt=null,d.state="waiting_ready",d.stateDetail=null}return e&&"spawning"===d.state&&(e.error=null),(0,n.tu)(c),{flow:d}}},41017:(a,b,c)=>{c.d(b,{zN:()=>Z,WD:()=>$,w1:()=>Y,u1:()=>W});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(14509),k=c(42087),l=c(16089),m=c(38905),n=c(25750),o=c(98590),p=c(26474),q=c(66024),r=c(70107),s=c(27359),t=c(64747),u=c(31421),v=c(23921),w=c(46825);let x=(a,b,c)=>{let d=(0,u.spawnSync)(a,b,{cwd:c,encoding:"utf8"});return d.error?{code:null,stdout:"",stderr:d.error.message}:{code:d.status,stdout:d.stdout??"",stderr:d.stderr??""}};function y(a,b){let c=(b.stderr||b.stdout||"no output").trim();return{ok:!1,error:`${a}: ${c}`}}function z(a){let b=a.template.setup;if(!b)return{pid:null,error:"workflow has no setup command"};let c=(0,w.VO)(a.id);g().mkdirSync(i().dirname(c),{recursive:!0}),g().rmSync(c,{force:!0});let d=g().openSync((0,w._F)(a.id),"w"),e=g().openSync((0,w.RK)(a.id),"w");try{let f=(0,u.spawn)("sh",["-c",'sh -c "$LLV_SETUP_CMD"; printf \'%s\' "$?" > "$LLV_SETUP_EXIT"'],{cwd:a.worktreeDir,env:{...process.env,LLV_SETUP_CMD:b,LLV_SETUP_EXIT:c},detached:!0,stdio:["ignore",d,e]});return f.unref(),{pid:f.pid??null}}catch(a){return{pid:null,error:a instanceof Error?a.message:String(a)}}finally{g().closeSync(d),g().closeSync(e)}}function A(a){try{return g().readFileSync(a,"utf8")}catch{return""}}function B(a,b=Date.now()){let c=A((0,w.VO)(a.id)).trim();if(""!==c){if("0"===c)return{status:"done",detail:""};let b=A((0,w.RK)(a.id)).trim().split("\n").slice(-3).join("\n");return{status:"failed",detail:`setup exited with code ${c}${b?`: ${b}`:""}`}}if(null!=a.setupPid&&(0,v.pl)(a.setupPid))return{status:"running",detail:""};let d=function(a,b){try{return b-g().statSync(a).mtimeMs}catch{return null}}((0,w._F)(a.id),b);return null!==d&&d<3e3?{status:"running",detail:""}:{status:"failed",detail:"setup was interrupted before it finished"}}function C(a){let b=a.task.split("\n").map(a=>a.trim()).find(Boolean)??a.name;return b.length>72?b.slice(0,69)+"…":b}function D(a,b){let c=[];for(let d of a.stageRuns){if(d.index>=b||!d.doneAt)continue;let e=a.template.stages[d.index],f=e?.kind==="implement"?e.scope:`stage ${d.index+1}`;c.push(`- Stage ${d.index+1} (${f}): ${d.doneNote||"done, no note left"}`)}return c.length?["Notes from the stages already finished in this worktree:",...c,""]:[]}function E(a){return a.template.verify?[`Before declaring the stage done, verify your work: run \`${a.template.verify}\` and get it green.`]:["Before declaring the stage done, verify your work with the project's own build/test commands."]}let F=new Set(["approved","closed"]),G=new Set(["needs_decision","paused"]),H=/^STAGE_DONE:\s*(.*)$/m;function I(){return{exec:x,startSetup:z,setupStatus:B,spawnAgent:async(a,b,c)=>{let d=(0,j.lV)(a.engine,b,{model:a.model,effort:a.effort}),e=Date.now(),f=await (0,t.Tk)(d,c),g=await (0,k.s)({engine:a.engine,knownTranscript:d.transcript??null,panePid:f.panePid??null,cwd:b,startedAtMs:e});return{paneId:f.paneId,transcript:g,panePid:f.panePid??null}},paneAgentAlive:async a=>{let b=await (0,t.RZ)(a);return null!==b&&!(0,s.g2)(b.command)},headCwd:a=>(0,l.tX)(a),lastMessage:n.if,createFlow:m._p,advanceFlow:(a,b)=>void(0,m.n1)(a,{action:"advance",note:b}),closeFlow:m.ni,getFlow:a=>(0,o.mL)().find(b=>b.id===a)??null,findFlowByImplementer:a=>(0,o.mL)().filter(b=>b.implementerPath===a).sort((a,b)=>a.createdAt<b.createdAt?1:-1)[0]??null,projectForCwd:r.hY,linkChild:(a,b)=>{(0,p.A6)(a,b),(0,p.OA)()},now:()=>new Date().toISOString()}}let J=new Set;function K(a,b){return`${a.id}:${b.index}`}function L(a,b){a.pausedState=a.state,a.state="needs_decision",a.stateDetail=b}function M(a){return a.stageRuns[a.stageIndex]??null}function N(a){if(!a)return 0;let b=Date.parse(a);return Number.isFinite(b)?b:0}function O(a,b){for(let c=b-1;c>=0;c-=1){let b=a.stageRuns[c];if(b?.agentPath)return b.agentPath}return a.srcPath??null}function P(a){a.stageIndex+=1;let b=a.template.stages[a.stageIndex];a.state=b?.kind==="review-loop"?"reviewing":"implementing",a.stateDetail=null}async function Q(a,b,c,d,e,f,g){if(!b.startedAt){b.startedAt=f.now(),J.add(K(a,b)),g();try{let e=await f.spawnAgent(c,a.worktreeDir,d);if(b.paneId=e.paneId,e.transcript){b.agentPath=e.transcript;let c=O(a,b.index);c&&f.linkChild(e.transcript,c)}}catch(b){L(a,b instanceof Error?b.message:String(b))}return"spawning"}if(!b.paneId&&!J.has(K(a,b)))return L(a,"stage agent spawn was interrupted by a restart"),"spawning";if(!b.agentPath){let d,g,h,j=(d=N(b.startedAt)/1e3-5,g=function(a){let b=new Set;for(let c of a.stageRuns)c.agentPath&&b.add(c.agentPath);return a.fixerPath&&b.add(a.fixerPath),b}(a),h=e.filter(b=>b.engine===c.engine&&("claude-projects"===b.root||"codex-sessions"===b.root)&&!b.path.includes(i().sep+"subagents"+i().sep)&&b.mtime>=d&&!g.has(b.path)&&!("codex-sessions"===b.root&&b.path.endsWith(".jsonl")&&(0,q.ET)(b.path,b.size))&&f.headCwd(b.path)===a.worktreeDir).sort((a,b)=>b.mtime-a.mtime)[0],h?.path??null);if(j){b.agentPath=j;let c=O(a,b.index);return c&&f.linkChild(j,c),"ready"}return b.paneId&&!await f.paneAgentAlive(b.paneId)&&L(a,"stage agent died before its transcript appeared"),"waiting"}return"ready"}async function R(a,b,c){if(!a.baseRef){let d=function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return y("resolving the repo branch",c);let d=c.stdout.trim();if(!d||"HEAD"===d)return{ok:!1,error:"the repo checkout is detached; a workflow needs a branch to target"};let e=b("git",["worktree","add","-b",a.branch,a.worktreeDir,"HEAD"],a.repoDir);if(0!==e.code){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.worktreeDir);if(0!==c.code||c.stdout.trim()!==a.branch)return y("git worktree add",e)}let f=b("git",["rev-parse","HEAD"],a.worktreeDir);if(0!==f.code)return y("resolving the workflow base ref",f);let g=f.stdout.trim();return g?{ok:!0,baseBranch:d,baseRef:g}:{ok:!1,error:"git returned an empty base ref"}}(a,b.exec);if(!d.ok)return void L(a,d.error);a.baseBranch=d.baseBranch,a.baseRef=d.baseRef,c()}if(a.template.setup){if(null==a.setupPid&&"done"!==b.setupStatus(a).status){let c=b.startSetup(a);return null==c.pid?void L(a,c.error??"setup failed to start"):void(a.setupPid=c.pid)}let c=b.setupStatus(a);if("running"===c.status)return;if("failed"===c.status)return void L(a,c.detail)}a.state="implementing",a.stateDetail=null}async function S(a,b,c,d,e){var f,g;let h,i,j,k=M(a),l=(f=a.stageIndex,h=a.template.stages[f],h?.kind==="implement"?h.agent:h?.kind==="review-loop"?h.fixer:null);if(!k||!l)return void L(a,"stage index points outside the template");if(k.doneAt){"auto"===a.mode&&P(a);return}if("ready"!==await Q(a,k,l,(g=a.stageIndex,i=a.template.stages[g],j=i?.kind==="implement"?i.scope:"",[`You are stage ${g+1} of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",`Your scope for this stage: ${j}`,"Stay inside that scope — other stages own the rest of the work.","",...D(a,g),...E(a),"Commit your work in this worktree; later stages and the final PR build on your commits.","","When the stage is complete, end your final assistant message with a line that starts exactly with:","STAGE_DONE: <one-line note for the next stage>","Do not print the STAGE_DONE marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the stage is actually complete. The note travels to the next stage's kickoff, so state where the contract lives and what the next stage should build on."].join("\n")),b,d,e))return;let m=c.get(k.agentPath);if(!m)return;let n=function(a,b,c){if("live"===b.activity||"jsonl_turn_open"===b.activityReason||"jsonl_turn_stalled"===b.activityReason)return null;let d=c.lastMessage(b);return!d||d.ts<=N(a.startedAt)?null:d.text.match(H)?.[1]?.trim()??null}(k,m,d);if(null!==n){k.doneAt=d.now(),k.doneNote=n||null,"auto"===a.mode&&P(a);return}k.paneId&&!await d.paneAgentAlive(k.paneId)&&L(a,"stage agent pane died before STAGE_DONE")}async function T(a,b,c,d){let e,f,g=M(a),h=(e=a.template.stages.at(-1),e?.kind==="review-loop"?e:null);if(!g||!h)return void L(a,"the template has no review-loop stage");if(g.doneAt){"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}if("ready"!==await Q(a,g,h.fixer,(f=a.template.stages.length-1,[`You are the fixer of workflow "${a.name}", running in the dedicated worktree ${a.worktreeDir} on branch ${a.branch}.`,"","Task brief:",a.task.trim(),"",...D(a,f),"The implementation stages above are finished. A review loop starts now: a fresh reviewer examines the full workflow diff each round and its findings arrive here as messages.","","For each finding, apply the fix or argue against it. Respond to every finding with:","FIXED","or","REJECTED — <reason>","Give concrete arguments for rejections because the next reviewer is fresh and blind to previous discussion.","",...E(a),"Commit the fixes you apply. When every finding is addressed and the work is reviewable again, end your final assistant message with a line that starts exactly with:","REVIEW_READY: <one-line note>","Do not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only after addressing a round's findings."].join("\n")),b,c,d))return;if(a.fixerPath||(a.fixerPath=g.agentPath),!a.flowId){let e=c.findFlowByImplementer(a.fixerPath);if(e){a.flowId=e.id;return}let f=await c.createFlow({implementerPath:a.fixerPath,roles:{implementer:h.fixer,reviewer:h.reviewer},baseMode:"head",baseRef:a.baseRef,mode:a.mode,reviewerMode:h.reviewerMode,roundLimit:h.roundLimit},b);return f.flow?(a.flowId=f.flow.id,d(),void c.advanceFlow(a.flowId,`Workflow "${a.name}": review the full diff from the captured base ref.`)):void L(a,`creating the review flow failed: ${f.error??"unknown error"}`)}let i=c.getFlow(a.flowId);if(!i)return void L(a,"the embedded review flow record disappeared");if("approved"===i.state){g.doneAt=c.now(),g.doneNote=`review approved after ${i.rounds.length} round(s)`,"auto"===a.mode&&(a.state="finishing",a.stateDetail=null);return}"done_comment"===i.state?L(a,"review ended with a COMMENT verdict"):"needs_decision"===i.state?L(a,`review loop needs a decision: ${i.stateDetail??"unknown reason"}`):"closed"===i.state&&L(a,"the embedded review flow was closed")}async function U(a,b,c,d,e){let f=JSON.stringify(a);if("provisioning"===a.state)await R(a,d,e);else if("implementing"===a.state)await S(a,b,c,d,e);else if("reviewing"===a.state)await T(a,b,d,e);else{var g;let b,c,e,f;"finishing"===a.state&&(b=a.flowId?d.getFlow(a.flowId):null,(f=function(a,b,c){let d=c("git",["status","--porcelain"],a.worktreeDir);if(0!==d.code)return y("checking the worktree state",d);let e=d.stdout.split("\n").filter(a=>a.trim());if(e.length){let a=e.slice(0,3).map(a=>a.slice(3).trim()||a.trim()),b=e.length>a.length?`, +${e.length-a.length} more`:"";return{ok:!1,error:`the worktree has uncommitted changes (${a.join(", ")}${b}) — commit them, then retry the finish`}}return"merge"===a.template.finish?function(a,b){let c=b("git",["rev-parse","--abbrev-ref","HEAD"],a.repoDir);if(0!==c.code)return y("resolving the repo branch",c);let d=c.stdout.trim();if(d!==a.baseBranch)return{ok:!1,error:`the repo checkout is on ${d}; check out ${a.baseBranch} before merging`};let e=b("git",["merge","--no-ff",a.branch,"-m",`Merge ${a.branch}: ${C(a)}`],a.repoDir);return 0!==e.code?(b("git",["merge","--abort"],a.repoDir),y("git merge",e)):{ok:!0,prUrl:null}}(a,c):function(a,b,c){let d=c("git",["push","-u","origin",a.branch],a.worktreeDir);if(0!==d.code)return y("git push",d);let e=c("gh",["pr","create","--title",C(a),"--body",b,"--base",a.baseBranch,"--head",a.branch],a.worktreeDir);if(0===e.code){var f;return{ok:!0,prUrl:(f=e.stdout,f.match(/https:\/\/\S+\/pull\/\d+/)?.[0]??null)}}if(/already exists/i.test(e.stderr)){let b=c("gh",["pr","view",a.branch,"--json","url","--jq",".url"],a.worktreeDir);if(0===b.code&&b.stdout.trim())return{ok:!0,prUrl:b.stdout.trim()}}return y("gh pr create",e)}(a,b,c)}(a,(g=b?.rounds??[],c=a.stageRuns.filter(a=>a.doneAt).map(b=>{let c=a.template.stages[b.index],d=c?.kind==="implement"?c.scope.split(/[.:\n]/)[0]:"review loop";return`- Stage ${b.index+1} (${d}): ${b.doneNote||"done"}`}),e=g.map(a=>`- Round ${a.n}: ${a.verdict??"no verdict"}${null!=a.findingsCount?` (${a.findingsCount} findings)`:""}`),["## Task","",a.task.trim(),"","## Stages","",...c.length?c:["- (no stage notes recorded)"],"","## Review rounds","",...e.length?e:["- (no review rounds recorded)"],"","\uD83E\uDD16 Generated with [Claude Code](https://claude.com/claude-code)"].join("\n")),d.exec)).ok?(a.prUrl=f.prUrl,a.state="approved",a.stateDetail=null,a.closedAt=d.now()):L(a,f.error))}return JSON.stringify(a)!==f}let V=globalThis;async function W(a,b=I()){if(V.__llvWorkflowTick)return{workflows:(0,w.Ny)(),changed:!1};V.__llvWorkflowTick=!0;try{let c=(0,w.Ny)(),d=new Map(a.map(a=>[a.path,a])),e=!1;for(let f of c)!(F.has(f.state)||G.has(f.state))&&(await U(f,a,d,b,()=>(0,w.co)(c))&&(e=!0),e&&(0,w.co)(c));return e&&(0,w.co)(c),{workflows:c,changed:e}}finally{V.__llvWorkflowTick=!1}}function X(a){return"needs_decision"===a.state||"paused"===a.state?a.pausedState??"provisioning":a.state}async function Y(a,b,c=I()){let d=(0,w.Ny)(),e=d.find(b=>b.id===a);if(!e)return{error:"workflow not found",status:404};if("pause"===b.action)"paused"===e.state||F.has(e.state)||("needs_decision"!==e.state&&(e.pausedState=e.state),e.state="paused",e.stateDetail="paused by user");else if("resume"===b.action)("paused"===e.state||"needs_decision"===e.state)&&(e.state=e.pausedState&&!G.has(e.pausedState)?e.pausedState:"provisioning",e.pausedState=null,e.stateDetail=null);else if("advance"===b.action){let a=X(e);if(F.has(e.state)||"finishing"===a)return{error:"workflow cannot advance from its current state",status:409};if("provisioning"===a){if(!e.baseRef)return{error:"workflow has no worktree yet — retry provisioning instead",status:409};e.state="implementing"}else{let d=M(e);if(!d)return{error:"workflow has no current stage",status:409};!d.doneAt&&(d.doneAt=c.now(),d.doneNote=("string"==typeof b.note&&b.note.trim()?b.note.trim().slice(0,2e3):null)??d.doneNote??"advanced manually");if("reviewing"===a){let a=e.flowId?c.getFlow(e.flowId):null;a&&null===a.closedAt&&"closed"!==a.state&&await c.closeFlow(a.id),e.state="finishing"}else P(e)}e.pausedState=null,e.stateDetail=null}else if("retry-stage"===b.action){let a=X(e);if(F.has(e.state))return{error:"workflow is finished",status:409};if("provisioning"===a){e.setupPid=null;try{g().rmSync((0,w.VO)(e.id),{force:!0})}catch{}}else if("implementing"===a||"reviewing"===a){let b=M(e);if(b&&Object.assign(b,{agentPath:null,paneId:null,startedAt:null,doneAt:null,doneNote:null}),"reviewing"===a){let a=e.flowId?c.getFlow(e.flowId):null;a&&null===a.closedAt&&"closed"!==a.state&&await c.closeFlow(a.id),e.flowId=null,e.fixerPath=null}}e.state=a,e.pausedState=null,e.stateDetail=null}else if("close"===b.action){let a=e.flowId?c.getFlow(e.flowId):null;a&&null===a.closedAt&&"closed"!==a.state&&await c.closeFlow(a.id),e.state="closed",e.pausedState=null,e.stateDetail=null,e.closedAt=c.now()}return(0,w.co)(d),{workflow:e}}function Z(a,b=I()){let c,d="string"==typeof a.task?a.task.trim():"";if(!d)return{error:"task brief is required",status:400};let f="string"==typeof a.repoDir?a.repoDir.trim():"";if(!f)return{error:"repoDir is required",status:400};if(0!==b.exec("git",["rev-parse","--git-dir"],f).code)return{error:`not a git repository: ${f}`,status:400};if(a.template){let b=(0,w.K8)().find(b=>b.name===a.template);if(!b)return{error:`unknown workflow template: ${a.template}`,status:400};c=b}else{let b=(0,w.Fl)(a.stages);if("error"in b)return{error:b.error,status:400};c={name:"ad-hoc",stages:b.stages,finish:"merge"===a.finish?"merge":"pr",..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}let g=(0,w.aL)({id:e().randomUUID().slice(0,8),name:c.name,task:d,project:b.projectForCwd(f)??i().basename(f),repoDir:f,template:c,mode:"manual"===a.mode?"manual":"auto",now:b.now()});"string"==typeof a.src&&a.src.trim()&&(g.srcPath=a.src.trim());let h=(0,w.Ny)();return h.push(g),(0,w.co)(h),{workflow:g}}function $(){return{workflows:(0,w.Ny)(),templates:(0,w.K8)()}}},42087:(a,b,c)=>{c.d(b,{s:()=>n});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(16089),i=c(66024),j=c(23921),k=c(89333);function l(a){return new Promise(b=>setTimeout(b,a))}function m(a){let b=a-5e3,c=[],d=(a,f)=>{let h;if(!(f>6)){try{h=e().readdirSync(a,{withFileTypes:!0})}catch{return}for(let i of h){let h=g().join(a,i.name);if(i.isDirectory()){d(h,f+1);continue}if(i.isFile()&&i.name.endsWith(".jsonl"))try{let a=e().statSync(h);a.mtimeMs>=b&&c.push({path:h,mtimeMs:a.mtimeMs})}catch{continue}}}};return d(k.GH["codex-sessions"],0),c.sort((a,b)=>b.mtimeMs-a.mtimeMs).slice(0,32).map(a=>a.path)}async function n(a){if(a.knownTranscript)return a.knownTranscript;if("codex"!==a.engine)return null;let b=a.panePid;if("number"!=typeof b||!Number.isInteger(b)||b<=0)return null;let c=a.env??{},d=c.now??Date.now,f=c.sleep??l,g=c.candidatePaths??m,k=c.holderPidByPath??(a=>(0,j.SP)(a,!0)),n=c.parentPidOf??j.Ib,o=c.timeoutMs??2500,p=c.pollMs??150,q=d()+o;for(;;){let c=function(a,b,c,d){let f=d.holderPidByPath(a);for(let g of a){let a=f.get(g);if(void 0!==a&&function(a,b){let c=(0,h.tX)(a,{bytes:8192,maxLines:10});return null===c||c===b}(g,c)&&!function(a){try{let b=e().statSync(a);return(0,i.ET)(a,b.size)}catch{return!1}}(g)&&function(a,b,c){let d=new Set;for(let e=a;null!==e&&!d.has(e);e=c(e)){if(e===b)return!0;if(d.add(e),d.size>64)break}return!1}(a,b,d.parentPidOf))return g}return null}(g(a.startedAtMs),b,a.cwd,{holderPidByPath:k,parentPidOf:n});if(c)return c;if(d()>=q)return null;await f(p)}}},46825:(a,b,c)=>{c.d(b,{Fl:()=>r,K8:()=>w,Ny:()=>u,RK:()=>A,VO:()=>B,_F:()=>z,aL:()=>x,co:()=>v});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(98590);let j=(0,h.BQ)("workflows.json"),k=(0,h.BQ)("workflow-templates.json"),l=(0,h.BQ)("workflows"),m={engine:"codex",model:null,effort:"low"},n=[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:{engine:"codex",model:null,effort:"high"},scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:{engine:"claude",model:"fable",effort:null},scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:{engine:"codex",model:null,effort:"xhigh"},fixer:{...m},roundLimit:5,reviewerMode:"headless"}]}];function o(a,b){(0,i.Yj)(a,JSON.stringify(b,null,2)+"\n")}function p(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch{return null}}function q(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function r(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=q(a.agent))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=q(a.reviewer);return c?{kind:"review-loop",reviewer:c,fixer:(b=q(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:{...m},roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}function s(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=r(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}function t(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==s(a.template)}function u(){let a=p(j);return(Array.isArray(a?.workflows)?a.workflows.filter(t):[]).map(a=>({...a,project:a.project??"",pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,prUrl:a.prUrl??null}))}function v(a){o(j,{workflows:a})}function w(){let a=p(k),b=Array.isArray(a?.templates)?a.templates.map(s).filter(a=>null!==a):[];return b.length>0?b:(o(k,{templates:n}),n)}function x(a){let b=g().basename(a.repoDir);return{id:a.id,name:a.name,task:a.task,project:a.project,repoDir:a.repoDir,worktreeDir:g().join(g().dirname(a.repoDir),`${b}-wf-${a.id}`),branch:`wf/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`,baseBranch:"",baseRef:"",template:JSON.parse(JSON.stringify(a.template)),stageRuns:a.template.stages.map((a,b)=>({index:b,agentPath:null,paneId:null,startedAt:null,doneAt:null,doneNote:null})),stageIndex:0,flowId:null,fixerPath:null,state:"provisioning",pausedState:null,stateDetail:null,mode:a.mode,setupPid:null,srcPath:null,prUrl:null,createdAt:a.now,closedAt:null}}function y(a){return g().join(l,a)}function z(a){return g().join(y(a),"setup-stdout.log")}function A(a){return g().join(y(a),"setup-stderr.log")}function B(a){return g().join(y(a),"setup-exit")}},51906:(a,b,c)=>{c.d(b,{IL:()=>v,T:()=>w,gn:()=>t});var d=c(31421),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(14509),l=c(16089),m=c(98590);let n=new Map;function o(a,b){return`${a}:${b}`}function p(a){if(!a||!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}function q(a,b=3e3){let c=b=>{try{process.kill(-a,b)}catch{try{process.kill(a,b)}catch{}}};c("SIGTERM"),setTimeout(()=>{p(a)&&c("SIGKILL")},b).unref()}let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=new Set(["session_id","sessionId","thread_id","threadId","rollout_id"]);function t(a,b,c,e,g,i=18e5){let p,r=o(a,b);if(n.has(r))return{pid:null,sessionId:null,reviewerPath:null};let s=(0,m.WJ)(a,b);h().mkdirSync(j().dirname(s),{recursive:!0});let u=function(a,b,c,d){if("claude"===a.engine){let c=f().randomUUID(),e=["-p",b,"--permission-mode","plan","--session-id",c,"--disallowedTools","Edit,Write,NotebookEdit"];return a.model&&e.push("--model",a.model),a.effort&&e.push("--effort",a.effort),{command:(0,k.uX)("claude"),args:e,outputPath:null,sessionId:c,reviewerPath:(0,l.eV)(d,c)}}let e=["exec",b,"--json","--output-last-message",c,"--sandbox","read-only"];return a.model&&e.push("-m",a.model),a.effort&&e.push("-c",`model_reasoning_effort=${a.effort}`),{command:(0,k.uX)("codex"),args:e,outputPath:c,sessionId:null,reviewerPath:null}}(c,g,s,e),v=h().openSync((0,m.Ml)(a,b),"w"),w=h().openSync((0,m.NO)(a,b),"w");try{p=(0,d.spawn)(u.command,u.args,{cwd:e,env:process.env,detached:!0,stdio:["ignore",v,w]})}finally{h().closeSync(v),h().closeSync(w)}p.unref();let x={child:p,startedAt:Date.now(),exit:null,timer:setTimeout(()=>{!x.exit&&p.pid&&q(p.pid)},i)};return x.timer.unref(),n.set(r,x),p.on("error",()=>{clearTimeout(x.timer),x.exit={code:null,signal:null}}),p.on("close",(a,b)=>{clearTimeout(x.timer),x.exit={code:a,signal:b}}),{pid:p.pid??null,sessionId:u.sessionId,reviewerPath:u.reviewerPath}}function u(a){if(!a)return"";try{return h().readFileSync(a,"utf8")}catch{return""}}function v(a,b,c,d,e=18e5){let f=n.get(o(a,b)),g=u((0,m.Ml)(a,b)),h=f?.child.pid??c.reviewerPid??null;if(!f&&null===h&&!g)return null;let i=u((0,m.NO)(a,b)),j=function(a){let b=null,c="";for(let d of a.split("\n")){let a=d.trim();if(a.startsWith("{"))try{let d=JSON.parse(a);b||(b=function a(b,c=0){if(!b||"object"!=typeof b||c>4)return null;for(let[d,e]of Object.entries(b)){if(s.has(d)&&"string"==typeof e&&r.test(e))return e;let b=a(e,c+1);if(b)return b}return null}(d));let e=function(a){let b=a.item;if(b&&("agent_message"===b.type||"agent_message"===b.item_type)&&"string"==typeof b.text)return b.text;let c=a.msg;return c?.type==="agent_message"&&"string"==typeof c.message?c.message:null}(d);e&&(c=e)}catch{}}return{sessionId:b,lastAgentMessage:c}}(g),k=f?.startedAt??Date.parse(c.spawnStartedAt??""),l=Number.isFinite(k)?Date.now()-k:0;if(f?null===f.exit&&p(h):p(h))return!f&&l>=e&&h&&q(h),{status:"running",stdout:g,stderr:i,finalOutput:"",sessionId:j.sessionId,code:null,signal:null};let t=u("codex"===d?(0,m.WJ)(a,b):null).trim()||j.lastAgentMessage||("claude"===d?g.trim():""),w=f?.exit??null;return{status:w?.code===0||t?"done":!t&&l>=e?"timeout":"failed",stdout:g,stderr:i,finalOutput:t,sessionId:j.sessionId,code:w?.code??null,signal:w?.signal??null}}function w(a,b,c){let e=o(a,b),f=n.get(e);n.delete(e);let g=f?.child.pid??c??null;if(f&&clearTimeout(f.timer),g){p(g)&&q(g);return}!function(a){let b=(0,d.spawnSync)("ps",["-eo","pid=,args="],{encoding:"utf8"});if(!b.error&&0===b.status)for(let c of b.stdout.split("\n")){if(!c.includes(a)||!/\bcodex\b/.test(c))continue;let b=/^\s*(\d+)\s+/.exec(c),d=b?Number(b[1]):0;Number.isInteger(d)&&!(d<=0)&&d!==process.pid&&q(d)}}((0,m.WJ)(a,b))}},52509:(a,b,c)=>{c.d(b,{E:()=>e});let d=globalThis;function e(a){return d.__llvCaches??={},d.__llvCaches[a]??=new Map,d.__llvCaches[a]}},58152:(a,b,c)=>{c.d(b,{BL:()=>e});let d={claude:["low","medium","high","xhigh","max"],codex:["low","medium","high","xhigh"]};function e(a,b){let c="string"==typeof b.effort?b.effort.trim():"";return c&&!d[a].includes(c)?{effort:null,fast:null,error:`effort for ${a} must be one of: ${d[a].join(", ")}`}:{effort:c||null,fast:"codex"===a&&"boolean"==typeof b.fast?b.fast:null}}},59680:(a,b,c)=>{function d(){return"You are now in an implement-review loop controlled by the local log viewer.\n\nWork normally in this long-lived implementer session. When the work is ready for a fresh independent review, end your final assistant message with a line that starts exactly with:\nREVIEW_READY: <one-line note>\nDo not print the REVIEW_READY marker now and never quote it at the start of a line when acknowledging these instructions — print it only when the work is actually ready for review.\n\nEvery review round will use a fresh reviewer who sees the full diff from the captured base ref, with no history from earlier rounds. If the reviewer sends findings back, respond to each finding before the next marker using:\nFIXED\nor\nREJECTED — <reason>\n\nGive concrete arguments for rejections because the next reviewer will be fresh and blind to previous discussion."}function e(a,b){return["You are the reviewer in an implement-review loop.\n",`Working directory: ${a.cwd}`,`Review scope: git diff ${a.baseRef}...HEAD plus uncommitted changes in the same working tree.`,b.readyNote?`Ready note: ${b.readyNote}`:"Ready note: none provided.","\nRead-only requirement: inspect files and commands as needed, but do not edit files, write notebooks, commit, stage, or mutate the working tree.\n\nOutput exactly this format:\nVERDICT: APPROVE | REQUEST_CHANGES | COMMENT\n\nThen write findings in Markdown. For each finding include severity, file, line, title, and explanation. Use REQUEST_CHANGES for required fixes, COMMENT for non-blocking notes, and APPROVE only when no blocking issues remain."].join("\n")}function f(a,b){return["Review round findings are below. Address every finding before the next review marker.\n",b.trim(),"\nFor each finding, respond with FIXED or REJECTED — <reason>. When the work is reviewable again, end your final assistant message with:\nREVIEW_READY: <one-line note>"].join("\n")}c.d(b,{SB:()=>d,i0:()=>f,qu:()=>e})},59683:(a,b,c)=>{let d;c.d(b,{B:()=>B});var e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(70547);let j="/proc";function k(a){try{return f().readFileSync(h().join(j,String(a),"cmdline"),"utf8").split("\0").filter(Boolean)}catch{return[]}}function l(a){try{return f().readlinkSync(h().join(j,String(a),"cwd"))}catch{return null}}function m(a){let b;try{b=f().readFileSync(h().join(j,String(a),"stat"),"utf8")}catch{return null}return b.slice(b.lastIndexOf(")")+2).trim().split(/\s+/)}function n(a){try{return(128&f().lstatSync(a).mode)!=0}catch{return!1}}function o(a){let b;try{b=f().readdirSync(j,{withFileTypes:!0})}catch{return}for(let c of b){let b;if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let d=Number(c.name),e=h().join(j,c.name,"fd");try{b=f().readdirSync(e,{withFileTypes:!0})}catch{continue}for(let c of b){let b,g=h().join(e,c.name);try{b=f().readlinkSync(g)}catch{continue}a(b,d,()=>n(g))}}}let p={name:"linux",pidAlive:function(a){return Number.isInteger(a)&&a>0&&f().existsSync(h().join(j,String(a)))},readArgv:k,readCwd:l,readPpid:function(a){let b=m(a),c=b?Number(b[1]):NaN;return Number.isInteger(c)&&c>1?c:null},readEnvVar:function(a,b){let c;try{c=f().readFileSync(h().join(j,String(a),"environ"),"utf8")}catch{return null}let d=b+"=",e=null;for(let a of c.split("\0"))a.startsWith(d)&&(e=a.slice(d.length));return e},listProcesses:function(){let a,b=[];try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name);b.push({pid:a,argv:k(a),cwd:l(a),tty:function(a){let b=m(a),c=b?Number(b[4]):NaN;return Number.isInteger(c)&&c>0?c:0}(a)})}return b},systemMemory:function(){try{return(0,i.NW)(f().readFileSync(h().join(j,"meminfo"),"utf8"))}catch{return null}},processMemory:function(a){let b=new Map;for(let c of a)if(Number.isInteger(c)&&!(c<=0))try{b.set(c,(0,i.sW)(f().readFileSync(h().join(j,String(c),"status"),"utf8")))}catch{}return b},ppidMap:function(){let a,b=new Map;try{a=f().readdirSync(j,{withFileTypes:!0})}catch{return b}for(let c of a){if(!c.isDirectory()||!/^\d+$/.test(c.name))continue;let a=Number(c.name),d=m(a),e=d?Number(d[1]):NaN;Number.isInteger(e)&&e>0&&b.set(a,e)}return b},scanFdTargetsUnder:function(a,b){o(b)},scanFdTargetsFor:function(a,b){o(b)},pidWritesPath:function(a,b){let c,d;try{c=f().realpathSync(b)}catch{c=null}let e=h().join(j,String(a),"fd");try{d=f().readdirSync(e,{withFileTypes:!0})}catch{return!1}for(let a of d){let d,g=h().join(e,a.name);try{d=f().readlinkSync(g)}catch{continue}if((d===b||d===c)&&n(g))return!0}return!1},pidHoldsPath:function(a,b){let c;try{c=f().readdirSync(h().join(j,String(a),"fd"),{withFileTypes:!0})}catch{return!1}for(let d of c)try{if(f().readlinkSync(h().join(j,String(a),"fd",d.name))===b)return!0}catch{continue}return!1}};var q=c(31421),r=c(48161),s=c.n(r);function t(a,b){let c=(0,q.spawnSync)(a,b,{encoding:"utf8",maxBuffer:0x1000000,timeout:1e4});return c.error||"string"!=typeof c.stdout?"":c.stdout}let u=new Map,v=1,w=/^\s*(\d+)\s+(\d+)\s+(\S+)\s+(.*)$/;function x(a,b){let c=0,d="";for(let e of a.split("\n")){if(!e)continue;let a=e[0],f=e.slice(1);if("p"===a)c=Number(f),d="";else if("f"===a)d="";else if("a"===a)d=f;else if("n"===a&&c>0&&f){let a="w"===d||"u"===d;b(f,c,()=>a)}}}let y=null;function z(){let a=Date.now();if(y&&a-y.at<5e3)return y.byPid;let b=function(a){let b=new Map;for(let c of a.split("\n")){let a=w.exec(c);if(!a)continue;let d=Number(a[1]),e=Number(a[2]),f=(a[4]??"").trim().split(/\s+/).filter(Boolean);b.set(d,{ppid:Number.isInteger(e)&&e>1?e:null,tty:function(a){if(!a||"?"===a||"??"===a||"-"===a)return 0;let b=u.get(a);return void 0===b&&(b=v,v+=1,u.set(a,b)),b}(a[3]??""),argv:f})}return b}(t("ps",["-axo","pid=,ppid=,tty=,args="])),c=function(a){let b=new Map,c=0;for(let d of a.split("\n")){if(!d)continue;let a=d[0],e=d.slice(1);"p"===a?c=Number(e):"n"===a&&c>0&&b.set(c,e)}return b}(t("lsof",["-w","-d","cwd","-Fpn"])),d=new Map;for(let[a,e]of b)d.set(a,{argv:e.argv,ppid:e.ppid,tty:e.tty,cwd:c.get(a)??null});return y={at:a,byPid:d},d}let A={name:"portable",pidAlive:function(a){if(!Number.isInteger(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code}},readArgv:function(a){return z().get(a)?.argv??[]},readCwd:function(a){return z().get(a)?.cwd??null},readPpid:function(a){return z().get(a)?.ppid??null},readEnvVar:function(){return null},listProcesses:function(){let a=[];for(let[b,c]of z())a.push({pid:b,argv:c.argv,cwd:c.cwd,tty:c.tty});return a},systemMemory:function(){let a=s().totalmem(),b=(0,i.Lc)(t("vm_stat",[]));if(!a||null===b)return null;let c=(0,i.yh)(t("sysctl",["-n","vm.swapusage"]));return{ramTotal:a,ramAvailable:Math.min(b,a),swapTotal:c?.swapTotal??0,swapUsed:c?.swapUsed??0}},processMemory:function(a){let b=new Set;for(let c of a)Number.isInteger(c)&&c>0&&b.add(c);let c=new Map;if(0===b.size)return c;for(let[a,d]of(0,i.CT)(t("ps",["-axo","pid=,rss="])))b.has(a)&&c.set(a,{rssBytes:d,swapBytes:0});return c},ppidMap:function(){let a=new Map;for(let[b,c]of z())null!==c.ppid&&a.set(b,c.ppid);return a},scanFdTargetsUnder:function(a,b){a&&f().existsSync(a)&&x(t("lsof",["-w","+D",a,"-Fpfan"]),b)},scanFdTargetsFor:function(a,b){let c=[...new Set(a.filter(Boolean))];0!==c.length&&x(t("lsof",["-w","-Fpfan","--",...c]),b)},pidWritesPath:function(a,b){let c=!1;return x(t("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),(a,b,d)=>{d()&&(c=!0)}),c},pidHoldsPath:function(a,b){let c=!1;return x(t("lsof",["-w","-a","-p",String(a),"-Fpfan","--",b]),()=>{c=!0}),c}},B="portable"===(d=process.env.VIEWER_PROC_BACKEND)?A:"linux"===d||"linux"===process.platform?p:A},60641:(a,b,c)=>{function d(){return new Date().toISOString()}function e(a,b){return`Task #${a.slice(0,8)}: ${b}`}c.d(b,{Ec:()=>d,F7:()=>e})},64747:(a,b,c)=>{c.d(b,{Am:()=>aa,Fu:()=>t,IJ:()=>_,HZ:()=>T,VT:()=>I,aI:()=>y,mB:()=>S,RZ:()=>R,m7:()=>w,zX:()=>H,ZB:()=>Y,I6:()=>A,u1:()=>x,EW:()=>G,V1:()=>Z,oF:()=>E,KY:()=>V,Tk:()=>$,WS:()=>C});var d=c(31421),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(91724);let l=(0,k.BQ)("events.ndjson");function m(a,b){try{h().mkdirSync(j().dirname(l),{recursive:!0});try{h().statSync(l).size>4194304&&h().renameSync(l,l+".1")}catch{}let c={ts:new Date().toISOString(),action:a,...b};h().appendFileSync(l,JSON.stringify(c)+"\n","utf8")}catch{}}let n={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/webp":"webp"};var o=c(14289),p=c(16462),q=c(23921),r=c(89333),s=c(27359);function t(a){let b=Array.isArray(a.images)?a.images:a.image&&"object"==typeof a.image?[a.image]:[],c=[];for(let a of b){let b=a&&"object"==typeof a?a.base64:void 0,d=a&&"object"==typeof a?a.mime:void 0;if("string"!=typeof b||!b)return{images:[],error:{error:"invalid image",status:400}};if(null===(n["string"==typeof d?d:""]??null))return{images:[],error:{error:"unsupported image type",status:415}};if(function(a){if(!a.length)return 0;let b=a.endsWith("==")?2:+!!a.endsWith("=");return Math.floor(3*a.length/4)-b}(b)>0xa00000)return{images:[],error:{error:"image is too large (10 MB limit)",status:413}};c.push({base64:b,mime:d})}return{images:c,error:null}}let u=null;function v(a,b){return new Promise((c,e)=>{let f=(0,d.spawn)("tmux",a,{stdio:["pipe","pipe","pipe"]}),g="",h="";f.stdout.on("data",a=>g+=a.toString("utf8")),f.stderr.on("data",a=>h+=a.toString("utf8")),f.on("error",e),f.on("close",a=>c({code:a,stdout:g,stderr:h})),void 0!==b?f.stdin.end(b):f.stdin.end()})}async function w(a=!1){let b,c=Date.now();if(!a&&u&&c-u.at<12e3)return u.map;let d=new Map;try{b=await v(["list-panes","-a","-F","#{session_name}:#{window_index}.#{pane_index} #{pane_id} #{pane_pid}"])}catch{return u={at:c,map:d},d}if(0===b.code)for(let a of b.stdout.split("\n")){let[b="",c="",e=""]=a.split(" "),f=Number(e.trim());b.trim()&&c.startsWith("%")&&Number.isInteger(f)&&f>0&&d.set(f,{target:b.trim(),paneId:c.trim()})}return u={at:c,map:d},d}async function x(a){if(!Number.isInteger(a)||a<=0)return null;let b=await w();if(0===b.size)return null;let c=new Set,d=a;for(let a=0;a<64&&null!==d&&d>1;a+=1){let a=b.get(d);if(a)return a.target;if(c.has(d)||(0,q.Vt)((0,q.$U)(d)))break;c.add(d),d=(0,q.Ib)(d)}return null}async function y(){let a=new Set;for(let b of(await (0,p.C)()))null!==b.pid&&"running"===b.proc&&(0,q.pl)(b.pid)&&a.add(b.pid);return a}async function z(a){return(await y()).has(a)?x(a):"unknown"}async function A(a,b){if(null!==a){let b=await z(a);if("unknown"!==b&&null!==b)return b}if(b&&(0,r.EG)(b)){let a=await S(b);if(a)return a.display}return null}let B=new Map;async function C(a,b){let c=(B.get(a)??Promise.resolve()).then(b,b);B.set(a,c.catch(()=>void 0));try{return await c}finally{B.get(a)!==c&&B.size>256&&B.clear()}}async function D(a){let b=await X(a);if(null===b)throw Error("tmux pane is unavailable");if((0,s.g2)(b))throw m("gate",{target:a,result:"error",reason:"shell_prompt"}),Error("pane has no agent (plain shell) — message was not sent");for(let b=0;b<3;b+=1){let b=await Y(a);if(null!==(0,s.fm)(b))throw m("gate",{target:a,result:"error",reason:"select_dialog"}),Error("agent is waiting for a choice in the pane — answer before sending a new message");let c=(0,s._1)(b);if(null!==c)throw m("gate",{target:a,result:"error",reason:c}),Error("rate_limit"===c?"agent hit a rate limit — message was not sent":"agent is waiting for confirmation in the pane — answer before sending a new message");let d=(0,s.ye)(b);if(null!==d){m("gate",{target:a,result:"ok",reason:d}),await v(["send-keys","-t",a,"Enter"]),await W(700);continue}return}}async function E(a,b){await C(a,async()=>{try{await D(a),await F(a,b),m("send",{target:a,result:"ok",meta:{bytes:b.length}})}catch(b){throw m("send",{target:a,result:"error",reason:b instanceof Error?b.message:String(b)}),b}})}async function F(a,b){let c=`viewer-${Date.now()}-${Math.floor(1e6*Math.random())}`,d=await v(["load-buffer","-b",c,"-"],Buffer.from(b,"utf8"));if(0!==d.code)throw Error(d.stderr.trim()||"could not load tmux buffer");let e=await v(["paste-buffer","-d","-p","-b",c,"-t",a]);if(0!==e.code)throw Error(e.stderr.trim()||"could not paste text into pane");await W(250);let f=await v(["send-keys","-t",a,"Enter"]);if(0!==f.code)throw Error(f.stderr.trim()||"could not press Enter");let g=b.split("\n").map(a=>a.trim()).find(Boolean)?.slice(0,32)??"";for(let b=0;b<4;b+=1){await W(400);let b=(0,s.dC)(await Y(a));if(!(""!==g&&b.includes(g)||b.includes("[Pasted text")))return;await v(["send-keys","-t",a,"Enter"])}}async function G(a){let b=await v(["send-keys","-t",a,"Escape"]);if(m("interrupt",{target:a,result:0===b.code?"ok":"error",reason:b.stderr.trim()||void 0}),0!==b.code)throw Error(b.stderr.trim()||"could not send Escape")}async function H(a){let b=await v(["display-message","-p","-t",a,"#{pane_pid}"]).catch(()=>null),c=b&&0===b.code?Number(b.stdout.trim()):NaN;return Number.isInteger(c)&&c>0?c:null}async function I(a){let b=await v(["kill-pane","-t",a]);if(m("kill",{target:a,result:0===b.code?"ok":"error",reason:b.stderr.trim()||void 0}),0!==b.code)throw Error(b.stderr.trim()||"could not close tmux pane")}async function J(){let a=await v(["list-clients","-F","#{client_activity} #{client_session}"]).catch(()=>null),b=a=>{let b=null;for(let c of a.split("\n")){let a=c.indexOf(" ");if(a<0)continue;let d=Number(c.slice(0,a)),e=c.slice(a+1).trim();e&&Number.isFinite(d)&&(!b||d>b.at)&&(b={at:d,name:e})}return b?.name??null};if(a&&0===a.code){let c=b(a.stdout);if(c)return c}let c=await v(["list-sessions","-F","#{session_activity} #{session_name}"]).catch(()=>null);if(c&&0===c.code){let a=b(c.stdout);if(a)return a}let d=await v(["new-session","-d","-x","220","-y","50","-s","agents"]);if(0!==d.code&&!/duplicate session/.test(d.stderr))throw Error(d.stderr.trim()||"could not create tmux session");return"agents"}let K=(0,k.BQ)("resume-panes.json"),L=null,M=null;function N(){if(L)return L;L=new Map,M=null;try{var a;let b=(a=JSON.parse(h().readFileSync(K,"utf8")))&&"object"==typeof a&&"panes"in a?{serverPid:"number"==typeof a.serverPid&&Number.isInteger(a.serverPid)?a.serverPid:null,panes:a.panes&&"object"==typeof a.panes?a.panes:{}}:{serverPid:null,panes:a&&"object"==typeof a?a:{}};for(let[a,c]of(M=b.serverPid,Object.entries(b.panes)))c&&"string"==typeof c.paneId&&"string"==typeof c.windowName&&L.set(a,c)}catch{}return L}function O(){if(L)try{h().mkdirSync(j().dirname(K),{recursive:!0});let a={serverPid:M,panes:Object.fromEntries(L)};h().writeFileSync(K,JSON.stringify(a))}catch{}}async function P(){let a=await v(["display-message","-p","#{pid}"]).catch(()=>null),b=a&&0===a.code?Number(a.stdout.trim()):NaN;return Number.isInteger(b)&&b>0?b:null}function Q(a){let b=N();return M!==a&&(b.clear(),M=a,O()),b}async function R(a){let b=await v(["display-message","-p","-t",a,"#{window_name} #{pane_current_command} #{session_name}:#{window_index}.#{pane_index}"]).catch(()=>null),c=b&&0===b.code?b.stdout.trim().split(" "):null;return c&&3===c.length?{windowName:c[0]??"",command:c[1]??"",display:c[2]??a}:null}async function S(a){let b=await P();if(null===b)return null;let c=Q(b),d=c.get(a);if(!d)return null;let e=await R(d.paneId);return!e||e.windowName!==d.windowName||(0,s.g2)(e.command)?(c.delete(a),O(),null):{paneId:d.paneId,display:e.display}}function T(a){N().delete(a)&&O()}let U=new Map;async function V(a,b,c){let d=await S(a);if(d)return await E(d.paneId,c),{target:d.display,spawned:!1};let e=U.get(a);if(e){let a=await e;return await E(a.paneId,c),{target:a.display,spawned:!1}}let f=$(b,c);U.set(a,f);try{let c=await f,d=await P();return null!==d&&(Q(d).set(a,{paneId:c.paneId,windowName:b.windowName}),O()),m("resume",{target:c.display,path:a,cwd:b.cwd,result:"ok"}),{target:c.display,spawned:!0}}catch(c){throw m("resume",{path:a,cwd:b.cwd,result:"error",reason:c instanceof Error?c.message:String(c)}),c}finally{U.delete(a)}}function W(a){return new Promise(b=>setTimeout(b,a))}async function X(a){let b=await v(["display-message","-p","-t",a,"#{pane_current_command}"]).catch(()=>null);return b&&0===b.code?b.stdout.trim():null}async function Y(a){let b=await v(["capture-pane","-p","-t",a]).catch(()=>null);return b&&0===b.code?b.stdout:""}async function Z(a,b){if(!b.length)return;let c=await v(["send-keys","-t",a,...b]);if(0!==c.code)throw Error(c.stderr.trim()||"could not send keys")}async function $(a,b){var c;let d=await J(),e=await v(["new-window","-d","-P","-F","#{pane_id} #{session_name}:#{window_index}.#{pane_index} #{pane_pid}","-t",d+":","-n",a.windowName,"-c",a.cwd]);if(0!==e.code)throw Error(e.stderr.trim()||"could not open tmux window");let[f="",g="",h=""]=e.stdout.trim().split(" ");if(!f)throw Error("tmux did not return a window address");let i=Number(h),j=await v(["send-keys","-t",f,"-l",(c=a.cwd,`cd -- '${c.replaceAll("'","'\\''")}'`)]);if(0!==j.code)throw Error(j.stderr.trim()||"could not type cwd into pane");let k=await v(["send-keys","-t",f,"Enter"]);if(0!==k.code)throw Error(k.stderr.trim()||"could not enter cwd");let l=await v(["send-keys","-t",f,"-l",a.command]);if(0!==l.code)throw Error(l.stderr.trim()||"could not type command into pane");let n=await v(["send-keys","-t",f,"Enter"]);if(0!==n.code)throw Error(n.stderr.trim()||"could not start agent");let o=Date.now()+6e4,p=!1,q="",r="",t=0;for(;Date.now()<o;){await W(1e3);let b=await X(f);if(null===b)throw Error("agent window closed immediately after launch");if((0,s.g2)(b)){if(p)throw Error(`agent exited immediately after launch: ${(0,s.d3)(await Y(f))}`);continue}p=!0;let c=await Y(f),d=c!==q?(0,s.ye)(c):null;if(null!==d){m("gate",{target:f,cwd:a.cwd,result:"ok",reason:d}),await v(["send-keys","-t",f,"Enter"]),q=c,r="",t=0;continue}if(s.EB.test(c))break;if(c===r){if((t+=1)>=3)break}else t=0,r=c}let u=await X(f);if(null===u||(0,s.g2)(u))throw m("spawn",{target:f,cwd:a.cwd,result:"error",reason:"agent_exited_on_boot"}),Error(`agent did not start in the window: ${(0,s.d3)(await Y(f))}`);return m("spawn",{target:f,cwd:a.cwd,...a.transcript?{path:a.transcript}:{},result:"ok",meta:{window:a.windowName}}),b&&await E(f,b),{paneId:f,display:g||f,...Number.isInteger(i)&&i>0?{panePid:i}:{}}}function _(a){for(let b of a)try{h().unlinkSync(b)}catch{}}function aa(a,b){let c=[];try{for(let a of b)c.push(function(a,b){let c=n[b]??null;if(null===c)throw Error("unsupported image type");let d=Buffer.from(a,"base64");if(0===d.length)throw Error("invalid image data");if(d.length>0xa00000)throw Error("image is too large");h().mkdirSync(o.j,{recursive:!0});let e=j().join(o.j,`img-${Date.now()}-${f().randomUUID().slice(0,8)}.${c}`);return h().writeFileSync(e,d),{path:e}}(a.base64,a.mime).path)}catch(a){throw _(c),a}return{payload:[a,...c].filter(Boolean).join("\n"),imagePaths:c}}},66024:(a,b,c)=>{c.d(b,{ET:()=>n,Gz:()=>l,S:()=>m});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(52509),i=c(95544);let j=(0,h.E)("codex-native-parent-thread"),k=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;function l(a){return g().basename(a).match(k)?.[0]??null}function m(a,b){let c=j.get(a);if(c&&(null!==c[1]||c[0]>=65536||c[0]>=b))return c[1];let d=0,f=null;try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(Math.min(b,65536));for(let b of(d=e().readSync(c,a,0,a.length,0),a.toString("utf8",0,d).split("\n"))){if(!b.includes('"session_meta"'))continue;let a=JSON.parse(b),c=(0,i.xK)(a.payload);if(!c)continue;let d=(0,i.xK)(c.source),e=(0,i.xK)(d?.subagent),g=(0,i.xK)(e?.thread_spawn),h=(0,i.r$)(c.parent_thread_id),j=(0,i.r$)(g?.parent_thread_id);f=h??j;break}}finally{e().closeSync(c)}}catch{f=null}return j.set(a,[d,f]),f}function n(a,b){return null!==m(a,b)}},70107:(a,b,c)=>{c.d(b,{hY:()=>C,q0:()=>G});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(30795),l=c(52509),m=c(95544);let n=(0,l.E)("meta-v2"),o=(0,l.E)("title"),p=(0,l.E)("codex-project-v2"),q=(0,l.E)("claude-cwd");function r(a,b){try{let c=e().openSync(a,"r");try{let a=Buffer.alloc(Math.min(b,131072)),d=e().readSync(c,a,0,a.length,0);return{text:a.toString("utf8",0,d),read:d}}finally{e().closeSync(c)}}catch{return null}}let s="-"+g().homedir().split(i().sep).filter(Boolean).join("-"),t=[s+"-Projects-",s+"-"],u=["<","#","Caveat:","{","[","This session is being continued"];function v(a){if(a===s)return i().basename(g().homedir());for(let b of t)if(a.startsWith(b))return a.slice(b.length)||a;return a}let w=(0,l.E)("worktree-git"),x=(0,l.E)("persisted-project");function y(a){try{return JSON.parse(e().readFileSync(i().join((0,j.Pn)(),a),"utf8"))}catch{return null}}function z(a,b,c=!1){if("string"!=typeof a||!a.trim()||"string"!=typeof b||!b.trim())return null;let d=v(b.replace(/[^a-zA-Z0-9]/g,"-")),e=c||d!==a?i().basename(b):void 0;return{project:a,worktree:e}}function A(){let a=(0,j.Pn)(),b=x.get("state");if(b&&b[0]>Date.now()&&b[1]===a)return b[2];let c=new Map,d=new Map,e=new Map,f=(a,b)=>{b&&"string"==typeof a&&a.trim()&&d.set(a,b),((a,b)=>{if(!b||"string"!=typeof a||!a.endsWith(".jsonl"))return;let c=i().basename(i().dirname(a));c.startsWith("-")&&e.set(c,b)})(a,b)},g=y("flows.json");for(let a of Array.isArray(g?.flows)?g.flows:[]){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=z(a.project,a.cwd);if(b&&"string"==typeof a.cwd)for(let d of(c.set(a.cwd,b),f(a.implementerPath,b),Array.isArray(a.rounds)?a.rounds:[]))!d||"object"!=typeof d||Array.isArray(d)||f(d.reviewerPath,b)}let h=y("workflows.json");for(let a of Array.isArray(h?.workflows)?h.workflows:[]){if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=z(a.project,a.repoDir);b&&"string"==typeof a.repoDir&&c.set(a.repoDir,b);let d=z(a.project,a.worktreeDir,!0);for(let e of(d&&"string"==typeof a.worktreeDir&&c.set(a.worktreeDir,d),Array.isArray(a.stageRuns)?a.stageRuns:[]))!e||"object"!=typeof e||Array.isArray(e)||f(e.agentPath,d??b);f(a.fixerPath,d??b)}let k={byCwd:c,byPath:d,bySlug:e};return x.set("state",[Date.now()+1e4,a,k]),k}function B(a){let b=function(a){let b=i().sep+".claude"+i().sep+"worktrees"+i().sep,c=a.indexOf(b);if(c<0)return null;let d=a.slice(c+b.length).split(i().sep).filter(Boolean)[0];return d?{repo:a.slice(0,c),worktree:d}:null}(a)??function(a){let b=w.get(a);if(b&&b[0]>Date.now())return b[1];let c=null;try{let b=i().join(a,".git");e().lstatSync(b).isFile()&&(c=function(a,b){let c=/^gitdir:\s*(.+?)\s*$/m.exec(b)?.[1];if(!c)return null;let d=i().resolve(a,c).split(i().sep),e=d.lastIndexOf("worktrees"),f=e>=0?d[e+1]:void 0;return f&&".git"===d[e-1]?{repo:d.slice(0,e-1).join(i().sep)||i().sep,worktree:f}:null}(a,e().readFileSync(b,"utf8")))}catch{}return w.set(a,[Date.now()+6e4,c]),c}(a)??function(a){let b=i().sep+".codex"+i().sep+"worktrees"+i().sep,c=a.indexOf(b);if(c<0)return null;let[d,f]=a.slice(c+b.length).split(i().sep).filter(Boolean);return d&&f?{repo:function(a){for(let b of[i().join(g().homedir(),"Projects"),i().join(g().homedir(),".agents","tools")]){let c=i().join(b,a);try{if(e().statSync(c).isDirectory())return c}catch{continue}}return i().join(g().homedir(),"Projects",a)}(f),worktree:d}:null}(a);if(!b&&!function(a){try{return e().lstatSync(i().join(a,".git")),!0}catch{return!1}}(a)){let b=A().byCwd.get(a);if(b)return b}let c=v((b?b.repo:a).replace(/[^a-zA-Z0-9]/g,"-"));return c?{project:c,worktree:b?.worktree}:null}function C(a){return B(a)?.project??null}function D(a){let b="string"==typeof a?a.trim():"";return b&&!u.some(a=>b.startsWith(a))?b:null}function E(a){return A().byPath.get(a)??null}function F(a,b,c){let d=o.get(a);if(d&&(null!==d[1]||d[0]>=131072))return d[1];let e=r(a,b);if(!e)return d?.[1]??null;let f=function(a,b){for(let c of a){let a;try{let b=JSON.parse(c);if(!b||"object"!=typeof b||Array.isArray(b))continue;a=b}catch{continue}if("summary"===a.type){let b=D(a.summary);if(b)return b}if("ai-title"===a.type){let b=D(a.aiTitle);if(b)return b}if(b){let b=(0,m.xK)(a.payload)??{};if("user_message"===b.type){let a=D(b.message);if(a)return a}if("message"===b.type&&"user"===b.role){let a=D((0,m.Em)(b.content).map(a=>(0,m.r$)(a.text)??(0,m.r$)(a.input_text)??"").join(" ").trim());if(a)return a}}else if("user"===a.type){let b=(0,m.xK)(a.message)?.content;if("string"==typeof b){let a=D(b);if(a)return a}let c=D((0,m.Em)(b).filter(a=>"text"===a.type).map(a=>(0,m.r$)(a.text)??"").join(" ").trim());if(c)return c}}return null}(e.text.split("\n").slice(0,151),c);return o.set(a,[e.read,f]),f}function G(a,b,c,d){let e,f=n.get(c);if(f?.[0]===d.size)return f[1];let g=i().relative(b,c),h=i().basename(c),j="other",l=null,o="claude",s="",t="plain";if("codex-sessions"===a){let a=p.get(c);if(a)j=a.project,e=a.worktree;else{j="";let a=r(c,d.size);if(a)try{let b=JSON.parse(a.text.split("\n")[0]??"{}"),c=(0,m.r$)((0,m.xK)(b.payload)?.cwd)??"",d=B(c);j=d?.project??"",e=d?.worktree}catch{j=""}if(!j){let a=E(c);j=a?.project??"",e=a?.worktree}j&&p.set(c,{project:j,worktree:e})}j||(j="codex"),o="codex",s="session",t="codex",l=F(c,d.size,!0)??"Codex session"}else if("claude-projects"===a){let a=g.split(i().sep)[0]??"",b=function(a){let b="--claude-worktrees-",c=a.indexOf(b);if(c<0)return null;let d=a.slice(c+b.length);if(!d)return null;let e=a.slice(0,c),f=e.split("--").at(-1)?.split("-").filter(Boolean).at(-1);return f?{project:e.slice(e.lastIndexOf("-"+f)+1)||f,worktree:d}:null}(a);j=b?.project??v(a),e=b?.worktree;let f=function(a,b){let c=q.get(a);if(c&&(null!==c[1]||c[0]>=131072))return c[1];let d=r(a,b);if(!d)return c?.[1]??null;let e=function(a){for(let b of a)try{let a=JSON.parse(b),c=(0,m.r$)((0,m.xK)(a)?.cwd);if(c)return c}catch{continue}return null}(d.text.split("\n").slice(0,25));return q.set(a,[d.read,e]),e}(c,d.size),k=f?B(f):E(c),n=E(c);if(k&&(b||k.worktree||n)&&(j=k.project,e=k.worktree??e),t="claude",h.startsWith("agent-")){s="subagent";let a=(0,m.Vh)(c.slice(0,-6)+".meta.json")??{};l=(0,m.r$)(a.description)??(0,m.r$)(a.name)??"Subagent "+h.slice(6).split(".")[0]}else s="session",l=F(c,d.size,!1)??"Claude session"}else if("claude-tasks"===a){let a=g.split(i().sep)[0]??"",b=A().bySlug.get(a)??null;j=b?.project??v(a),e=b?.worktree,o="shell",s="background",l="Background task "+h.split(".")[0]}let u={project:j,worktree:e,title:(0,k.cr)(l??h,120),engine:o,kind:s,fmt:t};return n.set(c,[d.size,u]),u}},70547:(a,b,c)=>{function d(a,b){let c=RegExp(`^${b}:\\s+(\\d+)\\s*kB`,"m").exec(a);if(!c)return null;let d=Number(c[1]);return Number.isFinite(d)?1024*d:null}function e(a){let b=d(a,"MemTotal"),c=d(a,"MemAvailable");if(null===b||null===c||b<=0)return null;let e=d(a,"SwapTotal")??0,f=d(a,"SwapFree")??e;return{ramTotal:b,ramAvailable:c,swapTotal:e,swapUsed:Math.max(0,e-f)}}function f(a){return{rssBytes:d(a,"VmRSS")??0,swapBytes:d(a,"VmSwap")??0}}function g(a){let b=Number(/page size of (\d+) bytes/.exec(a)?.[1]);if(!Number.isFinite(b)||b<=0)return null;let c=b=>{let c=RegExp(`^${b}:\\s+(\\d+)\\.?`,"m").exec(a);return c?Number(c[1]):null},d=c("Pages free"),e=c("Pages inactive");return null===d||null===e?null:(d+e+(c("Pages purgeable")??0))*b}c.d(b,{CT:()=>k,Lc:()=>g,NW:()=>e,mO:()=>l,sW:()=>f,yh:()=>j});let h=/([\d.]+)\s*([KMGT])/;function i(a){let b=h.exec(a);if(!b)return null;let c=Number(b[1]);return Number.isFinite(c)?Math.round(c*({K:1024,M:1048576,G:0x40000000,T:0x10000000000})[b[2]]):null}function j(a){let b=/total\s*=\s*(\S+)/.exec(a)?.[1],c=/used\s*=\s*(\S+)/.exec(a)?.[1];if(!b||!c)return null;let d=i(b),e=i(c);return null===d||null===e?null:{swapTotal:d,swapUsed:e}}function k(a){let b=new Map;for(let c of a.split("\n")){let a=/^\s*(\d+)\s+(\d+)\s*$/.exec(c);a&&b.set(Number(a[1]),1024*Number(a[2]))}return b}function l(a,b){let c=new Map;for(let[a,d]of b){if(a===d)continue;let b=c.get(d);b?b.push(a):c.set(d,[a])}let d=new Set([a]),e=[],f=[a];for(;f.length;){let a=f.pop();for(let b of(e.push(a),c.get(a)??[]))d.has(b)||(d.add(b),f.push(b))}return e}},74127:(a,b,c)=>{c.d(b,{l:()=>m});var d=c(73024),e=c.n(d);function f(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function g(a){return Array.isArray(a)?a.filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)):[]}function h(a){return"string"==typeof a?a:""}function i(a){return h(a.timestamp)||h(a.ts)||null}function j(a,b=8388608){let c;try{let d=e().statSync(a),f=Math.max(0,d.size-b),g=e().openSync(a,"r");try{let a=Buffer.alloc(d.size-f);e().readSync(g,a,0,a.length,f),c=a.toString("utf8")}finally{e().closeSync(g)}f>0&&(c=c.slice(c.indexOf("\n")+1))}catch{return[]}let d=[];for(let a of c.split("\n")){let b=a.trim();if(b)try{let a=JSON.parse(b);a&&"object"==typeof a&&!Array.isArray(a)&&d.push(a)}catch{}}return d}function k(a){return"string"==typeof a?a:g(a).map(a=>"text"===a.type?h(a.text):"thinking"===a.type?h(a.thinking):"tool_use"===a.type?`${h(a.name)} ${JSON.stringify(f(a.input))}`.trim():"tool_result"===a.type?k(a.content)||h(a.tool_use_id):"").filter(Boolean).join("\n").trim()}function l(a,b){b.text.trim()&&("message"===b.kind?a.messages.push(b):"reasoning"===b.kind?a.reasoning.push(b):"tool_call"===b.kind||"tool_result"===b.kind?a.tools.push(b):a.traces.push(b))}function m(a,b){return"claude"===b?function(a){let b={path:a,engine:"claude",messages:[],reasoning:[],tools:[],traces:[]};for(let c of j(a)){let a=i(c);if("user"===c.type){let d=f(c.message).content;if(g(d).some(a=>"tool_result"===a.type)){for(let c of g(d))"tool_result"===c.type&&l(b,{kind:"tool_result",role:"tool",ts:a,text:k(c.content)||h(c.tool_use_id)});continue}l(b,{kind:"message",role:"user",ts:a,text:k(d)});continue}if("assistant"===c.type){for(let d of g(f(c.message).content))"text"===d.type?l(b,{kind:"message",role:"assistant",ts:a,text:h(d.text)}):"thinking"===d.type?l(b,{kind:"reasoning",role:"assistant",ts:a,text:h(d.thinking)}):"tool_use"===d.type?l(b,{kind:"tool_call",role:"assistant",ts:a,name:h(d.name),text:JSON.stringify(f(d.input))}):"tool_result"===d.type&&l(b,{kind:"tool_result",role:"tool",ts:a,text:k(d.content)||h(d.tool_use_id)});continue}("summary"===c.type||"compact"===c.type)&&l(b,{kind:"trace",role:"system",ts:a,name:h(c.type),text:k(c.summary)||JSON.stringify(c)})}return b}(a):function(a){let b={path:a,engine:"codex",messages:[],reasoning:[],tools:[],traces:[]};for(let c of j(a)){let a=i(c),d=f(c.payload),e=h(d.type),g=function(a){let b=h(a.type);return"user_message"===b?{role:"user",text:h(a.message)}:"agent_message"===b?{role:"assistant",text:h(a.message)}:"message"===b?{role:"assistant"===a.role?"assistant":"user"===a.role?"user":"system",text:k(a.content)||h(a.message)}:null}(d);if(g){l(b,{kind:"message",role:g.role,ts:a,phase:h(d.phase)||void 0,text:g.text});continue}if("reasoning"===e||"reasoning_delta"===e){l(b,{kind:"reasoning",role:"assistant",ts:a,text:h(d.text)||h(d.message)});continue}if("response_item"===c.type){let c=f(d.item)||d,e=h(c.type);"function_call"===e||"custom_tool_call"===e?l(b,{kind:"tool_call",role:"assistant",ts:a,name:h(c.name),text:h(c.arguments)||JSON.stringify(c)}):"function_call_output"===e||"custom_tool_call_output"===e?l(b,{kind:"tool_result",role:"tool",ts:a,name:h(c.name),text:h(c.output)||JSON.stringify(c)}):e&&l(b,{kind:"trace",role:"system",ts:a,name:e,text:JSON.stringify(c)});continue}e&&l(b,{kind:"trace",role:"system",ts:a,name:e,text:JSON.stringify(d)})}return b}(a)}},89333:(a,b,c)=>{let d,e,f;c.d(b,{EG:()=>s,GH:()=>n,Rg:()=>o,aA:()=>q,jQ:()=>p});var g=c(73024),h=c.n(g),i=c(48161),j=c.n(i),k=c(76760),l=c.n(k);let m=j().homedir(),n={"codex-sessions":l().join(m,".codex/sessions"),"claude-projects":l().join(m,".claude/projects"),"claude-tasks":(d=process.getuid?.()??1e3,e=l().join(j().tmpdir(),"claude-"+d),e===(f="/tmp/claude-"+d)||h().existsSync(e)?e:h().existsSync(f)?f:e)},o=[".log",".jsonl",".output",".txt"],p=786432,q=400;function r(a){try{return h().realpathSync(a)}catch{return null}}function s(a){let b=r(a);return!!b&&Object.values(n).some(a=>{let c=r(a);return null!==c&&b.startsWith(c+l().sep)})}},90748:(a,b,c)=>{c.d(b,{O6:()=>n,UT:()=>j,mQ:()=>k,vq:()=>l,yy:()=>m});var d=c(77598),e=c.n(d),f=c(60641);function g(a){return"string"!=typeof a?null:a.trim()||null}function h(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)?{x:a.x,y:a.y}:null}function i(){return{ok:!1,error:"Task text must be no longer than 6000 characters",status:400}}function j(a,b,c={}){var d,k;let l="string"!=typeof(k=b.project)?null:k.trim()||null;if(!l)return{ok:!1,error:"project is required",status:400};let m=g(b.text);if(!m)return{ok:!1,error:"task text is required",status:400};if(m.length>6e3)return i();let n=h(b.pos);if(!n)return{ok:!1,error:"task position is required",status:400};let o=void 0===(d=b.source)?void 0:!d||"object"!=typeof d||Array.isArray(d)?null:"string"==typeof d.path&&d.path.trim()&&(null===d.ts||"string"==typeof d.ts)&&"string"==typeof d.text&&d.text.trim()&&"string"==typeof d.fingerprint&&d.fingerprint.trim()&&("claude"===d.engine||"codex"===d.engine)?{path:d.path,ts:d.ts,text:d.text,fingerprint:d.fingerprint,engine:d.engine}:null;if(null===o)return{ok:!1,error:"invalid task source",status:400};if(a.filter(a=>a.project===l).length>=300)return{ok:!1,error:"The project already has 300 tasks. Close or delete extra tasks.",status:409};let p=c.now?.()??(0,f.Ec)(),q={id:c.id?.()??e().randomUUID(),project:l,status:"inbox",text:m,pos:n,assignments:[],...o?{source:o}:{},createdAt:p,updatedAt:p};return{ok:!0,tasks:[...a,q],task:q}}function k(a,b,c,d=(0,f.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let j=a[e],l={};if(Object.hasOwn(c,"text")){let a=g(c.text);if(!a)return{ok:!1,error:"task text is required",status:400};if(a.length>6e3)return i();l.text=a}if(Object.hasOwn(c,"status")){var m;let a="inbox"===(m=c.status)||"assigned"===m||"blocked"===m||"done"===m?m:null;if(!a)return{ok:!1,error:"invalid task status",status:400};l.status=a}if(Object.hasOwn(c,"pos")){let a=h(c.pos);if(!a)return{ok:!1,error:"invalid task position",status:400};l.pos=a}let n={...j,...l,updatedAt:d},o=a.slice();return o[e]=n,{ok:!0,tasks:o,task:n}}function l(a,b){let c=a.filter(a=>a.id!==b);return c.length===a.length?{ok:!1,error:"task not found",status:404}:{ok:!0,tasks:c}}function m(a,b,c,d=(0,f.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let g=a[e],h=g.assignments.filter(a=>a.path!==c);if(h.length===g.assignments.length)return{ok:!0,tasks:a,task:g};let i={...g,assignments:h,updatedAt:d},j=a.slice();return j[e]=i,{ok:!0,tasks:j,task:i}}function n(a,b,c,d=(0,f.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let g=a[e],h=c.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state),i={...g,status:"inbox"===g.status&&h?"assigned":g.status,assignments:function(a,b){let c=a.slice();for(let a of b){let b=c.findIndex(b=>null!==a.path&&b.path===a.path||null===a.path&&null!==a.panePid&&null===b.path&&b.panePid===a.panePid),d={path:a.path,panePid:a.panePid,state:a.state,error:a.error,at:a.at};c=b>=0?[...c.slice(0,b),d,...c.slice(b+1)]:[...c,d]}return c}(g.assignments,c),updatedAt:d},j=a.slice();return j[e]=i,{ok:!0,tasks:j,task:i}}},95544:(a,b,c)=>{c.d(b,{Em:()=>k,Vg:()=>i,Vh:()=>g,r$:()=>h,xK:()=>j});var d=c(73024),e=c.n(d);let f=(0,c(52509).E)("json");function g(a){let b;try{b=e().statSync(a).mtimeMs}catch{return null}let c=f.get(a);if(c?.[0]===b)return c[1];let d=null;try{d=JSON.parse(e().readFileSync(a,"utf8"))}catch{d=null}let g=d&&"object"==typeof d&&!Array.isArray(d)?d:null;return f.set(a,[b,g]),g}function h(a){return"string"==typeof a?a:null}function i(a){return"number"==typeof a&&Number.isFinite(a)?a:null}function j(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function k(a){return Array.isArray(a)?a.filter(a=>null!==a&&"object"==typeof a&&!Array.isArray(a)):[]}},98590:(a,b,c)=>{c.d(b,{Ml:()=>A,NO:()=>z,Sn:()=>B,Vd:()=>v,WJ:()=>y,Yj:()=>p,mL:()=>t,tR:()=>x,tu:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724);let k=(0,j.BQ)("flows.json"),l=(0,j.BQ)("review-loop-presets.json"),m=(0,j.BQ)("flows"),n=[{name:"Codex high → Fable",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"claude",model:"fable",effort:null}},{name:"Fable → Codex xhigh",implementer:{engine:"claude",model:"fable",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Sonnet → Codex xhigh",implementer:{engine:"claude",model:"sonnet",effort:null},reviewer:{engine:"codex",model:null,effort:"xhigh"}},{name:"Codex high → Codex xhigh",implementer:{engine:"codex",model:null,effort:"high"},reviewer:{engine:"codex",model:null,effort:"xhigh"}}];function o(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function p(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,b,"utf8"),g().renameSync(c,a)}function q(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch{return null}}function r(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"implement-review-loop"===a.template&&"string"==typeof a.cwd&&"string"==typeof a.implementerPath&&"string"==typeof a.baseRef&&Array.isArray(a.rounds)}function s(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.name&&!!a.implementer&&!!a.reviewer}function t(){let a=q(k);return(Array.isArray(a?.flows)?a.flows.filter(r):[]).map(a=>({...a,pausedState:a.pausedState??null,rounds:a.rounds.map(a=>({...a,sessionId:a.sessionId??null,reviewerPid:a.reviewerPid??null,spawnStartedAt:a.spawnStartedAt??null,relayStartedAt:a.relayStartedAt??null,error:a.error??null}))}))}function u(a){o(k,{flows:a})}function v(){let a=q(l),b=Array.isArray(a?.presets)?a.presets.filter(s):[];return b.length>0?b:(o(l,{presets:n}),n)}function w(a){return i().join(m,a)}function x(a,b){return i().join(w(a),`round-${b}-review.md`)}function y(a,b){return i().join(w(a),`round-${b}-last-message.md`)}function z(a,b){return i().join(w(a),`round-${b}-stderr.txt`)}function A(a,b){return i().join(w(a),`round-${b}-stdout.log`)}function B(a,b){let c=b.replace(/^\s*VERDICT:\s*(APPROVE|REQUEST_CHANGES|COMMENT)\s*$/im,"").trim();return`VERDICT: ${a}
4
4
  ${c?"\n"+c+"\n":"\n"}`}}};