agent-afk 3.45.1 → 3.45.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +4 -4
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -2023,10 +2023,10 @@ ${u}`}function Ld(e,t){let n=uS[t.status];e.out.line(` ${n} ${m.bold(t.jobId)}
|
|
|
2023
2023
|
|
|
2024
2024
|
`),t&&(n=n.replace(/^\n+/,"").replace(/\n+$/,"")),n}function vL(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Bd(e,t){let n=vL(t),r=new RegExp(`<${n}>`,"g"),o=r.test(e);r.lastIndex=0;let s=new RegExp(`(\\n|^)[ \\t]*<${n}>[ \\t]*\\n?`,"gm"),i=new RegExp(`(\\n|^)[ \\t]*</${n}>[ \\t]*\\n?`,"gm"),a=new RegExp(`</${n}>`,"g"),l=!1,c=e;return c=c.replace(s,(u,d)=>(l=!0,d)),c=c.replace(i,(u,d)=>(l=!0,d)),c=c.replace(r,()=>(l=!0,"")),c=c.replace(a,()=>(l=!0,"")),c=c.replace(/^[ \t]+$/gm,""),c=c.replace(/\n{3,}/g,`
|
|
2025
2025
|
|
|
2026
|
-
`),l&&(c=c.replace(/^\n+/,"").replace(/\n+$/,"")),{text:c,found:o}}W();W();import{emitKeypressEvents as UL}from"readline";import TL from"wrap-ansi";var bS="\x1B[?2026h",wS="\x1B[?2026l",vs=(e,t)=>`\x1B[${e};${t}H`,Wd="\x1B[2K",EL="\x1B[?25l",SS="\x1B[?25h",Ja=class{stream;previousTopRow=0;previousLineCount=0;constructor(t){this.stream=t}get topRow(){return this.previousTopRow}render(t,n){let r=Math.max(1,n),o=this.stream.columns??80,s=this.stream.isTTY===!0,i=t.endsWith(`
|
|
2026
|
+
`),l&&(c=c.replace(/^\n+/,"").replace(/\n+$/,"")),{text:c,found:o}}W();W();import{emitKeypressEvents as UL}from"readline";import TL from"wrap-ansi";var bS="\x1B[?2026h",wS="\x1B[?2026l",vs=(e,t)=>`\x1B[${e};${t}H`,Wd="\x1B[2K",EL="\x1B[?25l",SS="\x1B[?25h",Ja=class{stream;previousTopRow=0;previousLineCount=0;previousRawLineCount=0;constructor(t){this.stream=t}get topRow(){return this.previousTopRow}render(t,n){let r=Math.max(1,n),o=this.stream.columns??80,s=this.stream.isTTY===!0,i=t.endsWith(`
|
|
2027
2027
|
`)?t:`${t}
|
|
2028
2028
|
`,l=TL(i,o,{trim:!1,hard:!0,wordWrap:!1}).split(`
|
|
2029
|
-
`);for(;l.length>0&&l[l.length-1]==="";)l.pop();let c=Math.max(1,l.length),u=this.
|
|
2029
|
+
`);for(;l.length>0&&l[l.length-1]==="";)l.pop();let c=Math.max(1,l.length),u=this.previousRawLineCount>c?[...Array(this.previousRawLineCount-c).fill(""),...l]:l,d=u.length,p=Math.max(1,r-d+1),f="";if(s&&(f+=bS),this.previousLineCount>0)for(let g=0;g<this.previousLineCount;g++){let h=this.previousTopRow+g;f+=vs(h,1)+Wd}for(let g=0;g<d;g++){let h=p+g;f+=vs(h,1)+Wd+(u[g]??"")}if(f+=vs(p+d-1,1),s&&(f+=wS),this.stream.isTTY)try{this.stream.write(EL)}catch{}try{this.stream.write(f)}catch{try{this.stream.isTTY&&this.stream.write(SS)}catch{}}this.previousTopRow=p,this.previousLineCount=d,this.previousRawLineCount=c}resetGeometry(){this.previousTopRow=0,this.previousLineCount=0,this.previousRawLineCount=0}clear(){if(this.previousLineCount===0)return;let t="",n=this.stream.isTTY===!0;n&&(t+=bS);for(let r=0;r<this.previousLineCount;r++){let o=this.previousTopRow+r;t+=vs(o,1)+Wd}t+=vs(Math.max(1,(this.stream.rows??24)-1),1),n&&(t+=wS);try{this.stream.write(t)}catch{}this.previousTopRow=0,this.previousLineCount=0,this.previousRawLineCount=0}done(){if(this.previousTopRow=0,this.previousLineCount=0,this.previousRawLineCount=0,this.stream.isTTY)try{this.stream.write(SS)}catch{}}};import Ts from"string-width";function sr(e){let{buffer:t,promptText:n,isTTY:r,attachmentSummary:o}=e,s=o&&o.length>0?o:null;if(!r){let g=n+t;return s!==null?`${g} ${s}`:g}let i=e.terminalWidth??X(),a=t.includes(`
|
|
2030
2030
|
`),l=Ts(Pe(t)),c=l>=i-2,u;if(!a&&!c){let g=Math.max(0,i-l);u=" ".repeat(g)+t}else u=dn({kind:"user",body:t});if(s===null)return u;let d=Ts(s),p=Math.max(0,i-d),f=" ".repeat(p)+m.dim(s);return u+`
|
|
2031
2031
|
`+f}function Hd(e,t,n){let r=n||80,o=e.split(`
|
|
2032
2032
|
`),s=0;for(let i=0;i<o.length;i++){let a=Pe(o[i]),l=(i===0?t:0)+Ts(a);s+=Math.max(1,Math.ceil(l/r))}return Math.max(0,s-1)}function Cn(e,t,n,r){let o=r||80,s=e.split(`
|
|
@@ -2179,10 +2179,10 @@ _ended: ${new Date().toISOString()}_
|
|
|
2179
2179
|
`).find(b=>b.trim().length>0)?.trim()??"",g=f.length>0?f:`${e.kind} (no structured fields)`,h=ie(un(g),n).split(`
|
|
2180
2180
|
`);for(let b of h)d.push(i+" "+Re(b,n)+" "+i)}else for(let f of l){let g=m.dim(Re(f.label,c)),h=ie(un(f.value),u).split(`
|
|
2181
2181
|
`),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 p=m.dim(le(t.affordance,n));return d.push(i+" "+Re(p,n)+" "+i),d.push(s),d.join(`
|
|
2182
|
-
`)}function n1(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 Xv(e,t,n){let r=[];return n&&n.trim().length>0&&r.push({type:"text",text:n}),e&&r.push({type:"text",text:e}),gl(r,t),r}async function Zv(e,t,n,r,o="summary",s,i,a){let l=$S(e.text,e.attachments);r.setInFlight(!0);let c="",u=!1,d=!1,p=!1,f=!1,g,h=!1,b=!1,y=[],S=new Map,T=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,R=r.getCompositor?r.getCompositor():null,k=()=>new ho({out:yo(s),thinkingMode:o,...T?{activeSkillName:T}:{},onCancel:()=>{t.interrupt().catch(O=>{Be()&&console.error(" "+m.error("session.interrupt() failed:"),O)})},...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}:{},...R?{compositor:R}:{}}),x=k(),A=async()=>{if(!p){p=!0;try{await x.dispose()}catch{}}},D=async()=>{await x.arm();let O=x.getCompositor();if(s&&O){let P=O;s.fn=M=>P.commitAbove(M)}r.setActiveCompositor?.(O),r.rearmStatus?.()};try{R?R.commitAbove(""):console.log(),
|
|
2182
|
+
`)}function n1(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 Xv(e,t,n){let r=[];return n&&n.trim().length>0&&r.push({type:"text",text:n}),e&&r.push({type:"text",text:e}),gl(r,t),r}async function Zv(e,t,n,r,o="summary",s,i,a){let l=$S(e.text,e.attachments);r.setInFlight(!0);let c="",u=!1,d=!1,p=!1,f=!1,g,h=!1,b=!1,y=[],S=new Map,T=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,R=r.getCompositor?r.getCompositor():null,k=()=>new ho({out:yo(s),thinkingMode:o,...T?{activeSkillName:T}:{},onCancel:()=>{t.interrupt().catch(O=>{Be()&&console.error(" "+m.error("session.interrupt() failed:"),O)})},...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}:{},...R?{compositor:R}:{}}),x=k(),A=async()=>{if(!p){p=!0;try{await x.dispose()}catch{}}},D=async()=>{await x.arm();let O=x.getCompositor();if(s&&O){let P=O;s.fn=M=>P.commitAbove(M)}r.setActiveCompositor?.(O),r.rearmStatus?.()};try{R?R.commitAbove(""):console.log(),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{b=!0}),await D(),i&&r.setBackgroundHandler&&r.setBackgroundHandler(()=>{h=!0});let O=e.attachments.length===0?e.text:Xv(e.text,e.attachments),P=t.sendMessageStream(O);if(await Or((E,_)=>{x.process(E,_)},async()=>{for await(let E of P){if(b){t.interrupt().catch(_=>{Be()&&console.error(" "+m.error("soft-stop session.interrupt() failed:"),_)});break}if(h&&i){let _=T??e.text.slice(0,40),I=i.register(_),N=Na(I,i);Ua(P,c,l,I,i,N,n,r.onTurnComplete,t.abortSignal),await A(),(s??{fn:console.log}).fn(m.dim(` \u2192 backgrounded as ${I.id}: ${I.label}`)),r.setInFlight(!1),r.rearmStatus?.();return}if(E.type==="chunk"&&E.chunk.type==="content"?(c+=E.chunk.content,u=!0):E.type==="message"&&!u&&(c=E.message.content),E.type==="chunk"&&E.chunk.type==="tool_use_detail"){let _=E.chunk,I={toolName:_.toolName,toolUseId:_.toolUseId,input:_.toolInput};S.set(_.toolUseId,I),y.push(I)}else if(E.type==="chunk"&&E.chunk.type==="tool_result"){let _=E.chunk,I=S.get(_.toolUseId);I&&(I.result=_.content,I.isError=_.isError,S.delete(_.toolUseId))}if(E.type==="paused"){await A(),(s??{fn:console.log}).fn(gf({reason:E.reason,...E.resetsAt!==void 0?{resetsAt:E.resetsAt}:{},...E.accountId!==void 0?{accountId:E.accountId}:{},...E.autoResume!==void 0?{autoResume:E.autoResume}:{}}));continue}if(E.type==="resumed"){let _=E.hotSwapped&&E.accountId?`\u25B6 Resumed on ${E.accountId}`:"\u25B6 Resumed";c="",u=!1,y.length=0,S.clear(),f=!1,g=void 0,d=!1,h=!1,x=k(),p=!1,await D(),(s??{fn:console.log}).fn(m.success(_));continue}if(E.type==="error"){await A(),Ir(_r(E.error)),d=!0;continue}x.process(E),E.type==="done"&&(f=!0,g=E.metadata)}}),await A(),b){let E=s?s.fn:console.log;E(m.warning("\u23F8 Stopped \u2014 work so far kept.")+m.dim(" Use /resume or --resume to continue.")),E("")}if(f&&!b){nr(n,l,c,g,y),r.onTurnComplete&&await r.onTurnComplete(l,c).catch(()=>{});let E=I=>{s?s.fn(I):console.log(I)},_=Vv(c);if(_&&(E(Yv(_)),E(""),r.onTerminalState))try{r.onTerminalState(_)}catch{}if(r1(g,n,E),r.onAfterTurn){let I=r.onAfterTurn();I instanceof Promise&&await I.catch(()=>{})}}}catch(O){await A(),d||Ir(_r(O))}finally{await A(),s&&(s.fn=O=>console.log(O)),r.setActiveCompositor?.(null),r.setBackgroundHandler?.(null),r.setSoftStopHandler?.(null),r.setInFlight(!1),r.rearmStatus?.()}}function r1(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(oe(e.durationMs)),e.totalCostUsd!==void 0&&r.push($e(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(m.dim(" \u25E6 "+r.join(" \xB7 ")));let i=Rd(t),a=nt(t.model);if(i>=1){let l=Math.round((i-1)*a),c=Math.round(a/1e3);console.log(m.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?m.error:m.warning;n(l(` context ${Math.round(i*100)}% used of ${ee(a)}`))}n("")}function Qv(e={}){let t=e.load??Da,n=e.onResize??(i=>je.subscribe(i)),r="",o,s=n(()=>{r=""});return{renderIfChanged(i){let a=i??"unbound",l=t(a),c=Vw(l);return a===o&&c===r?[]:(o=a,r=c,c===""?[]:La(l))},invalidate(){r=""},dispose(){try{s()}catch{}}}}var Lp={done:{glyph:"\u2713",color:m.success,label:"done"},blocked:{glyph:"\u2298",color:m.error,label:"blocked"},asking:{glyph:"?",color:m.warning,label:"asking"},interrupted:{glyph:"\u23F8",color:m.meta,label:"interrupted"}};function eT(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=m.dim(" ledger "),o=m.dim(" \xB7 "),s=n.map(u=>{let d=Lp[u];return d.color(`${d.glyph} ${d.label}`)}),i=m.dim(` (${n.length} turn${n.length===1?"":"s"})`),a=r+s.join(o)+i,l=Math.max(20,X()-2);if(z(a)<=l)return a;let c=r+n.map(u=>Lp[u].color(Lp[u].glyph)).join(m.dim(" "))+i;return le(c,l)}}}var Fp=["\u25D0","\u25D1","\u25D2","\u25D3"],Jl=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)%Fp.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=m.brand(Fp[this.spinnerIndex]),o=m.dim(t.id),s=m.bold(t.label),i=[r,o,s];t.progressDescription&&i.push(m.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(m.dim(a.join(" \xB7 "))),le(" "+i.join(" "),n)}formatJobLine(t){let n=Math.max(4,(this.stream.columns??80)-2),r=m.brand(Fp[this.spinnerIndex]),o=m.dim(t.jobId),s=m.bold(t.label||t.jobId),i=[r,o,s],a=Date.now()-t.startedAt;return i.push(m.dim(oe(a))),le(" "+i.join(" "),n)}};function Vl(e,t){let n=m.brand("afk")+m.dim(` (${e})`),r=t?m.warning(" \u25CF plan"):"";return n+r+m.dim(" \u203A ")}async function tT(e,t,n,r){let o=null,s=[];e.session.current.waitForInitialization().then(async p=>{Be()&&(o=Pa(p)),await Sl(e.session.current),Be()&&(s=ev())}).catch(()=>{});let i=await Hv(),a=new Gl({rl:e.rl,history:i,statusLine:e.statusLine}),l,c,u,d;try{await a.armCompositor({promptFn:()=>Vl(e.stats.model,e.stats.planMode),onCancel:r,onShiftTab:()=>{let h=e.slashCtx;h.stats.planMode&&h.stats.pendingPlanExit?(h.stats.pendingPlanExit=!1,Et(h,!1,{closureSummarySkipped:!0}).catch(()=>{})):Et(h).catch(()=>{}),e.statusLine.rearm()},scrollRegion:e.statusLine,...e.preArmAnchorRow!==void 0?{anchorRow:e.preArmAnchorRow}:{}}),Fr.install(Jv({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+`
|
|
2183
2183
|
`)}},pendingCount:()=>Fr.pendingCount()})),e.replRenderer.setCompositor(a.getCompositor()),e.slashCtx.getCompositor=()=>a.getCompositor(),e.slashCtx.setSoftStopHandler=h=>a.setSoftStopHandler(h),c=Qv();let p=eT();e.clearVerdictLedger=()=>p.reset(),u=new Fa,iS(u),pS(u),gS(u),mS(e.backgroundRegistry),d=new Jl(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 x of s)e.replRenderer.writeLine(x);e.replRenderer.writeLine(""),s=[]}for(;g.length>0;){let x=g.shift(),A=x.status==="succeeded"?"\u2713":"\u2717",D=[];if(x.resultText){let P=x.resultText.trim().split(`
|
|
2184
2184
|
`)[0]?.slice(0,80)??"";P&&D.push(P)}x.error&&D.push(x.error.message);let O=[x.stats.toolUses>0?`${x.stats.toolUses} tools`:"",x.stats.tokens>0?`${Math.round(x.stats.tokens/1e3)}k tok`:"",x.stats.durationMs>0?`${Math.round(x.stats.durationMs/1e3)}s`:""].filter(Boolean).join(" \xB7 ");O&&D.push(O),e.replRenderer.writeLine(dn({kind:x.status==="succeeded"?"checkpoint":"diagnosis",title:`${A} ${x.id} ${x.label}`,body:D})),e.replRenderer.writeLine("")}let h=c.renderIfChanged(e.stats.sessionId);if(h.length>0){for(let x of h)e.replRenderer.writeLine(x);e.replRenderer.writeLine("")}let b=p.render();b&&e.replRenderer.writeLine(b);let y,S;if(l!==void 0){let x=l;l=void 0;let A=Vl(e.stats.model,e.stats.planMode),D=sr({buffer:x.text,promptText:A,isTTY:!!process.stdout.isTTY,attachmentSummary:uo([...x.attachments])});e.replRenderer.writeLine(D),y=x.text.trim(),S=x.attachments}else{let x=await a.readLine({promptFn:()=>Vl(e.stats.model,e.stats.planMode),onSigint:r,onShiftTab:()=>{let A=e.slashCtx;A.stats.planMode&&A.stats.pendingPlanExit?(A.stats.pendingPlanExit=!1,Et(A,!1,{closureSummarySkipped:!0}).catch(()=>{})):Et(A).catch(()=>{}),e.statusLine.rearm()}});y=x.text.trim(),S=x.attachments}if(!y&&S.length===0)continue;let T=!1;if(y.startsWith("/")){let x=await _w(y,e.slashCtx,S);if(x.handled){if(x.result==="exit"){e.rl.close();return}if((y==="/clear"||y.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(m.dim(` transcript: ${t.path()}`)),p.reset()),x.result!==null&&typeof x.result=="object"&&"kind"in x.result&&x.result.kind==="submit"){l={text:x.result.message,attachments:S??[]},e.statusLine.rearm();continue}e.statusLine.rearm();continue}T=!0}i.push(y);let R=y;if(T){let x=xd(y);if(x){let A=x.name.replace(/^\//,"").split(":").pop()??"";if(A&&cp(A)){let D={skillName:A,rawArgs:x.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},O=e.session.current.sessionId,P=fr(O),M=Date.now();J(`[afk trace] preflight.start commandName=${A}`);let E=!1,_=await mr(D,{cwd:e.stats.cwd??process.cwd(),artifactDir:P},I=>{Be()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${A}) failed: `)+(I instanceof Error?I.message:String(I)))});E=_!==null,J(`[afk trace] preflight.end commandName=${A} durationMs=${Date.now()-M} success=${E}`),R=pp(_?.manifestBlock,y)}}}let k;if(e.firstTurnHook&&e.stats.totalTurns===0){let x=e.firstTurnHook;e.firstTurnHook=void 0,k=Promise.resolve().then(()=>x(y)).catch(A=>{e.completionWriter.fn(m.warning("\u26A0 ")+"first-turn hook failed: "+(A instanceof Error?A.message:String(A)))})}await Zv({text:R,attachments:S},e.session.current,e.stats,{setInFlight(x){n.turnInFlight=x},async onTurnComplete(x,A){await t.appendTurn(x,A)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await jw(e.slashCtx),e.statusLine.rearm()},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:x=>p.push(x),setActiveCompositor:x=>{n.activeCompositor=x},scrollRegion:e.statusLine,getCompositor:()=>a.getCompositor(),setBackgroundHandler:x=>a.setBackgroundHandler(x),setSoftStopHandler:x=>a.setSoftStopHandler(x)},e.options.thinkingUi,e.completionWriter,u,a.toRunTurnRefs(Vl(e.stats.model,e.stats.planMode))),k!==void 0&&await k}}finally{if(u!==void 0)for(let p of u.running())u.cancel(p.id);d?.stop(),c?.dispose(),await a.dispose()}}import{execFile as o1}from"node:child_process";import{dirname as s1,isAbsolute as i1,resolve as a1}from"node:path";import{promisify as l1}from"node:util";var nT=l1(o1),c1=3e3,u1=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function d1(){let t=(await nT("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=i1(t)?t:a1(process.cwd(),t);return s1(n)}async function rT(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await d1()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),c1)});try{let o=Nt({execFile:nT,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=>u1.has(c.verdict)&&i.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}import{promises as p1}from"node:fs";import{dirname as m1,join as f1}from"node:path";import{randomBytes as g1}from"node:crypto";var h1=["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(`
|
|
2185
|
-
`),oT=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Np=30,y1=1024,b1=8e3,w1="haiku";async function S1(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=E1(n,y1),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??b1),i=t.signal?x1([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await Dl({token:t.token,model:t.model??w1,system:h1,user:r,maxTokens:32,signal:i})}catch(d){let p=d instanceof Error?d.message:String(d);return t.onSkip?.("slug-generator-error",p.slice(0,200)),null}finally{clearTimeout(s)}let l=k1(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=m1(t.worktreePath);return await v1(l,c)}function k1(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(oT.test(t)&&t.length<=Np)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>Np)break;o=i}return oT.test(o)?o:null}async function v1(e,t){if(!await T1(f1(t,e)))return e;let n=g1(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Np-5)}-${n}`}async function T1(e){try{return await p1.access(e),!0}catch{return!1}}function E1(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 x1(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 iT(e){let t,n,r=await S1(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??Ny)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),sT(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),sT(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function sT(e){try{process.chdir(e)}catch{}}U();import{spawn as aT}from"child_process";import{existsSync as I1,mkdirSync as P1,readFileSync as lT,unlinkSync as M1,writeFileSync as O1}from"fs";import{get as $1}from"https";import{join as cT}from"path";import{readFileSync as R1}from"fs";import{dirname as A1,join as _1}from"path";import{fileURLToPath as C1}from"url";function nn(){try{return"3.45.
|
|
2185
|
+
`),oT=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Np=30,y1=1024,b1=8e3,w1="haiku";async function S1(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=E1(n,y1),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??b1),i=t.signal?x1([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await Dl({token:t.token,model:t.model??w1,system:h1,user:r,maxTokens:32,signal:i})}catch(d){let p=d instanceof Error?d.message:String(d);return t.onSkip?.("slug-generator-error",p.slice(0,200)),null}finally{clearTimeout(s)}let l=k1(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=m1(t.worktreePath);return await v1(l,c)}function k1(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(oT.test(t)&&t.length<=Np)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>Np)break;o=i}return oT.test(o)?o:null}async function v1(e,t){if(!await T1(f1(t,e)))return e;let n=g1(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Np-5)}-${n}`}async function T1(e){try{return await p1.access(e),!0}catch{return!1}}function E1(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 x1(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 iT(e){let t,n,r=await S1(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??Ny)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),sT(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),sT(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function sT(e){try{process.chdir(e)}catch{}}U();import{spawn as aT}from"child_process";import{existsSync as I1,mkdirSync as P1,readFileSync as lT,unlinkSync as M1,writeFileSync as O1}from"fs";import{get as $1}from"https";import{join as cT}from"path";import{readFileSync as R1}from"fs";import{dirname as A1,join as _1}from"path";import{fileURLToPath as C1}from"url";function nn(){try{return"3.45.3"}catch{}try{let e=A1(C1(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(R1(_1(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}W();var D1=64*1024,L1=1440*60*1e3,F1="update-check.json",N1="pending-update.json";function uT(){return cT(si(),F1)}function Up(){return cT(si(),N1)}function dT(){let e=si();I1(e)||P1(e,{recursive:!0})}function U1(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 j1(){try{let e=lT(uT(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function B1(){try{dT();let e=`
|
|
2186
2186
|
const https = require('https');
|
|
2187
2187
|
const fs = require('fs');
|
|
2188
2188
|
const url = 'https://registry.npmjs.org/agent-afk/latest';
|