agent-afk 3.36.2 → 3.36.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +2 -2
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -1987,7 +1987,7 @@ ${u}`}function Yu(e,t){let n=Wb[t.status];e.out.line(` ${n} ${m.bold(t.jobId)}
1987
1987
  `),l&&(c=c.replace(/^\n+/,"").replace(/\n+$/,"")),{text:c,found:o}}G();import{emitKeypressEvents as $$}from"readline";import h$ from"wrap-ansi";var Yb="\x1B[?2026h",Xb="\x1B[?2026l",ss=(e,t)=>`\x1B[${e};${t}H`,nd="\x1B[2K",y$="\x1B[?25l",b$="\x1B[?25h",Ra=class{stream;previousTopRow=0;previousLineCount=0;constructor(t){this.stream=t}render(t,n){let r=Math.max(1,n),o=this.stream.columns??80,s=this.stream.isTTY===!0,i=t.endsWith(`
1988
1988
  `)?t:`${t}
1989
1989
  `,l=h$(i,o,{trim:!1,hard:!0,wordWrap:!1}).split(`
1990
- `);for(;l.length>0&&l[l.length-1]==="";)l.pop();let c=Math.max(1,l.length),u=Math.max(1,r-c+1),d="";if(s&&(d+=Yb),this.previousLineCount>0)for(let p=0;p<this.previousLineCount;p++){let f=this.previousTopRow+p;d+=ss(f,1)+nd}for(let p=0;p<c;p++){let f=u+p;d+=ss(f,1)+nd+(l[p]??"")}if(d+=ss(u+c-1,1),s&&(d+=Xb),this.stream.isTTY)try{this.stream.write(y$)}catch{}try{this.stream.write(d)}catch{}this.previousTopRow=u,this.previousLineCount=c}clear(){if(this.previousLineCount===0)return;let t="",n=this.stream.isTTY===!0;n&&(t+=Yb);for(let r=0;r<this.previousLineCount;r++){let o=this.previousTopRow+r;t+=ss(o,1)+nd}t+=ss(this.previousTopRow,1),n&&(t+=Xb);try{this.stream.write(t)}catch{}this.previousTopRow=0,this.previousLineCount=0}done(){if(this.previousTopRow=0,this.previousLineCount=0,this.stream.isTTY)try{this.stream.write(b$)}catch{}}};import is from"string-width";function Qn(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??Y(),a=t.includes(`
1990
+ `);for(;l.length>0&&l[l.length-1]==="";)l.pop();let c=Math.max(1,l.length),u=Math.max(1,r-c+1),d="";if(s&&(d+=Yb),this.previousLineCount>0)for(let p=0;p<this.previousLineCount;p++){let f=this.previousTopRow+p;d+=ss(f,1)+nd}for(let p=0;p<c;p++){let f=u+p;d+=ss(f,1)+nd+(l[p]??"")}if(d+=ss(u+c-1,1),s&&(d+=Xb),this.stream.isTTY)try{this.stream.write(y$)}catch{}try{this.stream.write(d)}catch{}this.previousTopRow=u,this.previousLineCount=c}clear(){if(this.previousLineCount===0)return;let t="",n=this.stream.isTTY===!0;n&&(t+=Yb);for(let r=0;r<this.previousLineCount;r++){let o=this.previousTopRow+r;t+=ss(o,1)+nd}t+=ss(Math.max(1,(this.stream.rows??24)-1),1),n&&(t+=Xb);try{this.stream.write(t)}catch{}this.previousTopRow=0,this.previousLineCount=0}done(){if(this.previousTopRow=0,this.previousLineCount=0,this.stream.isTTY)try{this.stream.write(b$)}catch{}}};import is from"string-width";function Qn(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??Y(),a=t.includes(`
1991
1991
  `),l=is(Pe(t)),c=l>=i-2,u;if(!a&&!c){let g=Math.max(0,i-l);u=" ".repeat(g)+t}else u=nn({kind:"user",body:t});if(s===null)return u;let d=is(s),p=Math.max(0,i-d),f=" ".repeat(p)+m.dim(s);return u+`
1992
1992
  `+f}function rd(e,t,n){let r=n||80,o=e.split(`
1993
1993
  `),s=0;for(let i=0;i<o.length;i++){let a=Pe(o[i]),l=(i===0?t:0)+is(a);s+=Math.max(1,Math.ceil(l/r))}return Math.max(0,s-1)}function Sn(e,t,n,r){let o=r||80,s=e.split(`
@@ -2130,7 +2130,7 @@ _ended: ${new Date().toISOString()}_
2130
2130
  `);let P=vS(c);if(P&&(I(TS(P)),I(""),r.onTerminalState))try{r.onTerminalState(P)}catch{}if(GF(g,n,I),r.onAfterTurn){let D=r.onAfterTurn();D instanceof Promise&&await D.catch(()=>{})}}}catch(R){await T(),d||kr(wr(R))}finally{await T(),s&&(s.fn=R=>console.log(R)),r.setActiveCompositor?.(null),r.setBackgroundHandler?.(null),r.setInFlight(!1),r.rearmStatus?.()}}function GF(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(ae(e.durationMs)),e.totalCostUsd!==void 0&&r.push(We(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=ju(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 RS(e={}){let t=e.load??ma,n=e.onResize??(i=>ze.subscribe(i)),r="",o,s=n(()=>{r=""});return{renderIfChanged(i){let a=i??"unbound",l=t(a),c=Ab(l);return a===o&&c===r?[]:(o=a,r=c,c===""?[]:fa(l))},invalidate(){r=""},dispose(){try{s()}catch{}}}}var Vd={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 AS(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=Vd[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,Y()-2);if(W(a)<=l)return a;let c=r+n.map(u=>Vd[u].color(Vd[u].glyph)).join(m.dim(" "))+i;return ue(c,l)}}}var Yd=["\u25D0","\u25D1","\u25D2","\u25D3"],xl=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=ze.subscribe(()=>this.repaint()),this.spinnerInterval=setInterval(()=>{this.spinnerIndex=(this.spinnerIndex+1)%Yd.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(Yd[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(ae(l)),a.length>0&&i.push(m.dim(a.join(" \xB7 "))),ue(" "+i.join(" "),n)}formatJobLine(t){let n=Math.max(4,(this.stream.columns??80)-2),r=m.brand(Yd[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(ae(a))),ue(" "+i.join(" "),n)}};function Rl(e,t){let n=m.brand("afk")+m.dim(` (${e})`),r=t?m.warning(" \u25CF plan"):"";return n+r+m.dim(" \u203A ")}async function CS(e,t,n,r){let o=null,s=[];e.session.current.waitForInitialization().then(async p=>{Je()&&(o=ca(p)),await Va(e.session.current),Je()&&(s=wk())}).catch(()=>{});let i=await hS(),a=new vl({rl:e.rl,history:i,statusLine:e.statusLine}),l,c,u,d;try{await a.armCompositor({promptFn:()=>Rl(e.stats.model,e.stats.planMode),onCancel:r,onShiftTab:()=>{let h=e.slashCtx;h.stats.planMode&&h.stats.pendingPlanExit?(h.stats.pendingPlanExit=!1,kt(h,!1,{closureSummarySkipped:!0}).catch(()=>{})):kt(h).catch(()=>{}),e.statusLine.rearm()},scrollRegion:e.statusLine}),Kn.install(SS({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+`
2131
2131
  `)}},pendingCount:()=>Kn.pendingCount()})),e.replRenderer.setCompositor(a.getCompositor()),e.slashCtx.getCompositor=()=>a.getCompositor(),c=RS();let p=AS();e.clearVerdictLedger=()=>p.reset(),u=new ga,Nb(u),Kb(u),zb(u),Gb(e.backgroundRegistry),d=new xl(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 T of s)e.replRenderer.writeLine(T);e.replRenderer.writeLine(""),s=[]}for(;g.length>0;){let T=g.shift(),A=T.status==="succeeded"?"\u2713":"\u2717",R=[];if(T.resultText){let C=T.resultText.trim().split(`
2132
2132
  `)[0]?.slice(0,80)??"";C&&R.push(C)}T.error&&R.push(T.error.message);let O=[T.stats.toolUses>0?`${T.stats.toolUses} tools`:"",T.stats.tokens>0?`${Math.round(T.stats.tokens/1e3)}k tok`:"",T.stats.durationMs>0?`${Math.round(T.stats.durationMs/1e3)}s`:""].filter(Boolean).join(" \xB7 ");O&&R.push(O),e.replRenderer.writeLine(nn({kind:T.status==="succeeded"?"checkpoint":"diagnosis",title:`${A} ${T.id} ${T.label}`,body:R})),e.replRenderer.writeLine("")}let h=c.renderIfChanged(e.stats.sessionId);if(h.length>0){for(let T of h)e.replRenderer.writeLine(T);e.replRenderer.writeLine("")}let b=p.render();b&&e.replRenderer.writeLine(b);let y,w;if(l!==void 0){let T=l;l=void 0;let A=Rl(e.stats.model,e.stats.planMode),R=Qn({buffer:T.text,promptText:A,isTTY:!!process.stdout.isTTY,attachmentSummary:Yr([...T.attachments])});e.replRenderer.writeLine(R),y=T.text.trim(),w=T.attachments}else{let T=await a.readLine({promptFn:()=>Rl(e.stats.model,e.stats.planMode),onSigint:r,onShiftTab:()=>{let A=e.slashCtx;A.stats.planMode&&A.stats.pendingPlanExit?(A.stats.pendingPlanExit=!1,kt(A,!1,{closureSummarySkipped:!0}).catch(()=>{})):kt(A).catch(()=>{}),e.statusLine.rearm()}});y=T.text.trim(),w=T.attachments}if(!y&&w.length===0)continue;let v=!1;if(y.startsWith("/")){let T=await ib(y,e.slashCtx,w);if(T.handled){if(T.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()),T.result!==null&&typeof T.result=="object"&&"kind"in T.result&&T.result.kind==="submit"){l={text:T.result.message,attachments:w??[]},e.statusLine.rearm();continue}e.statusLine.rearm();continue}v=!0}i.push(y);let x=y;if(v){let T=Uu(y);if(T){let A=T.name.replace(/^\//,"").split(":").pop()??"";if(A&&vd(A)){let R={skillName:A,rawArgs:T.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},O=e.session.current.sessionId,C=ms(O),I=Date.now();K(`[afk trace] preflight.start commandName=${A}`);let P=!1,D=await ps(R,{cwd:e.stats.cwd??process.cwd(),artifactDir:C},F=>{Je()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${A}) failed: `)+(F instanceof Error?F.message:String(F)))});P=D!==null,K(`[afk trace] preflight.end commandName=${A} durationMs=${Date.now()-I} success=${P}`),x=xd(D?.manifestBlock,y)}}}let S;if(e.firstTurnHook&&e.stats.totalTurns===0){let T=e.firstTurnHook;e.firstTurnHook=void 0,S=Promise.resolve().then(()=>T(y)).catch(A=>{e.completionWriter.fn(m.warning("\u26A0 ")+"first-turn hook failed: "+(A instanceof Error?A.message:String(A)))})}await xS({text:x,attachments:w},e.session.current,e.stats,{setInFlight(T){n.turnInFlight=T},async onTurnComplete(T,A){await t.appendTurn(T,A)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await bb(e.slashCtx),e.statusLine.rearm()},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:T=>p.push(T),setActiveCompositor:T=>{n.activeCompositor=T},scrollRegion:e.statusLine,getCompositor:()=>a.getCompositor(),setBackgroundHandler:T=>a.setBackgroundHandler(T)},e.options.thinkingUi,e.completionWriter,u,a.toRunTurnRefs(Rl(e.stats.model,e.stats.planMode))),S!==void 0&&await S}}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 qF}from"node:child_process";import{dirname as zF,isAbsolute as JF,resolve as VF}from"node:path";import{promisify as YF}from"node:util";var _S=YF(qF),XF=3e3,QF=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function ZF(){let t=(await _S("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=JF(t)?t:VF(process.cwd(),t);return zF(n)}async function IS(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await ZF()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),XF)});try{let o=Dt({execFile:_S,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=>QF.has(c.verdict)&&i.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}import{promises as eN}from"node:fs";import{dirname as tN,join as nN}from"node:path";import{randomBytes as rN}from"node:crypto";var oN=["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(`
2133
- `),PS=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Xd=30,sN=1024,iN=8e3,aN="haiku";async function lN(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=pN(n,sN),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??iN),i=t.signal?mN([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await pl({token:t.token,model:t.model??aN,system:oN,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=cN(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=tN(t.worktreePath);return await uN(l,c)}function cN(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(PS.test(t)&&t.length<=Xd)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>Xd)break;o=i}return PS.test(o)?o:null}async function uN(e,t){if(!await dN(nN(t,e)))return e;let n=rN(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Xd-5)}-${n}`}async function dN(e){try{return await eN.access(e),!0}catch{return!1}}function pN(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 mN(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 $S(e){let t,n,r=await lN(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??eh)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),MS(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),MS(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function MS(e){try{process.chdir(e)}catch{}}N();import{spawn as OS}from"child_process";import{existsSync as bN,mkdirSync as wN,readFileSync as DS,unlinkSync as kN,writeFileSync as SN}from"fs";import{get as vN}from"https";import{join as LS}from"path";import{readFileSync as fN}from"fs";import{dirname as gN,join as hN}from"path";import{fileURLToPath as yN}from"url";function Jt(){try{return"3.36.2"}catch{}try{let e=gN(yN(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(fN(hN(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}G();var TN=64*1024,EN=1440*60*1e3,xN="update-check.json",RN="pending-update.json";function FS(){return LS(Hs(),xN)}function Qd(){return LS(Hs(),RN)}function NS(){let e=Hs();bN(e)||wN(e,{recursive:!0})}function AN(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 CN(){try{let e=DS(FS(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function _N(){try{NS();let e=`
2133
+ `),PS=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Xd=30,sN=1024,iN=8e3,aN="haiku";async function lN(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=pN(n,sN),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??iN),i=t.signal?mN([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await pl({token:t.token,model:t.model??aN,system:oN,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=cN(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=tN(t.worktreePath);return await uN(l,c)}function cN(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(PS.test(t)&&t.length<=Xd)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>Xd)break;o=i}return PS.test(o)?o:null}async function uN(e,t){if(!await dN(nN(t,e)))return e;let n=rN(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Xd-5)}-${n}`}async function dN(e){try{return await eN.access(e),!0}catch{return!1}}function pN(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 mN(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 $S(e){let t,n,r=await lN(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??eh)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),MS(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),MS(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function MS(e){try{process.chdir(e)}catch{}}N();import{spawn as OS}from"child_process";import{existsSync as bN,mkdirSync as wN,readFileSync as DS,unlinkSync as kN,writeFileSync as SN}from"fs";import{get as vN}from"https";import{join as LS}from"path";import{readFileSync as fN}from"fs";import{dirname as gN,join as hN}from"path";import{fileURLToPath as yN}from"url";function Jt(){try{return"3.36.3"}catch{}try{let e=gN(yN(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(fN(hN(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}G();var TN=64*1024,EN=1440*60*1e3,xN="update-check.json",RN="pending-update.json";function FS(){return LS(Hs(),xN)}function Qd(){return LS(Hs(),RN)}function NS(){let e=Hs();bN(e)||wN(e,{recursive:!0})}function AN(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 CN(){try{let e=DS(FS(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function _N(){try{NS();let e=`
2134
2134
  const https = require('https');
2135
2135
  const fs = require('fs');
2136
2136
  const url = 'https://registry.npmjs.org/agent-afk/latest';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-afk",
3
- "version": "3.36.2",
3
+ "version": "3.36.3",
4
4
  "description": "CLI tool for interacting with AI agents via multiple interfaces",
5
5
  "main": "dist/index.mjs",
6
6
  "type": "module",