agent-afk 2.17.0 → 2.18.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
@@ -1952,7 +1952,7 @@ _ended: ${new Date().toISOString()}_
1952
1952
  `),k=y[0]??"";d.push(a+" "+g+" "+be(k,u)+" "+a);for(let h of y.slice(1))d.push(a+" "+" ".repeat(c)+" "+be(h,u)+" "+a)}d.push(i);let m=p.dim(pe(t.affordance,n));return d.push(a+" "+be(m,n)+" "+a),d.push(s),d.join(`
1953
1953
  `)}function rC(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 oC(e,t){let n=[];e&&n.push({type:"text",text:e});for(let r of t)n.push({type:"image",source:{type:"base64",media_type:r.mediaType,data:r.bytes.toString("base64")}});return n}async function jf(e,t,n,r,o="summary",s,a){let i=vf(e.text,e.attachments);r.setInFlight(!0);let l="",c=!1,u,d=!1,m=!1,f=!1,g,y=!1,k=[],h=new Map,S=e.text.startsWith("/")?e.text.split(/[\s:]/)[0]?.slice(1):void 0,w=new Ut({out:Ln(),thinkingMode:o,...S?{activeSkillName:S}:{},onCancel:()=>{t.interrupt().catch(T=>{_e()&&console.error(" "+p.error("session.interrupt() failed:"),T)})},...a?{onBackground:()=>{y=!0}}:{}}),A=async()=>{if(!m){m=!0;try{await w.dispose()}catch{}}};try{console.log(),await w.arm();let T=w.getCompositor();if(s&&T){let v=T;s.fn=C=>v.commitAbove(C)}r.setActiveCompositor?.(T),r.rearmStatus?.();let _=e.attachments.length===0?e.text:oC(e.text,e.attachments),E=t.sendMessageStream(_);if(await kn(w.sink,async()=>{for await(let v of E){if(y&&a){let C=S??e.text.slice(0,40),I=a.register(C),R=Jo(I,a);Xo(E,l,i,I,a,R,n,r.onTurnComplete,t.abortSignal),await A(),console.log(p.dim(` \u2192 backgrounded as ${I.id}: ${I.label}`)),r.setInFlight(!1),r.rearmStatus?.();return}if(v.type==="chunk"&&v.chunk.type==="content"?(l+=v.chunk.content,c=!0):v.type==="message"&&!c&&(l=v.message.content),v.type==="chunk"&&v.chunk.type==="tool_use_detail"){let C=v.chunk,I={toolName:C.toolName,toolUseId:C.toolUseId,input:C.toolInput};h.set(C.toolUseId,I),k.push(I)}else if(v.type==="chunk"&&v.chunk.type==="tool_result"){let C=v.chunk,I=h.get(C.toolUseId);I&&(I.result=C.content,I.isError=C.isError,h.delete(C.toolUseId))}if(v.type==="paused"){await A(),console.log(Wl({reason:v.reason,...v.resetsAt!==void 0?{resetsAt:v.resetsAt}:{},...v.accountId!==void 0?{accountId:v.accountId}:{}}));continue}if(v.type==="resumed"){let C=v.hotSwapped&&v.accountId?`\u25B6 Resumed on ${v.accountId}`:"\u25B6 Resumed";console.log(p.success(C));continue}if(v.type==="error"){await A(),yn(hn(v.error)),d=!0;continue}w.process(v),v.type==="done"&&(f=!0,g=v.metadata)}}),!m){let v=w.getCompositor();if(v)try{let{text:C,queued:I}=v.getBuffer();I&&C.length>0&&(u=C)}catch{}}if(await A(),f){Ko(n,i,l,g,k),r.onTurnComplete&&await r.onTurnComplete(i,l).catch(()=>{}),c&&console.log(`
1954
1954
  `);let v=Nf(l);if(v&&(console.log(Uf(v)),console.log(),r.onTerminalState))try{r.onTerminalState(v)}catch{}if(sC(g,n),r.onAfterTurn){let C=r.onAfterTurn();C instanceof Promise&&await C.catch(()=>{})}}}catch(T){await A(),d||yn(hn(T))}finally{await A(),s&&(s.fn=T=>console.log(T)),r.setActiveCompositor?.(null),r.setInFlight(!1),r.rearmStatus?.()}return u}function sC(e,t){if(!e)return;let n=[];e.durationMs&&n.push(me(e.durationMs)),e.totalCostUsd!==void 0&&n.push(Ie(e.totalCostUsd));let r=Number(e.usage?.input_tokens??0),o=Number(e.usage?.output_tokens??0);r+o>0&&n.push(G(r+o)+" tok"),n.length>0&&console.log(p.dim(" \u25E6 "+n.join(" \xB7 ")));let s=ea(t);if(s>.5){let a=s>.8?p.error:p.warning;console.log(a(` context ${Math.round(s*100)}% used of ${G(tt(t.model))}`))}console.log()}function Bf(e={}){let t=e.load??qo,n=e.onResize??(a=>vt.subscribe(a)),r="",o,s=n(()=>{r=""});return{renderIfChanged(a){let i=a??"unbound",l=t(i),c=Mp(l);return i===o&&c===r?[]:(o=i,r=c,c===""?[]:Yo(l))},invalidate(){r=""},dispose(){try{s()}catch{}}}}var Da={done:{glyph:"\u2713",color:p.success,label:"done"},blocked:{glyph:"\u2298",color:p.error,label:"blocked"},asking:{glyph:"?",color:p.warning,label:"asking"},interrupted:{glyph:"\u23F8",color:p.info,label:"interrupted"}};function Wf(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=p.dim(" ledger "),o=p.dim(" \xB7 "),s=n.map(u=>{let d=Da[u];return d.color(`${d.glyph} ${d.label}`)}),a=p.dim(` (${n.length} turn${n.length===1?"":"s"})`),i=r+s.join(o)+a,l=Math.max(20,Q()-2);if(B(i)<=l)return i;let c=r+n.map(u=>Da[u].color(Da[u].glyph)).join(p.dim(" "))+a;return pe(c,l)}}}var Hf=["\u25D0","\u25D1","\u25D2","\u25D3"],Cs=class{stream;manager;throttleMs;started=!1;lastRepaint=0;spinnerIndex=0;spinnerInterval=null;resizeUnsub=null;updateHandler=null;rowCount=0;onRowCountChange;constructor(t,n={}){this.manager=t,this.stream=n.stream??process.stdout,this.throttleMs=n.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.resizeUnsub=vt.subscribe(()=>this.repaint()),this.spinnerInterval=setInterval(()=>{this.spinnerIndex=(this.spinnerIndex+1)%Hf.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.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(),n=t.length;if(n!==this.rowCount&&(this.rowCount>0&&this.clearRows(),this.rowCount=n,this.onRowCountChange?.(n)),n===0)return;let o=(this.stream.rows??24)-n;this.stream.write("\x1B[s");for(let s=0;s<t.length;s++){let a=t[s],i=o+s;this.stream.write(`\x1B[${i};1H`),this.stream.write("\x1B[2K"),this.stream.write(this.formatTaskLine(a))}this.stream.write("\x1B[u")}clearRows(){if(!this.stream.isTTY)return;let n=(this.stream.rows??24)-this.rowCount;this.stream.write("\x1B[s");for(let r=0;r<this.rowCount;r++)this.stream.write(`\x1B[${n+r};1H`),this.stream.write("\x1B[2K");this.stream.write("\x1B[u")}formatTaskLine(t){let n=Math.max(4,(this.stream.columns??80)-2),r=p.brand(Hf[this.spinnerIndex]),o=p.dim(t.id),s=p.bold(t.label),a=[r,o,s];t.progressDescription&&a.push(p.dim(t.progressDescription));let i=[];t.stats.toolUses>0&&i.push(`${t.stats.toolUses} tool${t.stats.toolUses===1?"":"s"}`),t.stats.tokens>0&&i.push(`${G(t.stats.tokens)} tok`);let l=Date.now()-t.startedAt;return i.push(me(l)),i.length>0&&a.push(p.dim(i.join(" \xB7 "))),pe(" "+a.join(" "),n)}};function iC(e,t){let n=p.brand("afk")+p.dim(` (${e})`),r=t?p.warning(" \u25CF plan"):"";return n+r+p.dim(" \u203A ")}async function Kf(e,t,n,r){let o=null,s=[];e.session.waitForInitialization().then(async g=>{_e()&&(o=zo(g)),await Bm(e.session),_e()&&(s=jm())}).catch(()=>{});let a=await Ff(),i,l=Bf(),c=Wf(),u=new Vo;Hp(u),zp(u),Yp(u);let d=new Cs(u);d.setRowCountChangeHandler(g=>{e.statusLine.setExtraRows(g)}),d.start();let m=50,f=[];u.on("complete",g=>{f.length>=m&&f.shift(),f.push(g)});try{for(;;){if(o&&(e.replRenderer.writeLine(o),e.replRenderer.writeLine(""),o=null),s.length>0){for(let w of s)e.replRenderer.writeLine(w);e.replRenderer.writeLine(""),s=[]}for(;f.length>0;){let w=f.shift(),A=w.status==="succeeded"?"\u2713":"\u2717",T=[];if(w.resultText){let E=w.resultText.trim().split(`
1955
- `)[0]?.slice(0,80)??"";E&&T.push(E)}w.error&&T.push(w.error.message);let _=[w.stats.toolUses>0?`${w.stats.toolUses} tools`:"",w.stats.tokens>0?`${Math.round(w.stats.tokens/1e3)}k tok`:"",w.stats.durationMs>0?`${Math.round(w.stats.durationMs/1e3)}s`:""].filter(Boolean).join(" \xB7 ");_&&T.push(_),e.replRenderer.writeLine(Tt({kind:w.status==="succeeded"?"checkpoint":"diagnosis",title:`${A} ${w.id} ${w.label}`,body:T})),e.replRenderer.writeLine("")}let g=l.renderIfChanged(e.stats.sessionId);if(g.length>0){for(let w of g)e.replRenderer.writeLine(w);e.replRenderer.writeLine("")}let y=c.render();y&&e.replRenderer.writeLine(y);let k,h,S=await $f({rl:e.rl,promptFn:()=>iC(e.stats.model,e.stats.planMode),onSigint:r,initialBuffer:i,statusLine:e.statusLine,compositor:n.activeCompositor??void 0,history:a,onShiftTab:()=>{let w=e.slashCtx;w.stats.planMode&&w.stats.pendingPlanExit?(w.stats.pendingPlanExit=!1,ft(w,!1,{closureSummarySkipped:!0}).catch(()=>{})):ft(w).catch(()=>{}),e.statusLine.rearm()}});if(i=void 0,k=S.text.trim(),h=S.attachments,!(!k&&h.length===0)){if(k.startsWith("/")){let w=await yp(k,e.slashCtx);if(w.handled){if(w.result==="exit"){e.rl.close();return}if((k==="/clear"||k.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(p.dim(` transcript: ${t.path()}`)),c.reset()),w.result!==null&&typeof w.result=="object"&&"kind"in w.result&&w.result.kind==="submit"){i=w.result.message,e.statusLine.rearm();continue}e.statusLine.rearm();continue}}a.push(k),i=await jf({text:k,attachments:h},e.session,e.stats,{setInFlight(w){n.turnInFlight=w},async onTurnComplete(w,A){await t.appendTurn(w,A)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await Tp(e.slashCtx),e.statusLine.rearm()},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:w=>c.push(w),setActiveCompositor:w=>{n.activeCompositor=w,e.replRenderer.setCompositor(w)}},e.options.thinkingUi,e.completionWriter,u)}}}finally{d.stop(),l.dispose()}}import{spawn as Gf}from"child_process";import{existsSync as uC,mkdirSync as pC,readFileSync as zf,unlinkSync as mC,writeFileSync as fC}from"fs";import{get as gC}from"https";import{join as qf}from"path";import{readFileSync as aC}from"fs";import{dirname as lC,join as cC}from"path";import{fileURLToPath as dC}from"url";function un(){try{return"2.17.0"}catch{}try{let e=lC(dC(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(aC(cC(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}var hC=64*1024,yC=1440*60*1e3,bC="update-check.json",kC="pending-update.json";function Yf(){return qf($r(),bC)}function La(){return qf($r(),kC)}function Vf(){let e=$r();uC(e)||pC(e,{recursive:!0})}function wC(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 a=n[s]??0,i=r[s]??0;if(i>a)return!0;if(i<a)return!1}return!1}function SC(){try{let e=zf(Yf(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function vC(){try{Vf();let e=`
1955
+ `)[0]?.slice(0,80)??"";E&&T.push(E)}w.error&&T.push(w.error.message);let _=[w.stats.toolUses>0?`${w.stats.toolUses} tools`:"",w.stats.tokens>0?`${Math.round(w.stats.tokens/1e3)}k tok`:"",w.stats.durationMs>0?`${Math.round(w.stats.durationMs/1e3)}s`:""].filter(Boolean).join(" \xB7 ");_&&T.push(_),e.replRenderer.writeLine(Tt({kind:w.status==="succeeded"?"checkpoint":"diagnosis",title:`${A} ${w.id} ${w.label}`,body:T})),e.replRenderer.writeLine("")}let g=l.renderIfChanged(e.stats.sessionId);if(g.length>0){for(let w of g)e.replRenderer.writeLine(w);e.replRenderer.writeLine("")}let y=c.render();y&&e.replRenderer.writeLine(y);let k,h,S=await $f({rl:e.rl,promptFn:()=>iC(e.stats.model,e.stats.planMode),onSigint:r,initialBuffer:i,statusLine:e.statusLine,compositor:n.activeCompositor??void 0,history:a,onShiftTab:()=>{let w=e.slashCtx;w.stats.planMode&&w.stats.pendingPlanExit?(w.stats.pendingPlanExit=!1,ft(w,!1,{closureSummarySkipped:!0}).catch(()=>{})):ft(w).catch(()=>{}),e.statusLine.rearm()}});if(i=void 0,k=S.text.trim(),h=S.attachments,!(!k&&h.length===0)){if(k.startsWith("/")){let w=await yp(k,e.slashCtx);if(w.handled){if(w.result==="exit"){e.rl.close();return}if((k==="/clear"||k.startsWith("/clear "))&&(await t.rotateOnClear(),e.replRenderer.writeLine(p.dim(` transcript: ${t.path()}`)),c.reset()),w.result!==null&&typeof w.result=="object"&&"kind"in w.result&&w.result.kind==="submit"){i=w.result.message,e.statusLine.rearm();continue}e.statusLine.rearm();continue}}a.push(k),i=await jf({text:k,attachments:h},e.session,e.stats,{setInFlight(w){n.turnInFlight=w},async onTurnComplete(w,A){await t.appendTurn(w,A)},async onAfterTurn(){await e.contextSampler.onTurn(e.stats.totalTurns),await Tp(e.slashCtx),e.statusLine.rearm()},rearmStatus:()=>e.statusLine.rearm(),onTerminalState:w=>c.push(w),setActiveCompositor:w=>{n.activeCompositor=w,e.replRenderer.setCompositor(w)}},e.options.thinkingUi,e.completionWriter,u)}}}finally{d.stop(),l.dispose()}}import{spawn as Gf}from"child_process";import{existsSync as uC,mkdirSync as pC,readFileSync as zf,unlinkSync as mC,writeFileSync as fC}from"fs";import{get as gC}from"https";import{join as qf}from"path";import{readFileSync as aC}from"fs";import{dirname as lC,join as cC}from"path";import{fileURLToPath as dC}from"url";function un(){try{return"2.18.0"}catch{}try{let e=lC(dC(import.meta.url));for(let t of["../../package.json","../package.json"])try{let n=JSON.parse(aC(cC(e,t),"utf-8"));if(typeof n.version=="string")return n.version}catch{}}catch{}return"0.0.0-unknown"}var hC=64*1024,yC=1440*60*1e3,bC="update-check.json",kC="pending-update.json";function Yf(){return qf($r(),bC)}function La(){return qf($r(),kC)}function Vf(){let e=$r();uC(e)||pC(e,{recursive:!0})}function wC(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 a=n[s]??0,i=r[s]??0;if(i>a)return!0;if(i<a)return!1}return!1}function SC(){try{let e=zf(Yf(),"utf-8"),t=JSON.parse(e);if(typeof t.latestVersion=="string"&&typeof t.checkedAt=="number")return t}catch{}return null}function vC(){try{Vf();let e=`
1956
1956
  const https = require('https');
1957
1957
  const fs = require('fs');
1958
1958
  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": "2.17.0",
3
+ "version": "2.18.0",
4
4
  "description": "CLI tool for interacting with AI agents via multiple interfaces",
5
5
  "main": "dist/index.mjs",
6
6
  "type": "module",