agent-afk 3.29.0 → 3.29.1

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 +1 -1
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -2124,7 +2124,7 @@ _ended: ${new Date().toISOString()}_
2124
2124
  `)}function _F(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 fS(e,t,n){let r=[];n&&n.trim().length>0&&r.push({type:"text",text:n}),e&&r.push({type:"text",text:e});for(let o of t)r.push({type:"image",source:{type:"base64",media_type:o.mediaType,data:o.bytes.toString("base64")}});return r}async function gS(e,t,n,r,o="summary",s,i,a){let l=rk(e.text,e.attachments);r.setInFlight(!0);let c="",u=!1,d=!1,p=!1,f=!1,g,h=!1,b=[],y=new Map,k=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,T=r.getCompositor?r.getCompositor():null,x=()=>new to({out:ro(s),thinkingMode:o,...k?{activeSkillName:k}:{},onCancel:()=>{t.interrupt().catch(A=>{Ve()&&console.error(" "+m.error("session.interrupt() failed:"),A)})},...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}:{},...T?{compositor:T}:{}}),S=x(),v=async()=>{if(!p){p=!0;try{await S.dispose()}catch{}}},R=async()=>{await S.arm();let A=S.getCompositor();if(s&&A){let O=A;s.fn=C=>O.commitAbove(C)}r.setActiveCompositor?.(A),r.rearmStatus?.()};try{T?T.commitAbove(""):console.log(),await R(),i&&r.setBackgroundHandler&&r.setBackgroundHandler(()=>{h=!0});let A=e.attachments.length===0?e.text:fS(e.text,e.attachments),O=t.sendMessageStream(A);if(await sn((I,P)=>{S.process(I,P)},async()=>{for await(let I of O){if(h&&i){let P=k??e.text.slice(0,40),D=i.register(P),F=ha(D,i);ya(O,c,l,D,i,F,n,r.onTurnComplete,t.abortSignal),await v(),(s??{fn:console.log}).fn(m.dim(` \u2192 backgrounded as ${D.id}: ${D.label}`)),r.setInFlight(!1),r.rearmStatus?.();return}if(I.type==="chunk"&&I.chunk.type==="content"?(c+=I.chunk.content,u=!0):I.type==="message"&&!u&&(c=I.message.content),I.type==="chunk"&&I.chunk.type==="tool_use_detail"){let P=I.chunk,D={toolName:P.toolName,toolUseId:P.toolUseId,input:P.toolInput};y.set(P.toolUseId,D),b.push(D)}else if(I.type==="chunk"&&I.chunk.type==="tool_result"){let P=I.chunk,D=y.get(P.toolUseId);D&&(D.result=P.content,D.isError=P.isError,y.delete(P.toolUseId))}if(I.type==="paused"){await v(),(s??{fn:console.log}).fn(xm({reason:I.reason,...I.resetsAt!==void 0?{resetsAt:I.resetsAt}:{},...I.accountId!==void 0?{accountId:I.accountId}:{},...I.autoResume!==void 0?{autoResume:I.autoResume}:{}}));continue}if(I.type==="resumed"){let P=I.hotSwapped&&I.accountId?`\u25B6 Resumed on ${I.accountId}`:"\u25B6 Resumed";c="",u=!1,b.length=0,y.clear(),f=!1,g=void 0,d=!1,h=!1,S=x(),p=!1,await R(),(s??{fn:console.log}).fn(m.success(P));continue}if(I.type==="error"){await v(),Sr(wr(I.error)),d=!0;continue}S.process(I),I.type==="done"&&(f=!0,g=I.metadata)}}),await v(),f){Jn(n,l,c,g,b),r.onTurnComplete&&await r.onTurnComplete(l,c).catch(()=>{});let I=D=>{s?s.fn(D):console.log(D)};(u||b.length>0)&&I(`
2125
2125
  `);let P=pS(c);if(P&&(I(mS(P)),I(""),r.onTerminalState))try{r.onTerminalState(P)}catch{}if(IF(g,n,I),r.onAfterTurn){let D=r.onAfterTurn();D instanceof Promise&&await D.catch(()=>{})}}}catch(A){await v(),d||Sr(wr(A))}finally{await v(),s&&(s.fn=A=>console.log(A)),r.setActiveCompositor?.(null),r.setBackgroundHandler?.(null),r.setInFlight(!1),r.rearmStatus?.()}}function IF(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(ie(e.durationMs)),e.totalCostUsd!==void 0&&r.push(Ke(e.totalCostUsd));let o=Number(e.usage?.input_tokens??0),s=Number(e.usage?.output_tokens??0);o+s>0&&r.push(Z(o+s)+" tok"),r.length>0&&n(m.dim(" \u25E6 "+r.join(" \xB7 ")));let i=Ou(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 ~${Z(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 ${Z(a)}`))}n("")}function hS(e={}){let t=e.load??ma,n=e.onResize??(i=>Je.subscribe(i)),r="",o,s=n(()=>{r=""});return{renderIfChanged(i){let a=i??"unbound",l=t(a),c=wb(l);return a===o&&c===r?[]:(o=a,r=c,c===""?[]:fa(l))},invalidate(){r=""},dispose(){try{s()}catch{}}}}var jd={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 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=m.dim(" ledger "),o=m.dim(" \xB7 "),s=n.map(u=>{let d=jd[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,ne()-2);if(q(a)<=l)return a;let c=r+n.map(u=>jd[u].color(jd[u].glyph)).join(m.dim(" "))+i;return ce(c,l)}}}var Ud=["\u25D0","\u25D1","\u25D2","\u25D3"],kl=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)%Ud.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(Ud[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(`${Z(t.stats.tokens)} tok`);let l=Date.now()-t.startedAt;return a.push(ie(l)),a.length>0&&i.push(m.dim(a.join(" \xB7 "))),ce(" "+i.join(" "),n)}formatJobLine(t){let n=Math.max(4,(this.stream.columns??80)-2),r=m.brand(Ud[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(ie(a))),ce(" "+i.join(" "),n)}};function wl(e,t){let n=m.brand("afk")+m.dim(` (${e})`),r=t?m.warning(" \u25CF plan"):"";return n+r+m.dim(" \u203A ")}async function bS(e,t,n,r){let o=null,s=[];e.session.current.waitForInitialization().then(async p=>{Ve()&&(o=ca(p)),await Ga(e.session.current),Ve()&&(s=uw())}).catch(()=>{});let i=await aS(),a=new bl({rl:e.rl,history:i,statusLine:e.statusLine}),l,c,u,d;try{await a.armCompositor({promptFn:()=>wl(e.stats.model,e.stats.planMode),onCancel:r,onShiftTab:()=>{let h=e.slashCtx;h.stats.planMode&&h.stats.pendingPlanExit?(h.stats.pendingPlanExit=!1,wt(h,!1,{closureSummarySkipped:!0}).catch(()=>{})):wt(h).catch(()=>{}),e.statusLine.rearm()},scrollRegion:e.statusLine}),e.replRenderer.setCompositor(a.getCompositor()),e.slashCtx.getCompositor=()=>a.getCompositor(),c=hS();let p=yS();e.clearVerdictLedger=()=>p.reset(),u=new ga,Pb(u),Fb(u),Ub(u),Nb(e.backgroundRegistry),d=new kl(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 v of s)e.replRenderer.writeLine(v);e.replRenderer.writeLine(""),s=[]}for(;g.length>0;){let v=g.shift(),R=v.status==="succeeded"?"\u2713":"\u2717",A=[];if(v.resultText){let C=v.resultText.trim().split(`
2126
2126
  `)[0]?.slice(0,80)??"";C&&A.push(C)}v.error&&A.push(v.error.message);let O=[v.stats.toolUses>0?`${v.stats.toolUses} tools`:"",v.stats.tokens>0?`${Math.round(v.stats.tokens/1e3)}k tok`:"",v.stats.durationMs>0?`${Math.round(v.stats.durationMs/1e3)}s`:""].filter(Boolean).join(" \xB7 ");O&&A.push(O),e.replRenderer.writeLine(tn({kind:v.status==="succeeded"?"checkpoint":"diagnosis",title:`${R} ${v.id} ${v.label}`,body:A})),e.replRenderer.writeLine("")}let h=c.renderIfChanged(e.stats.sessionId);if(h.length>0){for(let v of h)e.replRenderer.writeLine(v);e.replRenderer.writeLine("")}let b=p.render();b&&e.replRenderer.writeLine(b);let y,k;if(l!==void 0){let v=l;l=void 0;let R=wl(e.stats.model,e.stats.planMode),A=Xn({buffer:v.text,promptText:R,isTTY:!!process.stdout.isTTY,attachmentSummary:Xr([...v.attachments])});e.replRenderer.writeLine(A),y=v.text.trim(),k=v.attachments}else{let v=await a.readLine({promptFn:()=>wl(e.stats.model,e.stats.planMode),onSigint:r,onShiftTab:()=>{let R=e.slashCtx;R.stats.planMode&&R.stats.pendingPlanExit?(R.stats.pendingPlanExit=!1,wt(R,!1,{closureSummarySkipped:!0}).catch(()=>{})):wt(R).catch(()=>{}),e.statusLine.rearm()}});y=v.text.trim(),k=v.attachments}if(!y&&k.length===0)continue;let T=!1;if(y.startsWith("/")){let v=await Zy(y,e.slashCtx,k);if(v.handled){if(v.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()),v.result!==null&&typeof v.result=="object"&&"kind"in v.result&&v.result.kind==="submit"){l={text:v.result.message,attachments:k??[]},e.statusLine.rearm();continue}e.statusLine.rearm();continue}T=!0}i.push(y);let x=y;if(T){let v=$u(y);if(v){let R=v.name.replace(/^\//,"").split(":").pop()??"";if(R&&gd(R)){let A={skillName:R,rawArgs:v.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},O=e.session.current.sessionId,C=ms(O),I=Date.now();H(`[afk trace] preflight.start commandName=${R}`);let P=!1,D=await ps(A,{cwd:e.stats.cwd??process.cwd(),artifactDir:C},F=>{Ve()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${R}) failed: `)+(F instanceof Error?F.message:String(F)))});P=D!==null,H(`[afk trace] preflight.end commandName=${R} durationMs=${Date.now()-I} success=${P}`),x=bd(D?.manifestBlock,y)}}}let S;if(e.firstTurnHook&&e.stats.totalTurns===0){let v=e.firstTurnHook;e.firstTurnHook=void 0,S=Promise.resolve().then(()=>v(y)).catch(R=>{e.completionWriter.fn(m.warning("\u26A0 ")+"first-turn hook failed: "+(R instanceof Error?R.message:String(R)))})}await gS({text:x,attachments:k},e.session.current,e.stats,{setInFlight(v){n.turnInFlight=v},async onTurnComplete(v,R){await t.appendTurn(v,R)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await db(e.slashCtx),e.statusLine.rearm()},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:v=>p.push(v),setActiveCompositor:v=>{n.activeCompositor=v},scrollRegion:e.statusLine,getCompositor:()=>a.getCompositor(),setBackgroundHandler:v=>a.setBackgroundHandler(v)},e.options.thinkingUi,e.completionWriter,u,a.toRunTurnRefs(wl(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 PF}from"node:child_process";import{dirname as MF,isAbsolute as $F,resolve as OF}from"node:path";import{promisify as DF}from"node:util";var kS=DF(PF),LF=3e3,FF=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function NF(){let t=(await kS("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=$F(t)?t:OF(process.cwd(),t);return MF(n)}async function wS(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await NF()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),LF)});try{let o=Ot({execFile:kS,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=>FF.has(c.verdict)&&i.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}import{promises as jF}from"node:fs";import{dirname as UF,join as BF}from"node:path";import{randomBytes as WF}from"node:crypto";var HF=["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(`
2127
- `),SS=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Bd=30,KF=1024,GF=8e3,qF="haiku";async function zF(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=XF(n,KF),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??GF),i=t.signal?QF([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await ll({token:t.token,model:t.model??qF,system:HF,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=JF(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=UF(t.worktreePath);return await VF(l,c)}function JF(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(SS.test(t)&&t.length<=Bd)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>Bd)break;o=i}return SS.test(o)?o:null}async function VF(e,t){if(!await YF(BF(t,e)))return e;let n=WF(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Bd-5)}-${n}`}async function YF(e){try{return await jF.access(e),!0}catch{return!1}}function XF(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 QF(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 TS(e){let t,n,r=await zF(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??qg)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),vS(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),vS(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function vS(e){try{process.chdir(e)}catch{}}N();import{spawn as ES}from"child_process";import{existsSync as rN,mkdirSync as oN,readFileSync as xS,unlinkSync as sN,writeFileSync as iN}from"fs";import{get as aN}from"https";import{join as AS}from"path";import{readFileSync as ZF}from"fs";import{dirname as eN,join as tN}from"path";import{fileURLToPath as nN}from"url";function zt(){try{return"3.29.0"}catch{}try{let e=eN(nN(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(ZF(tN(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}K();var lN=64*1024,cN=1440*60*1e3,uN="update-check.json",dN="pending-update.json";function RS(){return AS(Bs(),uN)}function Wd(){return AS(Bs(),dN)}function CS(){let e=Bs();rN(e)||oN(e,{recursive:!0})}function pN(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 mN(){try{let e=xS(RS(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function fN(){try{CS();let e=`
2127
+ `),SS=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Bd=30,KF=1024,GF=8e3,qF="haiku";async function zF(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=XF(n,KF),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??GF),i=t.signal?QF([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await ll({token:t.token,model:t.model??qF,system:HF,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=JF(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=UF(t.worktreePath);return await VF(l,c)}function JF(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(SS.test(t)&&t.length<=Bd)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>Bd)break;o=i}return SS.test(o)?o:null}async function VF(e,t){if(!await YF(BF(t,e)))return e;let n=WF(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Bd-5)}-${n}`}async function YF(e){try{return await jF.access(e),!0}catch{return!1}}function XF(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 QF(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 TS(e){let t,n,r=await zF(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??qg)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),vS(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),vS(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function vS(e){try{process.chdir(e)}catch{}}N();import{spawn as ES}from"child_process";import{existsSync as rN,mkdirSync as oN,readFileSync as xS,unlinkSync as sN,writeFileSync as iN}from"fs";import{get as aN}from"https";import{join as AS}from"path";import{readFileSync as ZF}from"fs";import{dirname as eN,join as tN}from"path";import{fileURLToPath as nN}from"url";function zt(){try{return"3.29.1"}catch{}try{let e=eN(nN(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(ZF(tN(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}K();var lN=64*1024,cN=1440*60*1e3,uN="update-check.json",dN="pending-update.json";function RS(){return AS(Bs(),uN)}function Wd(){return AS(Bs(),dN)}function CS(){let e=Bs();rN(e)||oN(e,{recursive:!0})}function pN(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 mN(){try{let e=xS(RS(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function fN(){try{CS();let e=`
2128
2128
  const https = require('https');
2129
2129
  const fs = require('fs');
2130
2130
  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.29.0",
3
+ "version": "3.29.1",
4
4
  "description": "CLI tool for interacting with AI agents via multiple interfaces",
5
5
  "main": "dist/index.mjs",
6
6
  "type": "module",