agent-afk 3.48.0 → 3.49.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.
- package/dist/cli.mjs +1 -1
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -2196,7 +2196,7 @@ _ended: ${new Date().toISOString()}_
|
|
|
2196
2196
|
`)}function Dj(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 uT(e,t,n){let r=[];return n&&n.trim().length>0&&r.push({type:"text",text:n}),e&&r.push({type:"text",text:e}),vl(r,t),r}async function dT(e,t,n,r,o="summary",s,i,a){let l=KS(e.text,e.attachments);r.setInFlight(!0);let c="",u=!1,d=!1,p=!1,f=!1,g,h=!1,b=!1,y=[],w=new Map,k=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,E=r.getCompositor?r.getCompositor():null,v=()=>new vo({out:To(s),thinkingMode:o,...k?{activeSkillName:k}:{},onCancel:()=>{t.interrupt().catch(C=>{Ke()&&console.error(" "+m.error("session.interrupt() failed:"),C)})},...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}:{},...E?{compositor:E}:{}}),_=v(),I=async()=>{if(!p){p=!0;try{await _.dispose()}catch{}}},R=async()=>{await _.arm();let C=_.getCompositor();if(s&&C){let O=C;s.fn=$=>O.commitAbove($)}r.setActiveCompositor?.(C),r.rearmStatus?.()};try{E?E.commitAbove(""):console.log(),r.setSoftStopHandler&&r.setSoftStopHandler(()=>{b=!0}),await R(),i&&r.setBackgroundHandler&&r.setBackgroundHandler(()=>{h=!0});let C=e.attachments.length===0?e.text:uT(e.text,e.attachments),O=t.sendMessageStream(C);if(await Nr((x,A)=>{_.process(x,A)},async()=>{for await(let x of O){if(b){t.interrupt().catch(A=>{Ke()&&console.error(" "+m.error("soft-stop session.interrupt() failed:"),A)});break}if(h&&i){let A=k??e.text.slice(0,40),P=i.register(A),N=qa(P,i);za(O,c,l,P,i,N,n,r.onTurnComplete,t.abortSignal),await I(),(s??{fn:console.log}).fn(m.dim(` \u2192 backgrounded as ${P.id}: ${P.label}`)),r.setInFlight(!1),r.rearmStatus?.();return}if(x.type==="chunk"&&x.chunk.type==="content"?(c+=x.chunk.content,u=!0):x.type==="message"&&!u&&(c=x.message.content),x.type==="chunk"&&x.chunk.type==="tool_use_detail"){let A=x.chunk,P={toolName:A.toolName,toolUseId:A.toolUseId,input:A.toolInput};w.set(A.toolUseId,P),y.push(P)}else if(x.type==="chunk"&&x.chunk.type==="tool_result"){let A=x.chunk,P=w.get(A.toolUseId);P&&(P.result=A.content,P.isError=A.isError,w.delete(A.toolUseId))}if(x.type==="paused"){await I(),(s??{fn:console.log}).fn(vf({reason:x.reason,...x.resetsAt!==void 0?{resetsAt:x.resetsAt}:{},...x.accountId!==void 0?{accountId:x.accountId}:{},...x.autoResume!==void 0?{autoResume:x.autoResume}:{}}));continue}if(x.type==="resumed"){let A=x.hotSwapped&&x.accountId?`\u25B6 Resumed on ${x.accountId}`:"\u25B6 Resumed";c="",u=!1,y.length=0,w.clear(),f=!1,g=void 0,d=!1,h=!1,_=v(),p=!1,await R(),(s??{fn:console.log}).fn(m.success(A));continue}if(x.type==="error"){await I(),Dr(Or(x.error)),d=!0;continue}_.process(x),x.type==="done"&&(f=!0,g=x.metadata)}}),await I(),b){let x=s?s.fn:console.log;x(m.warning("\u23F8 Stopped \u2014 work so far kept.")+m.dim(" Use /resume or --resume to continue.")),x("")}if(f&&!b){or(n,l,c,g,y),r.onTurnComplete&&await r.onTurnComplete(l,c).catch(()=>{});let x=P=>{s?s.fn(P):console.log(P)},A=lT(c);if(A&&(x(cT(A)),x(""),r.onTerminalState))try{r.onTerminalState(A)}catch{}if(Lj(g,n,x),r.onAfterTurn){let P=r.onAfterTurn();P instanceof Promise&&await P.catch(()=>{})}}}catch(C){await I(),d||Dr(Or(C))}finally{await I(),s&&(s.fn=s.idleFn),r.setActiveCompositor?.(null),r.setBackgroundHandler?.(null),r.setSoftStopHandler?.(null),r.setInFlight(!1),r.rearmStatus?.()}}function Lj(e,t,n=console.log){if(!e)return;let r=[];e.durationMs&&r.push(se(e.durationMs)),e.totalCostUsd!==void 0&&r.push(Le(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=$d(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 pT(e={}){let t=e.load??Ha,n=e.onResize??(i=>He.subscribe(i)),r="",o,s=n(()=>{r=""});return{renderIfChanged(i){let a=i??"unbound",l=t(a),c=sS(l);return a===o&&c===r?[]:(o=a,r=c,c===""?[]:Ka(l))},invalidate(){r=""},dispose(){try{s()}catch{}}}}var Wp={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 mT(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=Wp[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=>Wp[u].color(Wp[u].glyph)).join(m.dim(" "))+i;return ue(c,l)}}}var Hp=["\u25D0","\u25D1","\u25D2","\u25D3"],Ql=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=He.subscribe(()=>this.repaint()),this.spinnerInterval=setInterval(()=>{this.spinnerIndex=(this.spinnerIndex+1)%Hp.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(Hp[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(se(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(Hp[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(se(a))),ue(" "+i.join(" "),n)}};function ec(e,t){let n=m.brand("afk")+m.dim(` (${e})`),r=t?m.warning(" \u25CF plan"):"";return n+r+m.dim(" \u203A ")}async function fT(e,t,n,r){let o=null,s=[];e.session.current.waitForInitialization().then(async p=>{Ke()&&(o=Ua(p)),await Al(e.session.current),Ke()&&(s=pv())}).catch(()=>{});let i=await tT(),a=new Zl({rl:e.rl,history:i,statusLine:e.statusLine}),l,c,u,d;try{await a.armCompositor({promptFn:()=>ec(e.stats.model,e.stats.planMode),onCancel:r,onShiftTab:()=>{let y=e.slashCtx;y.stats.planMode&&y.stats.pendingPlanExit?(y.stats.pendingPlanExit=!1,Et(y,!1,{closureSummarySkipped:!0}).catch(()=>{})):Et(y).catch(()=>{}),e.statusLine.rearm()},scrollRegion:e.statusLine,...e.preArmAnchorRow!==void 0?{anchorRow:e.preArmAnchorRow}:{}});let p=a.getCompositor();Ot.install($a({readLine:y=>a.readLine({promptFn:()=>y}).then(w=>w.text),writer:{line:(y="")=>{let w=a.getCompositor();w?w.commitAbove(y):process.stdout.write(y+`
|
|
2197
2197
|
`)}},pendingCount:()=>Ot.pendingCount(),...p?{pickFromList:y=>iT(p,y),readTextOverlay:y=>aT(p,y)}:{}})),e.replRenderer.setCompositor(a.getCompositor()),e.slashCtx.getCompositor=()=>a.getCompositor();let f=a.getCompositor();if(f){let y=w=>f.commitAbove(w);e.completionWriter.fn=y,e.completionWriter.idleFn=y}e.slashCtx.setSoftStopHandler=y=>a.setSoftStopHandler(y),e.inputSurfaceRef&&(e.inputSurfaceRef.current=a),c=pT();let g=mT();e.clearVerdictLedger=()=>g.reset(),u=new Ga,hS(u),vS(u),xS(u),TS(e.backgroundRegistry),d=new Ql(u,e.backgroundRegistry),d.setRowCountChangeHandler(y=>{e.statusLine.setExtraRows(y)}),d.start();let h=50,b=[];for(u.on("complete",y=>{b.length>=h&&b.shift(),b.push(y)});;){if(o&&(e.replRenderer.writeLine(o),e.replRenderer.writeLine(""),o=null),s.length>0){for(let R of s)e.replRenderer.writeLine(R);e.replRenderer.writeLine(""),s=[]}for(;b.length>0;){let R=b.shift(),C=R.status==="succeeded"?"\u2713":"\u2717",O=[];if(R.resultText){let x=R.resultText.trim().split(`
|
|
2198
2198
|
`)[0]?.slice(0,80)??"";x&&O.push(x)}R.error&&O.push(R.error.message);let $=[R.stats.toolUses>0?`${R.stats.toolUses} tools`:"",R.stats.tokens>0?`${Math.round(R.stats.tokens/1e3)}k tok`:"",R.stats.durationMs>0?`${Math.round(R.stats.durationMs/1e3)}s`:""].filter(Boolean).join(" \xB7 ");$&&O.push($),e.replRenderer.writeLine(pn({kind:R.status==="succeeded"?"checkpoint":"diagnosis",title:`${C} ${R.id} ${R.label}`,body:O})),e.replRenderer.writeLine("")}let y=c.renderIfChanged(e.stats.sessionId);if(y.length>0){for(let R of y)e.replRenderer.writeLine(R);e.replRenderer.writeLine("")}let w=g.render();w&&e.replRenderer.writeLine(w);let k,E;if(l!==void 0){let R=l;l=void 0;let C=ec(e.stats.model,e.stats.planMode),O=lr({buffer:R.text,promptText:C,isTTY:!!process.stdout.isTTY,attachmentSummary:yo([...R.attachments])});e.replRenderer.writeLine(O),k=R.text.trim(),E=R.attachments}else{let R=await a.readLine({promptFn:()=>ec(e.stats.model,e.stats.planMode),onSigint:r,onShiftTab:()=>{let C=e.slashCtx;C.stats.planMode&&C.stats.pendingPlanExit?(C.stats.pendingPlanExit=!1,Et(C,!1,{closureSummarySkipped:!0}).catch(()=>{})):Et(C).catch(()=>{}),e.statusLine.rearm()}});k=R.text.trim(),E=R.attachments}if(!k&&E.length===0)continue;let v=!1;if(k.startsWith("/")){let R=await Lw(k,e.slashCtx,E);if(R.handled){if(R.result==="exit"){e.rl.close();return}if((k==="/clear"||k.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(m.dim(` transcript: ${t.path()}`)),g.reset()),R.result!==null&&typeof R.result=="object"&&"kind"in R.result&&R.result.kind==="submit"){l={text:R.result.message,attachments:E??[]},e.statusLine.rearm();continue}e.statusLine.rearm();continue}v=!0}i.push(k);let _=k;if(v){let R=Od(k);if(R){let C=R.name.replace(/^\//,"").split(":").pop()??"";if(C&&bp(C)){let O={skillName:C,rawArgs:R.args,source:"plugin",capabilities:{compose:!0,subagents:!0}},$=e.session.current.sessionId,x=yr($),A=Date.now();J(`[afk trace] preflight.start commandName=${C}`);let P=!1,N=await hr(O,{cwd:e.stats.cwd??process.cwd(),artifactDir:x},K=>{Ke()&&e.replRenderer.writeLine(m.warning(`\u26A0 preflight(${C}) failed: `)+(K instanceof Error?K.message:String(K)))});P=N!==null,J(`[afk trace] preflight.end commandName=${C} durationMs=${Date.now()-A} success=${P}`),_=kp(N?.manifestBlock,k)}}}let I;if(e.firstTurnHook&&e.stats.totalTurns===0){let R=e.firstTurnHook;e.firstTurnHook=void 0,I=Promise.resolve().then(()=>R(k)).catch(C=>{e.completionWriter.fn(m.warning("\u26A0 ")+"first-turn hook failed: "+(C instanceof Error?C.message:String(C)))})}await dT({text:_,attachments:E},e.session.current,e.stats,{setInFlight(R){n.turnInFlight=R},async onTurnComplete(R,C){await t.appendTurn(R,C)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await Yw(e.slashCtx),e.statusLine.rearm()},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:R=>g.push(R),setActiveCompositor:R=>{n.activeCompositor=R},scrollRegion:e.statusLine,getCompositor:()=>a.getCompositor(),setBackgroundHandler:R=>a.setBackgroundHandler(R),setSoftStopHandler:R=>a.setSoftStopHandler(R)},e.options.thinkingUi,e.completionWriter,u,a.toRunTurnRefs(ec(e.stats.model,e.stats.planMode))),I!==void 0&&await I}}finally{if(u!==void 0)for(let f of u.running())u.cancel(f.id);d?.stop(),c?.dispose();let p=f=>console.log(f);e.completionWriter.fn=p,e.completionWriter.idleFn=p,await a.dispose(),e.inputSurfaceRef&&(e.inputSurfaceRef.current=null)}}import{execFile as Fj}from"node:child_process";import{dirname as Nj,isAbsolute as Uj,resolve as jj}from"node:path";import{promisify as Bj}from"node:util";var gT=Bj(Fj),Wj=3e3,Hj=new Set(["empty","orphaned-dir","orphaned-registration","dead-owner"]);async function Kj(){let t=(await gT("git",["rev-parse","--git-common-dir"])).stdout.trim();if(!t)throw new Error("Not in a git repository.");let n=Uj(t)?t:jj(process.cwd(),t);return Nj(n)}async function hT(e){if(e?.disabled)return{ran:!1,removedCount:0,skippedReason:"disabled"};let t;try{t=await Kj()}catch{return{ran:!1,removedCount:0,skippedReason:"not-in-repo"}}let n,r=new Promise(o=>{n=setTimeout(()=>o("timeout"),Wj)});try{let o=Ut({execFile:gT,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=>Hj.has(c.verdict)&&i.removed.includes(c.path)).length}}catch{return{ran:!1,removedCount:0,skippedReason:"error"}}finally{n&&clearTimeout(n)}}import{promises as Gj}from"node:fs";import{dirname as qj,join as zj}from"node:path";import{randomBytes as Jj}from"node:crypto";var Vj=["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(`
|
|
2199
|
-
`),yT=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Kp=30,Yj=1024,Xj=8e3,Zj="haiku";async function Qj(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=rB(n,Yj),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??Xj),i=t.signal?oB([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await Wl({token:t.token,model:t.model??Zj,system:Vj,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=eB(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=qj(t.worktreePath);return await tB(l,c)}function eB(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(yT.test(t)&&t.length<=Kp)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>Kp)break;o=i}return yT.test(o)?o:null}async function tB(e,t){if(!await nB(zj(t,e)))return e;let n=Jj(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Kp-5)}-${n}`}async function nB(e){try{return await Gj.access(e),!0}catch{return!1}}function rB(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 oB(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 wT(e){let t,n,r=await Qj(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??qy)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),bT(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),bT(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function bT(e){try{process.chdir(e)}catch{}}j();import{spawn as ST}from"child_process";import{existsSync as cB,mkdirSync as uB,readFileSync as kT,unlinkSync as dB,writeFileSync as pB}from"fs";import{get as mB}from"https";import{join as vT}from"path";import{readFileSync as sB}from"fs";import{dirname as iB,join as aB}from"path";import{fileURLToPath as lB}from"url";function rn(){try{return"3.
|
|
2199
|
+
`),yT=/^[a-z0-9]+(-[a-z0-9]+){1,3}$/,Kp=30,Yj=1024,Xj=8e3,Zj="haiku";async function Qj(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=rB(n,Yj),o=new AbortController,s=setTimeout(()=>o.abort(),t.timeoutMs??Xj),i=t.signal?oB([t.signal,o.signal]):o.signal,a;try{t.slugGenerator?a=await t.slugGenerator(r,i):a=await Wl({token:t.token,model:t.model??Zj,system:Vj,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=eB(a);if(l===null)return t.onSkip?.("invalid-slug-output",a.slice(0,60)),null;let c=qj(t.worktreePath);return await tB(l,c)}function eB(e){let t=e.trim().toLowerCase();if(t.length===0)return null;if(yT.test(t)&&t.length<=Kp)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>Kp)break;o=i}return yT.test(o)?o:null}async function tB(e,t){if(!await nB(zj(t,e)))return e;let n=Jj(2).toString("hex");return`${e.split("-").slice(0,3).join("-").slice(0,Kp-5)}-${n}`}async function nB(e){try{return await Gj.access(e),!0}catch{return!1}}function rB(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 oB(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 wT(e){let t,n,r=await Qj(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??qy)(e.handle,r,e.branchPrefix!==void 0?{branchPrefix:e.branchPrefix}:void 0);return s.ok?(e.session&&e.session.setCwd(s.newPath),bT(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),bT(e.handle.path)),{status:"failed",reason:s.reason,...s.partial!==void 0?{partial:s.partial}:{}})}function bT(e){try{process.chdir(e)}catch{}}j();import{spawn as ST}from"child_process";import{existsSync as cB,mkdirSync as uB,readFileSync as kT,unlinkSync as dB,writeFileSync as pB}from"fs";import{get as mB}from"https";import{join as vT}from"path";import{readFileSync as sB}from"fs";import{dirname as iB,join as aB}from"path";import{fileURLToPath as lB}from"url";function rn(){try{return"3.49.0"}catch{}try{let e=iB(lB(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(sB(aB(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}H();var fB=64*1024,gB=1440*60*1e3,hB="update-check.json",yB="pending-update.json";function TT(){return vT(ui(),hB)}function Gp(){return vT(ui(),yB)}function ET(){let e=ui();cB(e)||uB(e,{recursive:!0})}function bB(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 wB(){try{let e=kT(TT(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function SB(){try{ET();let e=`
|
|
2200
2200
|
const https = require('https');
|
|
2201
2201
|
const fs = require('fs');
|
|
2202
2202
|
const url = 'https://registry.npmjs.org/agent-afk/latest';
|