agent-afk 3.42.1 → 3.42.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +2 -2
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -2174,10 +2174,10 @@ _ended: ${new Date().toISOString()}_
|
|
|
2174
2174
|
`).find(b=>b.trim().length>0)?.trim()??"",g=f.length>0?f:`${e.kind} (no structured fields)`,h=ie(rn(g),n).split(`
|
|
2175
2175
|
`);for(let b of h)d.push(i+" "+Re(b,n)+" "+i)}else for(let f of l){let g=p.dim(Re(f.label,c)),h=ie(rn(f.value),u).split(`
|
|
2176
2176
|
`),b=h[0]??"";d.push(i+" "+g+" "+Re(b,u)+" "+i);for(let y of h.slice(1))d.push(i+" "+" ".repeat(c)+" "+Re(y,u)+" "+i)}d.push(a);let m=p.dim(le(t.affordance,n));return d.push(i+" "+Re(m,n)+" "+i),d.push(s),d.join(`
|
|
2177
|
-
`)}function EN(e){let t=[],n=(r,o)=>{o&&o.trim().length>0&&t.push({label:r,value:o.trim()})};switch(e.kind){case"done":n("done",e.whatWasDone),n("evidence",e.evidence),n("deferred",e.deferred);break;case"blocked":n("blocks",e.whatBlocks),n("unblock",e.unblockCondition),n("progress",e.alreadyDone);break;case"asking":n("question",e.question),n("resolves",e.assumption),n("after",e.followup);break;case"interrupted":n("was doing",e.whatWasInProgress),n("saved at",e.stateLocation),n("resume",e.resumeRequires);break}return t}function qS(e,t,n){let r=[];return n&&n.trim().length>0&&r.push({type:"text",text:n}),e&&r.push({type:"text",text:e}),el(r,t),r}async function JS(e,t,n,r,o="summary",s,i,a){let l=Iw(e.text,e.attachments);r.setInFlight(!0);let c="",u=!1,d=!1,m=!1,f=!1,g,h=!1,b=!1,y=[],w=new Map,v=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,x=r.getCompositor?r.getCompositor():null,S=()=>new so({out:io(s),thinkingMode:o,...v?{activeSkillName:v}:{},onCancel:()=>{t.interrupt().catch(I=>{Be()&&console.error(" "+p.error("session.interrupt() failed:"),I)})},...i?{onBackground:()=>{h=!0}}:{},...a?.history?{history:a.history}:{},...a?.autocompleteState?{autocompleteState:a.autocompleteState}:{},...a?.promptText!==void 0?{promptText:a.promptText}:{},...r.scrollRegion?{scrollRegion:r.scrollRegion}:{},...x?{compositor:x}:{}}),E=S(),A=async()=>{if(!m){m=!0;try{await E.dispose()}catch{}}},$=async()=>{await E.arm();let I=E.getCompositor();if(s&&I){let _=I;s.fn=L=>_.commitAbove(L)}r.setActiveCompositor?.(I),r.rearmStatus?.()};try{x?x.commitAbove(""):console.log(),await $(),i&&r.setBackgroundHandler&&r.setBackgroundHandler(()=>{h=!0}),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{b=!0});let I=e.attachments.length===0?e.text:qS(e.text,e.attachments),_=t.sendMessageStream(I);if(await xr((R,M)=>{E.process(R,M)},async()=>{for await(let R of _){if(b){t.interrupt().catch(M=>{Be()&&console.error(" "+p.error("soft-stop session.interrupt() failed:"),M)});break}if(h&&i){let M=v??e.text.slice(0,40),P=i.register(M),N=Ta(P,i);Ea(_,c,l,P,i,N,n,r.onTurnComplete,t.abortSignal),await A(),(s??{fn:console.log}).fn(p.dim(` \u2192 backgrounded as ${P.id}: ${P.label}`)),r.setInFlight(!1),r.rearmStatus?.();return}if(R.type==="chunk"&&R.chunk.type==="content"?(c+=R.chunk.content,u=!0):R.type==="message"&&!u&&(c=R.message.content),R.type==="chunk"&&R.chunk.type==="tool_use_detail"){let M=R.chunk,P={toolName:M.toolName,toolUseId:M.toolUseId,input:M.toolInput};w.set(M.toolUseId,P),y.push(P)}else if(R.type==="chunk"&&R.chunk.type==="tool_result"){let M=R.chunk,P=w.get(M.toolUseId);P&&(P.result=M.content,P.isError=M.isError,w.delete(M.toolUseId))}if(R.type==="paused"){await A(),(s??{fn:console.log}).fn(Km({reason:R.reason,...R.resetsAt!==void 0?{resetsAt:R.resetsAt}:{},...R.accountId!==void 0?{accountId:R.accountId}:{},...R.autoResume!==void 0?{autoResume:R.autoResume}:{}}));continue}if(R.type==="resumed"){let M=R.hotSwapped&&R.accountId?`\u25B6 Resumed on ${R.accountId}`:"\u25B6 Resumed";c="",u=!1,y.length=0,w.clear(),f=!1,g=void 0,d=!1,h=!1,E=S(),m=!1,await $(),(s??{fn:console.log}).fn(p.success(M));continue}if(R.type==="error"){await A(),vr(kr(R.error)),d=!0;continue}E.process(R),R.type==="done"&&(f=!0,g=R.metadata)}}),await A(),b
|
|
2177
|
+
`)}function EN(e){let t=[],n=(r,o)=>{o&&o.trim().length>0&&t.push({label:r,value:o.trim()})};switch(e.kind){case"done":n("done",e.whatWasDone),n("evidence",e.evidence),n("deferred",e.deferred);break;case"blocked":n("blocks",e.whatBlocks),n("unblock",e.unblockCondition),n("progress",e.alreadyDone);break;case"asking":n("question",e.question),n("resolves",e.assumption),n("after",e.followup);break;case"interrupted":n("was doing",e.whatWasInProgress),n("saved at",e.stateLocation),n("resume",e.resumeRequires);break}return t}function qS(e,t,n){let r=[];return n&&n.trim().length>0&&r.push({type:"text",text:n}),e&&r.push({type:"text",text:e}),el(r,t),r}async function JS(e,t,n,r,o="summary",s,i,a){let l=Iw(e.text,e.attachments);r.setInFlight(!0);let c="",u=!1,d=!1,m=!1,f=!1,g,h=!1,b=!1,y=[],w=new Map,v=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,x=r.getCompositor?r.getCompositor():null,S=()=>new so({out:io(s),thinkingMode:o,...v?{activeSkillName:v}:{},onCancel:()=>{t.interrupt().catch(I=>{Be()&&console.error(" "+p.error("session.interrupt() failed:"),I)})},...i?{onBackground:()=>{h=!0}}:{},...a?.history?{history:a.history}:{},...a?.autocompleteState?{autocompleteState:a.autocompleteState}:{},...a?.promptText!==void 0?{promptText:a.promptText}:{},...r.scrollRegion?{scrollRegion:r.scrollRegion}:{},...x?{compositor:x}:{}}),E=S(),A=async()=>{if(!m){m=!0;try{await E.dispose()}catch{}}},$=async()=>{await E.arm();let I=E.getCompositor();if(s&&I){let _=I;s.fn=L=>_.commitAbove(L)}r.setActiveCompositor?.(I),r.rearmStatus?.()};try{x?x.commitAbove(""):console.log(),await $(),i&&r.setBackgroundHandler&&r.setBackgroundHandler(()=>{h=!0}),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{b=!0});let I=e.attachments.length===0?e.text:qS(e.text,e.attachments),_=t.sendMessageStream(I);if(await xr((R,M)=>{E.process(R,M)},async()=>{for await(let R of _){if(b){t.interrupt().catch(M=>{Be()&&console.error(" "+p.error("soft-stop session.interrupt() failed:"),M)});break}if(h&&i){let M=v??e.text.slice(0,40),P=i.register(M),N=Ta(P,i);Ea(_,c,l,P,i,N,n,r.onTurnComplete,t.abortSignal),await A(),(s??{fn:console.log}).fn(p.dim(` \u2192 backgrounded as ${P.id}: ${P.label}`)),r.setInFlight(!1),r.rearmStatus?.();return}if(R.type==="chunk"&&R.chunk.type==="content"?(c+=R.chunk.content,u=!0):R.type==="message"&&!u&&(c=R.message.content),R.type==="chunk"&&R.chunk.type==="tool_use_detail"){let M=R.chunk,P={toolName:M.toolName,toolUseId:M.toolUseId,input:M.toolInput};w.set(M.toolUseId,P),y.push(P)}else if(R.type==="chunk"&&R.chunk.type==="tool_result"){let M=R.chunk,P=w.get(M.toolUseId);P&&(P.result=M.content,P.isError=M.isError,w.delete(M.toolUseId))}if(R.type==="paused"){await A(),(s??{fn:console.log}).fn(Km({reason:R.reason,...R.resetsAt!==void 0?{resetsAt:R.resetsAt}:{},...R.accountId!==void 0?{accountId:R.accountId}:{},...R.autoResume!==void 0?{autoResume:R.autoResume}:{}}));continue}if(R.type==="resumed"){let M=R.hotSwapped&&R.accountId?`\u25B6 Resumed on ${R.accountId}`:"\u25B6 Resumed";c="",u=!1,y.length=0,w.clear(),f=!1,g=void 0,d=!1,h=!1,E=S(),m=!1,await $(),(s??{fn:console.log}).fn(p.success(M));continue}if(R.type==="error"){await A(),vr(kr(R.error)),d=!0;continue}E.process(R),R.type==="done"&&(f=!0,g=R.metadata)}}),await A(),b){let R=s?s.fn:console.log;R(p.warning("\u23F8 Stopped \u2014 work so far kept.")+p.dim(" Use /resume or --resume to continue.")),R("")}if(f&&!b){Yn(n,l,c,g,y),r.onTurnComplete&&await r.onTurnComplete(l,c).catch(()=>{});let R=P=>{s?s.fn(P):console.log(P)},M=GS(c);if(M&&(R(zS(M)),R(""),r.onTerminalState))try{r.onTerminalState(M)}catch{}if(xN(g,n,R),r.onAfterTurn){let P=r.onAfterTurn();P instanceof Promise&&await P.catch(()=>{})}}}catch(I){await A(),d||vr(kr(I))}finally{await A(),s&&(s.fn=I=>console.log(I)),r.setActiveCompositor?.(null),r.setBackgroundHandler?.(null),r.setSoftStopHandler?.(null),r.setInFlight(!1),r.rearmStatus?.()}}function xN(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(oe(e.durationMs)),e.totalCostUsd!==void 0&&r.push(Oe(e.totalCostUsd));let o=Number(e.usage?.input_tokens??0),s=Number(e.usage?.output_tokens??0);o+s>0&&r.push(ee(o+s)+" tok"),r.length>0&&n(p.dim(" \u25E6 "+r.join(" \xB7 ")));let i=ed(t),a=tt(t.model);if(i>=1){let l=Math.round((i-1)*a),c=Math.round(a/1e3);console.log(p.error(` context OVER ${c}k tok by ~${ee(l)} tok \u2014 model output may be silently truncated`))}else if(i>.5){let l=i>.8?p.error:p.warning;n(l(` context ${Math.round(i*100)}% used of ${ee(a)}`))}n("")}function VS(e={}){let t=e.load??ka,n=e.onResize??(i=>je.subscribe(i)),r="",o,s=n(()=>{r=""});return{renderIfChanged(i){let a=i??"unbound",l=t(a),c=Gb(l);return a===o&&c===r?[]:(o=a,r=c,c===""?[]:Sa(l))},invalidate(){r=""},dispose(){try{s()}catch{}}}}var up={done:{glyph:"\u2713",color:p.success,label:"done"},blocked:{glyph:"\u2298",color:p.error,label:"blocked"},asking:{glyph:"?",color:p.warning,label:"asking"},interrupted:{glyph:"\u23F8",color:p.meta,label:"interrupted"}};function YS(e={}){let t=Math.max(2,e.capacity??8),n=[];return{push(r){n.push(r.kind),n.length>t&&(n=n.slice(n.length-t))},reset(){n=[]},entries(){return n},render(){if(n.length===0)return null;let r=p.dim(" ledger "),o=p.dim(" \xB7 "),s=n.map(u=>{let d=up[u];return d.color(`${d.glyph} ${d.label}`)}),i=p.dim(` (${n.length} turn${n.length===1?"":"s"})`),a=r+s.join(o)+i,l=Math.max(20,Y()-2);if(G(a)<=l)return a;let c=r+n.map(u=>up[u].color(up[u].glyph)).join(p.dim(" "))+i;return le(c,l)}}}var dp=["\u25D0","\u25D1","\u25D2","\u25D3"],$l=class{stream;manager;registry;throttleMs;started=!1;lastRepaint=0;spinnerIndex=0;spinnerInterval=null;resizeUnsub=null;updateHandler=null;registryStartedHandler=null;registrySettledHandler=null;rowCount=0;onRowCountChange;constructor(t,n,r={}){this.manager=t,this.registry=n,this.stream=r.stream??process.stdout,this.throttleMs=r.throttleMs??200}setRowCountChangeHandler(t){this.onRowCountChange=t}start(){this.started||(this.started=!0,this.updateHandler=()=>this.scheduleRepaint(),this.manager.on("update",this.updateHandler),this.manager.on("complete",this.updateHandler),this.registry&&(this.registryStartedHandler=t=>{this.scheduleRepaint()},this.registrySettledHandler=t=>{this.scheduleRepaint()},this.registry.on("started",this.registryStartedHandler),this.registry.on("settled",this.registrySettledHandler)),this.resizeUnsub=je.subscribe(()=>this.repaint()),this.spinnerInterval=setInterval(()=>{this.spinnerIndex=(this.spinnerIndex+1)%dp.length,this.rowCount>0&&this.repaint()},Math.max(this.throttleMs,50)))}stop(){this.started&&(this.started=!1,this.updateHandler&&(this.manager.removeListener("update",this.updateHandler),this.manager.removeListener("complete",this.updateHandler),this.updateHandler=null),this.registry&&(this.registryStartedHandler&&(this.registry.off("started",this.registryStartedHandler),this.registryStartedHandler=null),this.registrySettledHandler&&(this.registry.off("settled",this.registrySettledHandler),this.registrySettledHandler=null)),this.resizeUnsub&&(this.resizeUnsub(),this.resizeUnsub=null),this.spinnerInterval&&(clearInterval(this.spinnerInterval),this.spinnerInterval=null),this.rowCount>0&&(this.clearRows(),this.rowCount=0,this.onRowCountChange?.(0)))}scheduleRepaint(){Date.now()-this.lastRepaint<this.throttleMs||this.repaint()}repaint(){if(!this.started||!this.stream.isTTY)return;this.lastRepaint=Date.now();let t=[...this.manager.running().map(s=>({kind:"turn",task:s})),...(this.registry?.list()??[]).filter(s=>s.status==="running").map(s=>({kind:"subagent",job:s}))],n=this.stream.rows??24,r=Math.max(0,Math.min(t.length,n-1));if(r!==this.rowCount&&(this.rowCount>0&&this.clearRows(),this.rowCount=r,this.onRowCountChange?.(r)),r===0)return;let o=Math.max(1,n-r);this.stream.write("\x1B[s");for(let s=0;s<r;s++){let i=t[s],a=o+s;this.stream.write(`\x1B[${a};1H`),this.stream.write("\x1B[2K"),this.stream.write(this.formatItemLine(i))}this.stream.write("\x1B[u")}clearRows(){if(!this.stream.isTTY)return;let t=this.stream.rows??24,n=Math.min(this.rowCount,t-1),r=Math.max(1,t-n);this.stream.write("\x1B[s");for(let o=0;o<n;o++)this.stream.write(`\x1B[${r+o};1H`),this.stream.write("\x1B[2K");this.stream.write("\x1B[u")}formatItemLine(t){return t.kind==="turn"?this.formatTaskLine(t.task):this.formatJobLine(t.job)}formatTaskLine(t){let n=Math.max(4,(this.stream.columns??80)-2),r=p.brand(dp[this.spinnerIndex]),o=p.dim(t.id),s=p.bold(t.label),i=[r,o,s];t.progressDescription&&i.push(p.dim(t.progressDescription));let a=[];t.stats.toolUses>0&&a.push(`${t.stats.toolUses} tool${t.stats.toolUses===1?"":"s"}`),t.stats.tokens>0&&a.push(`${ee(t.stats.tokens)} tok`);let l=Date.now()-t.startedAt;return a.push(oe(l)),a.length>0&&i.push(p.dim(a.join(" \xB7 "))),le(" "+i.join(" "),n)}formatJobLine(t){let n=Math.max(4,(this.stream.columns??80)-2),r=p.brand(dp[this.spinnerIndex]),o=p.dim(t.jobId),s=p.bold(t.label||t.jobId),i=[r,o,s],a=Date.now()-t.startedAt;return i.push(p.dim(oe(a))),le(" "+i.join(" "),n)}};function Ol(e,t){let n=p.brand("afk")+p.dim(` (${e})`),r=t?p.warning(" \u25CF plan"):"";return n+r+p.dim(" \u203A ")}async function XS(e,t,n,r){let o=null,s=[];e.session.current.waitForInitialization().then(async m=>{Be()&&(o=ha(m)),await rl(e.session.current),Be()&&(s=Wk())}).catch(()=>{});let i=await US(),a=new Il({rl:e.rl,history:i,statusLine:e.statusLine}),l,c,u,d;try{await a.armCompositor({promptFn:()=>Ol(e.stats.model,e.stats.planMode),onCancel:r,onShiftTab:()=>{let h=e.slashCtx;h.stats.planMode&&h.stats.pendingPlanExit?(h.stats.pendingPlanExit=!1,Tt(h,!1,{closureSummarySkipped:!0}).catch(()=>{})):Tt(h).catch(()=>{}),e.statusLine.rearm()},scrollRegion:e.statusLine,...e.preArmAnchorRow!==void 0?{anchorRow:e.preArmAnchorRow}:{}}),Cr.install(KS({readLine:h=>a.readLine({promptFn:()=>h}).then(b=>b.text),writer:{line:(h="")=>{let b=a.getCompositor();b?b.commitAbove(h):process.stdout.write(h+`
|
|
2178
2178
|
`)}},pendingCount:()=>Cr.pendingCount()})),e.replRenderer.setCompositor(a.getCompositor()),e.slashCtx.getCompositor=()=>a.getCompositor(),c=VS();let m=YS();e.clearVerdictLedger=()=>m.reset(),u=new va,nw(u),lw(u),dw(u),cw(e.backgroundRegistry),d=new $l(u,e.backgroundRegistry),d.setRowCountChangeHandler(h=>{e.statusLine.setExtraRows(h)}),d.start();let f=50,g=[];for(u.on("complete",h=>{g.length>=f&&g.shift(),g.push(h)});;){if(o&&(e.replRenderer.writeLine(o),e.replRenderer.writeLine(""),o=null),s.length>0){for(let E of s)e.replRenderer.writeLine(E);e.replRenderer.writeLine(""),s=[]}for(;g.length>0;){let E=g.shift(),A=E.status==="succeeded"?"\u2713":"\u2717",$=[];if(E.resultText){let _=E.resultText.trim().split(`
|
|
2179
2179
|
`)[0]?.slice(0,80)??"";_&&$.push(_)}E.error&&$.push(E.error.message);let I=[E.stats.toolUses>0?`${E.stats.toolUses} tools`:"",E.stats.tokens>0?`${Math.round(E.stats.tokens/1e3)}k tok`:"",E.stats.durationMs>0?`${Math.round(E.stats.durationMs/1e3)}s`:""].filter(Boolean).join(" \xB7 ");I&&$.push(I),e.replRenderer.writeLine(on({kind:E.status==="succeeded"?"checkpoint":"diagnosis",title:`${A} ${E.id} ${E.label}`,body:$})),e.replRenderer.writeLine("")}let h=c.renderIfChanged(e.stats.sessionId);if(h.length>0){for(let E of h)e.replRenderer.writeLine(E);e.replRenderer.writeLine("")}let b=m.render();b&&e.replRenderer.writeLine(b);let y,w;if(l!==void 0){let E=l;l=void 0;let A=Ol(e.stats.model,e.stats.planMode),$=Zn({buffer:E.text,promptText:A,isTTY:!!process.stdout.isTTY,attachmentSummary:eo([...E.attachments])});e.replRenderer.writeLine($),y=E.text.trim(),w=E.attachments}else{let E=await a.readLine({promptFn:()=>Ol(e.stats.model,e.stats.planMode),onSigint:r,onShiftTab:()=>{let A=e.slashCtx;A.stats.planMode&&A.stats.pendingPlanExit?(A.stats.pendingPlanExit=!1,Tt(A,!1,{closureSummarySkipped:!0}).catch(()=>{})):Tt(A).catch(()=>{}),e.statusLine.rearm()}});y=E.text.trim(),w=E.attachments}if(!y&&w.length===0)continue;let v=!1;if(y.startsWith("/")){let E=await Eb(y,e.slashCtx,w);if(E.handled){if(E.result==="exit"){e.rl.close();return}if((y==="/clear"||y.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(p.dim(` transcript: ${t.path()}`)),m.reset()),E.result!==null&&typeof E.result=="object"&&"kind"in E.result&&E.result.kind==="submit"){l={text:E.result.message,attachments:w??[]},e.statusLine.rearm();continue}e.statusLine.rearm();continue}v=!0}i.push(y);let x=y;if(v){let E=Zu(y);if(E){let A=E.name.replace(/^\//,"").split(":").pop()??"";if(A&&Fd(A)){let $={skillName:A,rawArgs:E.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},I=e.session.current.sessionId,_=ws(I),L=Date.now();z(`[afk trace] preflight.start commandName=${A}`);let R=!1,M=await bs($,{cwd:e.stats.cwd??process.cwd(),artifactDir:_},P=>{Be()&&e.replRenderer.writeLine(p.warning(`\u26A0 preflight(${A}) failed: `)+(P instanceof Error?P.message:String(P)))});R=M!==null,z(`[afk trace] preflight.end commandName=${A} durationMs=${Date.now()-L} success=${R}`),x=jd(M?.manifestBlock,y)}}}let S;if(e.firstTurnHook&&e.stats.totalTurns===0){let E=e.firstTurnHook;e.firstTurnHook=void 0,S=Promise.resolve().then(()=>E(y)).catch(A=>{e.completionWriter.fn(p.warning("\u26A0 ")+"first-turn hook failed: "+(A instanceof Error?A.message:String(A)))})}await JS({text:x,attachments:w},e.session.current,e.stats,{setInFlight(E){n.turnInFlight=E},async onTurnComplete(E,A){await t.appendTurn(E,A)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await Lb(e.slashCtx),e.statusLine.rearm()},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:E=>m.push(E),setActiveCompositor:E=>{n.activeCompositor=E},scrollRegion:e.statusLine,getCompositor:()=>a.getCompositor(),setBackgroundHandler:E=>a.setBackgroundHandler(E),setSoftStopHandler:E=>a.setSoftStopHandler(E)},e.options.thinkingUi,e.completionWriter,u,a.toRunTurnRefs(Ol(e.stats.model,e.stats.planMode))),S!==void 0&&await S}}finally{if(u!==void 0)for(let m of u.running())u.cancel(m.id);d?.stop(),c?.dispose(),await a.dispose()}}import{execFile as RN}from"node:child_process";import{dirname as AN,isAbsolute as CN,resolve as _N}from"node:path";import{promisify as IN}from"node:util";var QS=IN(RN),PN=3e3,MN=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function $N(){let t=(await QS("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=CN(t)?t:_N(process.cwd(),t);return AN(n)}async function ZS(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await $N()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),PN)});try{let o=Dt({execFile:QS,repoRoot:t,dryRun:!1,scope:"interactive",bypassSoftLaunch:!0}),s=await Promise.race([o,r]);if(s==="timeout")return{ran:!1,removedCount:0,skippedReason:"timeout"};let i=s;return i.warnings.some(c=>c.toLowerCase().includes("contested"))?{ran:!1,removedCount:0,skippedReason:"lock-contested"}:{ran:!0,removedCount:i.candidates.filter(c=>MN.has(c.verdict)&&i.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}import{promises as ON}from"node:fs";import{dirname as DN,join as LN}from"node:path";import{randomBytes as FN}from"node:crypto";var NN=["Generate a 2-4 word kebab-case slug describing this work request.","Rules:","- ASCII lowercase letters and digits only, separated by single hyphens","- 2 to 4 hyphen-separated words","- Maximum 30 characters total","- No prefix, no quotes, no punctuation other than hyphens","- Output ONLY the slug \u2014 no explanation, no preamble","Examples: fix-cleanup-race, add-telegram-allowlist, refactor-prompt-loader, debug-flaky-test"].join(`
|
|
2180
|
-
`),ev=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,pp=30,UN=1024,jN=8e3,BN="haiku";async function WN(e,t){let n=e.trim();if(n.length===0)return t.onSkip?.("empty-message"),null;if(n.startsWith("/"))return t.onSkip?.("slash-command"),null;let r=zN(n,UN),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??jN),i=t.signal?qN([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await kl({token:t.token,model:t.model??BN,system:NN,user:r,maxTokens:32,signal:i})}catch(d){let m=d instanceof Error?d.message:String(d);return t.onSkip?.("slug-generator-error",m.slice(0,200)),null}finally{clearTimeout(s)}let l=HN(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=DN(t.worktreePath);return await KN(l,c)}function HN(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(ev.test(t)&&t.length<=pp)return t;let n=t.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(n.length===0)return null;let r=n.split("-").filter(s=>s.length>0).slice(0,4);if(r.length<2)return null;let o=r[0];for(let s=1;s<r.length;s++){let i=`${o}-${r[s]}`;if(i.length>pp)break;o=i}return ev.test(o)?o:null}async function KN(e,t){if(!await GN(LN(t,e)))return e;let n=FN(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,pp-5)}-${n}`}async function GN(e){try{return await ON.access(e),!0}catch{return!1}}function zN(e,t){let n=Buffer.from(e,"utf8");if(n.length<=t)return e;let r=t;for(;r>0&&n[r]!==void 0&&(n[r]&192)===128;)r--;return n.slice(0,r).toString("utf8")}function qN(e){let t=AbortSignal.any;if(typeof t=="function")return t.call(AbortSignal,e);let n=new AbortController;for(let r of e){if(r.aborted)return n.abort(r.reason),n.signal;r.addEventListener("abort",()=>n.abort(r.reason),{once:!0})}return n.signal}async function nv(e){let t,n,r=await WN(e.message,{token:e.token,...e.model!==void 0?{model:e.model}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},worktreePath:e.handle.path,...e.signal!==void 0?{signal:e.signal}:{},...e.slugGenerator!==void 0?{slugGenerator:e.slugGenerator}:{},onSkip:(i,a)=>{t=i,n=a}});if(r===null)return{status:"skipped",reason:t??"unknown",...n!==void 0?{detail:n}:{}};let s=await(e.renameFn??Dh)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),tv(s.newPath),{status:"renamed",oldPath:s.oldPath,newPath:s.newPath,oldBranch:s.oldBranch,newBranch:s.newBranch}):(s.partial==="branch"&&(e.session&&e.session.setCwd(e.handle.path),tv(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function tv(e){try{process.chdir(e)}catch{}}U();import{spawn as rv}from"child_process";import{existsSync as QN,mkdirSync as ZN,readFileSync as ov,unlinkSync as eU,writeFileSync as tU}from"fs";import{get as nU}from"https";import{join as sv}from"path";import{readFileSync as JN}from"fs";import{dirname as VN,join as YN}from"path";import{fileURLToPath as XN}from"url";function Yt(){try{return"3.42.
|
|
2180
|
+
`),ev=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,pp=30,UN=1024,jN=8e3,BN="haiku";async function WN(e,t){let n=e.trim();if(n.length===0)return t.onSkip?.("empty-message"),null;if(n.startsWith("/"))return t.onSkip?.("slash-command"),null;let r=zN(n,UN),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??jN),i=t.signal?qN([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await kl({token:t.token,model:t.model??BN,system:NN,user:r,maxTokens:32,signal:i})}catch(d){let m=d instanceof Error?d.message:String(d);return t.onSkip?.("slug-generator-error",m.slice(0,200)),null}finally{clearTimeout(s)}let l=HN(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=DN(t.worktreePath);return await KN(l,c)}function HN(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(ev.test(t)&&t.length<=pp)return t;let n=t.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(n.length===0)return null;let r=n.split("-").filter(s=>s.length>0).slice(0,4);if(r.length<2)return null;let o=r[0];for(let s=1;s<r.length;s++){let i=`${o}-${r[s]}`;if(i.length>pp)break;o=i}return ev.test(o)?o:null}async function KN(e,t){if(!await GN(LN(t,e)))return e;let n=FN(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,pp-5)}-${n}`}async function GN(e){try{return await ON.access(e),!0}catch{return!1}}function zN(e,t){let n=Buffer.from(e,"utf8");if(n.length<=t)return e;let r=t;for(;r>0&&n[r]!==void 0&&(n[r]&192)===128;)r--;return n.slice(0,r).toString("utf8")}function qN(e){let t=AbortSignal.any;if(typeof t=="function")return t.call(AbortSignal,e);let n=new AbortController;for(let r of e){if(r.aborted)return n.abort(r.reason),n.signal;r.addEventListener("abort",()=>n.abort(r.reason),{once:!0})}return n.signal}async function nv(e){let t,n,r=await WN(e.message,{token:e.token,...e.model!==void 0?{model:e.model}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},worktreePath:e.handle.path,...e.signal!==void 0?{signal:e.signal}:{},...e.slugGenerator!==void 0?{slugGenerator:e.slugGenerator}:{},onSkip:(i,a)=>{t=i,n=a}});if(r===null)return{status:"skipped",reason:t??"unknown",...n!==void 0?{detail:n}:{}};let s=await(e.renameFn??Dh)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),tv(s.newPath),{status:"renamed",oldPath:s.oldPath,newPath:s.newPath,oldBranch:s.oldBranch,newBranch:s.newBranch}):(s.partial==="branch"&&(e.session&&e.session.setCwd(e.handle.path),tv(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function tv(e){try{process.chdir(e)}catch{}}U();import{spawn as rv}from"child_process";import{existsSync as QN,mkdirSync as ZN,readFileSync as ov,unlinkSync as eU,writeFileSync as tU}from"fs";import{get as nU}from"https";import{join as sv}from"path";import{readFileSync as JN}from"fs";import{dirname as VN,join as YN}from"path";import{fileURLToPath as XN}from"url";function Yt(){try{return"3.42.2"}catch{}try{let e=VN(XN(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(JN(YN(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}q();var rU=64*1024,oU=1440*60*1e3,sU="update-check.json",iU="pending-update.json";function iv(){return sv(Vs(),sU)}function mp(){return sv(Vs(),iU)}function av(){let e=Vs();QN(e)||ZN(e,{recursive:!0})}function aU(e,t){let n=e.split(".").map(Number),r=t.split(".").map(Number),o=Math.max(n.length,r.length);for(let s=0;s<o;s++){let i=n[s]??0,a=r[s]??0;if(a>i)return!0;if(a<i)return!1}return!1}function lU(){try{let e=ov(iv(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function cU(){try{av();let e=`
|
|
2181
2181
|
const https = require('https');
|
|
2182
2182
|
const fs = require('fs');
|
|
2183
2183
|
const url = 'https://registry.npmjs.org/agent-afk/latest';
|