agent-afk 3.26.2 → 3.27.0

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
@@ -2123,7 +2123,7 @@ _ended: ${new Date().toISOString()}_
2123
2123
  `)}function aF(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 tS(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 nS(e,t,n,r,o="summary",s,i,a){let l=Kb(e.text,e.attachments);r.setInFlight(!0);let c="",d=!1,u=!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 Vr({out:Xr(s),thinkingMode:o,...k?{activeSkillName:k}:{},onCancel:()=>{t.interrupt().catch(R=>{ze()&&console.error(" "+m.error("session.interrupt() failed:"),R)})},...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{}}},A=async()=>{await S.arm();let R=S.getCompositor();if(s&&R){let D=R;s.fn=_=>D.commitAbove(_)}r.setActiveCompositor?.(R),r.rearmStatus?.()};try{T?T.commitAbove(""):console.log(),await A(),i&&r.setBackgroundHandler&&r.setBackgroundHandler(()=>{h=!0});let R=e.attachments.length===0?e.text:tS(e.text,e.attachments),D=t.sendMessageStream(R);if(await on((P,I)=>{S.process(P,I)},async()=>{for await(let P of D){if(h&&i){let I=k??e.text.slice(0,40),O=i.register(I),F=aa(O,i);la(D,c,l,O,i,F,n,r.onTurnComplete,t.abortSignal),await v(),(s??{fn:console.log}).fn(m.dim(` \u2192 backgrounded as ${O.id}: ${O.label}`)),r.setInFlight(!1),r.rearmStatus?.();return}if(P.type==="chunk"&&P.chunk.type==="content"?(c+=P.chunk.content,d=!0):P.type==="message"&&!d&&(c=P.message.content),P.type==="chunk"&&P.chunk.type==="tool_use_detail"){let I=P.chunk,O={toolName:I.toolName,toolUseId:I.toolUseId,input:I.toolInput};y.set(I.toolUseId,O),b.push(O)}else if(P.type==="chunk"&&P.chunk.type==="tool_result"){let I=P.chunk,O=y.get(I.toolUseId);O&&(O.result=I.content,O.isError=I.isError,y.delete(I.toolUseId))}if(P.type==="paused"){await v(),(s??{fn:console.log}).fn(fm({reason:P.reason,...P.resetsAt!==void 0?{resetsAt:P.resetsAt}:{},...P.accountId!==void 0?{accountId:P.accountId}:{},...P.autoResume!==void 0?{autoResume:P.autoResume}:{}}));continue}if(P.type==="resumed"){let I=P.hotSwapped&&P.accountId?`\u25B6 Resumed on ${P.accountId}`:"\u25B6 Resumed";c="",d=!1,b.length=0,y.clear(),f=!1,g=void 0,u=!1,h=!1,S=x(),p=!1,await A(),(s??{fn:console.log}).fn(m.success(I));continue}if(P.type==="error"){await v(),hr(gr(P.error)),u=!0;continue}S.process(P),P.type==="done"&&(f=!0,g=P.metadata)}}),await v(),f){Gn(n,l,c,g,b),r.onTurnComplete&&await r.onTurnComplete(l,c).catch(()=>{});let P=O=>{s?s.fn(O):console.log(O)};(d||b.length>0)&&P(`
2124
2124
  `);let I=Zw(c);if(I&&(P(eS(I)),P(""),r.onTerminalState))try{r.onTerminalState(I)}catch{}if(lF(g,n,P),r.onAfterTurn){let O=r.onAfterTurn();O instanceof Promise&&await O.catch(()=>{})}}}catch(R){await v(),u||hr(gr(R))}finally{await v(),s&&(s.fn=R=>console.log(R)),r.setActiveCompositor?.(null),r.setBackgroundHandler?.(null),r.setInFlight(!1),r.rearmStatus?.()}}function lF(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(ie(e.durationMs)),e.totalCostUsd!==void 0&&r.push(Ue(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=vd(t),a=et(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 rS(e={}){let t=e.load??oa,n=e.onResize??(i=>Ge.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===""?[]:sa(l))},invalidate(){r=""},dispose(){try{s()}catch{}}}}var Ru={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 oS(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(d=>{let u=Ru[d];return u.color(`${u.glyph} ${u.label}`)}),i=m.dim(` (${n.length} turn${n.length===1?"":"s"})`),a=r+s.join(o)+i,l=Math.max(20,ne()-2);if(z(a)<=l)return a;let c=r+n.map(d=>Ru[d].color(Ru[d].glyph)).join(m.dim(" "))+i;return ce(c,l)}}}var Cu=["\u25D0","\u25D1","\u25D2","\u25D3"],dl=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=Ge.subscribe(()=>this.repaint()),this.spinnerInterval=setInterval(()=>{this.spinnerIndex=(this.spinnerIndex+1)%Cu.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(Cu[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(Cu[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 ul(e,t){let n=m.brand("afk")+m.dim(` (${e})`),r=t?m.warning(" \u25CF plan"):"";return n+r+m.dim(" \u203A ")}async function sS(e,t,n,r){let o=null,s=[];e.session.current.waitForInitialization().then(async p=>{ze()&&(o=ea(p)),await La(e.session.current),ze()&&(s=Xk())}).catch(()=>{});let i=await Jw(),a=new cl({rl:e.rl,history:i,statusLine:e.statusLine}),l,c,d,u;try{await a.armCompositor({promptFn:()=>ul(e.stats.model,e.stats.planMode),onCancel:r,onShiftTab:()=>{let h=e.slashCtx;h.stats.planMode&&h.stats.pendingPlanExit?(h.stats.pendingPlanExit=!1,bt(h,!1,{closureSummarySkipped:!0}).catch(()=>{})):bt(h).catch(()=>{}),e.statusLine.rearm()},scrollRegion:e.statusLine}),e.replRenderer.setCompositor(a.getCompositor()),e.slashCtx.getCompositor=()=>a.getCompositor(),c=rS();let p=oS();e.clearVerdictLedger=()=>p.reset(),d=new ia,bb(d),Eb(d),Rb(d),xb(e.backgroundRegistry),u=new dl(d,e.backgroundRegistry),u.setRowCountChangeHandler(h=>{e.statusLine.setExtraRows(h)}),u.start();let f=50,g=[];for(d.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(),A=v.status==="succeeded"?"\u2713":"\u2717",R=[];if(v.resultText){let _=v.resultText.trim().split(`
2125
2125
  `)[0]?.slice(0,80)??"";_&&R.push(_)}v.error&&R.push(v.error.message);let D=[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 ");D&&R.push(D),e.replRenderer.writeLine(en({kind:v.status==="succeeded"?"checkpoint":"diagnosis",title:`${A} ${v.id} ${v.label}`,body:R})),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 A=ul(e.stats.model,e.stats.planMode),R=qn({buffer:v.text,promptText:A,isTTY:!!process.stdout.isTTY,attachmentSummary:Gr([...v.attachments])});e.replRenderer.writeLine(R),y=v.text.trim(),k=v.attachments}else{let v=await a.readLine({promptFn:()=>ul(e.stats.model,e.stats.planMode),onSigint:r,onShiftTab:()=>{let A=e.slashCtx;A.stats.planMode&&A.stats.pendingPlanExit?(A.stats.pendingPlanExit=!1,bt(A,!1,{closureSummarySkipped:!0}).catch(()=>{})):bt(A).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 Uy(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=Sd(y);if(v){let A=v.name.replace(/^\//,"").split(":").pop()??"";if(A&&ru(A)){let R={skillName:A,rawArgs:v.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},D=e.session.current.sessionId,_=as(D),P=Date.now();K(`[afk trace] preflight.start commandName=${A}`);let I=!1,O=await is(R,{cwd:e.stats.cwd??process.cwd(),artifactDir:_},F=>{ze()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${A}) failed: `)+(F instanceof Error?F.message:String(F)))});I=O!==null,K(`[afk trace] preflight.end commandName=${A} durationMs=${Date.now()-P} success=${I}`),x=iu(O?.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(A=>{e.completionWriter.fn(m.warning("\u26A0 ")+"first-turn hook failed: "+(A instanceof Error?A.message:String(A)))})}await nS({text:x,attachments:k},e.session.current,e.stats,{setInFlight(v){n.turnInFlight=v},async onTurnComplete(v,A){await t.appendTurn(v,A)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await Qy(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,d,a.toRunTurnRefs(ul(e.stats.model,e.stats.planMode))),S!==void 0&&await S}}finally{if(d!==void 0)for(let p of d.running())d.cancel(p.id);u?.stop(),c?.dispose(),await a.dispose()}}import{execFile as cF}from"node:child_process";import{dirname as dF,isAbsolute as uF,resolve as pF}from"node:path";import{promisify as mF}from"node:util";var iS=mF(cF),fF=3e3,gF=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function hF(){let t=(await iS("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=uF(t)?t:pF(process.cwd(),t);return dF(n)}async function aS(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await hF()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),fF)});try{let o=Mt({execFile:iS,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=>gF.has(c.verdict)&&i.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}import{promises as yF}from"node:fs";import{dirname as bF,join as kF}from"node:path";import{randomBytes as wF}from"node:crypto";var SF=["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(`
2126
- `),lS=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,_u=30,vF=1024,TF=8e3,EF="haiku";async function xF(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=_F(n,vF),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??TF),i=t.signal?IF([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await Za({token:t.token,model:t.model??EF,system:SF,user:r,maxTokens:32,signal:i})}catch(u){let p=u instanceof Error?u.message:String(u);return t.onSkip?.("slug-generator-error",p.slice(0,200)),null}finally{clearTimeout(s)}let l=AF(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=bF(t.worktreePath);return await RF(l,c)}function AF(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(lS.test(t)&&t.length<=_u)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>_u)break;o=i}return lS.test(o)?o:null}async function RF(e,t){if(!await CF(kF(t,e)))return e;let n=wF(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,_u-5)}-${n}`}async function CF(e){try{return await yF.access(e),!0}catch{return!1}}function _F(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 IF(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 cS(e){let t,n,r=await xF(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??Og)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(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),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}N();import{spawn as dS}from"child_process";import{existsSync as DF,mkdirSync as LF,readFileSync as uS,unlinkSync as FF,writeFileSync as NF}from"fs";import{get as jF}from"https";import{join as pS}from"path";import{readFileSync as PF}from"fs";import{dirname as MF,join as $F}from"path";import{fileURLToPath as OF}from"url";function zt(){try{return"3.26.2"}catch{}try{let e=MF(OF(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(PF($F(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}H();var UF=64*1024,BF=1440*60*1e3,WF="update-check.json",HF="pending-update.json";function mS(){return pS(Ds(),WF)}function Iu(){return pS(Ds(),HF)}function fS(){let e=Ds();DF(e)||LF(e,{recursive:!0})}function KF(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 GF(){try{let e=uS(mS(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function zF(){try{fS();let e=`
2126
+ `),lS=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,_u=30,vF=1024,TF=8e3,EF="haiku";async function xF(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=_F(n,vF),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??TF),i=t.signal?IF([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await Za({token:t.token,model:t.model??EF,system:SF,user:r,maxTokens:32,signal:i})}catch(u){let p=u instanceof Error?u.message:String(u);return t.onSkip?.("slug-generator-error",p.slice(0,200)),null}finally{clearTimeout(s)}let l=AF(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=bF(t.worktreePath);return await RF(l,c)}function AF(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(lS.test(t)&&t.length<=_u)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>_u)break;o=i}return lS.test(o)?o:null}async function RF(e,t){if(!await CF(kF(t,e)))return e;let n=wF(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,_u-5)}-${n}`}async function CF(e){try{return await yF.access(e),!0}catch{return!1}}function _F(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 IF(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 cS(e){let t,n,r=await xF(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??Og)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(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),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}N();import{spawn as dS}from"child_process";import{existsSync as DF,mkdirSync as LF,readFileSync as uS,unlinkSync as FF,writeFileSync as NF}from"fs";import{get as jF}from"https";import{join as pS}from"path";import{readFileSync as PF}from"fs";import{dirname as MF,join as $F}from"path";import{fileURLToPath as OF}from"url";function zt(){try{return"3.27.0"}catch{}try{let e=MF(OF(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(PF($F(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}H();var UF=64*1024,BF=1440*60*1e3,WF="update-check.json",HF="pending-update.json";function mS(){return pS(Ds(),WF)}function Iu(){return pS(Ds(),HF)}function fS(){let e=Ds();DF(e)||LF(e,{recursive:!0})}function KF(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 GF(){try{let e=uS(mS(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function zF(){try{fS();let e=`
2127
2127
  const https = require('https');
2128
2128
  const fs = require('fs');
2129
2129
  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.26.2",
3
+ "version": "3.27.0",
4
4
  "description": "CLI tool for interacting with AI agents via multiple interfaces",
5
5
  "main": "dist/index.mjs",
6
6
  "type": "module",