agent-afk 5.145.4 → 5.146.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/agent/providers/xai/headers.d.ts +10 -1
- package/dist/cli.mjs +554 -554
- package/dist/config/env.d.ts +4 -0
- package/dist/index.mjs +214 -214
- package/dist/telegram.mjs +293 -293
- package/dist/utils/kill-process-group.d.ts +1 -0
- package/dist/web-ui-assets/app.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function killProcessGroup(pid: number, signal?: NodeJS.Signals): void;
|
|
@@ -60,6 +60,6 @@ ${this.parser.parse(t)}</blockquote>
|
|
|
60
60
|
${t}</tr>
|
|
61
61
|
`}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
|
|
62
62
|
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${S(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let r=this.parser.parseInline(n),s=Je(t);if(s===null)return r;t=s;let i='<a href="'+t+'"';return e&&(i+=' title="'+S(e)+'"'),i+=">"+r+"</a>",i}image({href:t,title:e,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let s=Je(t);if(s===null)return S(n);t=s;let i=`<img src="${t}" alt="${S(n)}"`;return e&&(i+=` title="${S(e)}"`),i+=">",i}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:S(t.text)}},ke=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},v=class le{options;renderer;textRenderer;constructor(e){this.options=e||I,this.options.renderer=this.options.renderer||new V,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ke}static parse(e,n){return new le(n).parse(e)}static parseInline(e,n){return new le(n).parseInline(e)}parse(e){this.renderer.parser=this;let n="";for(let r=0;r<e.length;r++){let s=e[r];if(this.options.extensions?.renderers?.[s.type]){let o=s,c=this.options.extensions.renderers[o.type].call({parser:this},o);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(o.type)){n+=c||"";continue}}let i=s;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let o='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return n}parseInline(e,n=this.renderer){this.renderer.parser=this;let r="";for(let s=0;s<e.length;s++){let i=e[s];if(this.options.extensions?.renderers?.[i.type]){let c=this.options.extensions.renderers[i.type].call({parser:this},i);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){r+=c||"";continue}}let o=i;switch(o.type){case"escape":{r+=n.text(o);break}case"html":{r+=n.html(o);break}case"link":{r+=n.link(o);break}case"image":{r+=n.image(o);break}case"checkbox":{r+=n.checkbox(o);break}case"strong":{r+=n.strong(o);break}case"em":{r+=n.em(o);break}case"codespan":{r+=n.codespan(o);break}case"br":{r+=n.br(o);break}case"del":{r+=n.del(o);break}case"text":{r+=n.text(o);break}default:{let c='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return r}},O=class{options;block;constructor(t){this.options=t||I}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(){return this.block?y.lex:y.lexInline}provideParser(){return this.block?v.parse:v.parseInline}},Ln=class{defaults=ce();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=v;Renderer=V;TextRenderer=ke;Lexer=y;Tokenizer=X;Hooks=O;constructor(...t){this.use(...t)}walkTokens(t,e){let n=[];for(let r of t)switch(n=n.concat(e.call(this,r)),r.type){case"table":{let s=r;for(let i of s.header)n=n.concat(this.walkTokens(i.tokens,e));for(let i of s.rows)for(let o of i)n=n.concat(this.walkTokens(o.tokens,e));break}case"list":{let s=r;n=n.concat(this.walkTokens(s.items,e));break}default:{let s=r;this.defaults.extensions?.childTokens?.[s.type]?this.defaults.extensions.childTokens[s.type].forEach(i=>{let o=s[i].flat(1/0);n=n.concat(this.walkTokens(o,e))}):s.tokens&&(n=n.concat(this.walkTokens(s.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let i=e.renderers[s.name];i?e.renderers[s.name]=function(...o){let c=s.renderer.apply(this,o);return c===!1&&(c=i.apply(this,o)),c}:e.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[s.level];i?i.unshift(s.tokenizer):e[s.level]=[s.tokenizer],s.start&&(s.level==="block"?e.startBlock?e.startBlock.push(s.start):e.startBlock=[s.start]:s.level==="inline"&&(e.startInline?e.startInline.push(s.start):e.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(e.childTokens[s.name]=s.childTokens)}),r.extensions=e),n.renderer){let s=this.defaults.renderer||new V(this.defaults);for(let i in n.renderer){if(!(i in s))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let o=i,c=n.renderer[o],a=s[o];s[o]=(...p)=>{let l=c.apply(s,p);return l===!1&&(l=a.apply(s,p)),l||""}}r.renderer=s}if(n.tokenizer){let s=this.defaults.tokenizer||new X(this.defaults);for(let i in n.tokenizer){if(!(i in s))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let o=i,c=n.tokenizer[o],a=s[o];s[o]=(...p)=>{let l=c.apply(s,p);return l===!1&&(l=a.apply(s,p)),l}}r.tokenizer=s}if(n.hooks){let s=this.defaults.hooks||new O;for(let i in n.hooks){if(!(i in s))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let o=i,c=n.hooks[o],a=s[o];O.passThroughHooks.has(i)?s[o]=p=>{if(this.defaults.async&&O.passThroughHooksRespectAsync.has(i))return(async()=>{let u=await c.call(s,p);return a.call(s,u)})();let l=c.call(s,p);return a.call(s,l)}:s[o]=(...p)=>{if(this.defaults.async)return(async()=>{let u=await c.apply(s,p);return u===!1&&(u=await a.apply(s,p)),u})();let l=c.apply(s,p);return l===!1&&(l=a.apply(s,p)),l}}r.hooks=s}if(n.walkTokens){let s=this.defaults.walkTokens,i=n.walkTokens;r.walkTokens=function(o){let c=[];return c.push(i.call(this,o)),s&&(c=c.concat(s.call(this,o))),c}}this.defaults={...this.defaults,...r}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return y.lex(t,e??this.defaults)}parser(t,e){return v.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let r={...n},s={...this.defaults,...r},i=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&r.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=t),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(e):e,c=await(s.hooks?await s.hooks.provideLexer():t?y.lex:y.lexInline)(o,s),a=s.hooks?await s.hooks.processAllTokens(c):c;s.walkTokens&&await Promise.all(this.walkTokens(a,s.walkTokens));let p=await(s.hooks?await s.hooks.provideParser():t?v.parse:v.parseInline)(a,s);return s.hooks?await s.hooks.postprocess(p):p})().catch(i);try{s.hooks&&(e=s.hooks.preprocess(e));let o=(s.hooks?s.hooks.provideLexer():t?y.lex:y.lexInline)(e,s);s.hooks&&(o=s.hooks.processAllTokens(o)),s.walkTokens&&this.walkTokens(o,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():t?v.parse:v.parseInline)(o,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return i(o)}}}onError(t,e){return n=>{if(n.message+=`
|
|
63
|
-
Please report this to https://github.com/markedjs/marked.`,t){let r="<p>An error occurred:</p><pre>"+S(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(n);throw n}}},$=new Ln;function m(t,e){return $.parse(t,e)}m.options=m.setOptions=function(t){return $.setOptions(t),m.defaults=$.defaults,tt(m.defaults),m};m.getDefaults=ce;m.defaults=I;m.use=function(...t){return $.use(...t),m.defaults=$.defaults,tt(m.defaults),m};m.walkTokens=function(t,e){return $.walkTokens(t,e)};m.parseInline=$.parseInline;m.Parser=v;m.parser=v.parse;m.Renderer=V;m.TextRenderer=ke;m.Lexer=y;m.lexer=y.lex;m.Tokenizer=X;m.Hooks=O;m.parse=m;var xs=m.options,bs=m.setOptions,ws=m.use,ys=m.walkTokens,vs=m.parseInline;var Ts=v.parse,Ss=y.lex;var $n=["http:","https:","mailto:"];function In(t){try{let e=new URL(t);return $n.includes(e.protocol)?e.href:void 0}catch{return}}function g(t,e){let n=document.createElement(t);return e&&(n.className=e),n}function T(t,e){if(e)for(let n of e)switch(n.type){case"strong":{let r=g("strong");T(r,n.tokens),t.appendChild(r);break}case"em":{let r=g("em");T(r,n.tokens),t.appendChild(r);break}case"del":{let r=g("s");T(r,n.tokens),t.appendChild(r);break}case"codespan":{let r=g("code","md-code-inline");r.textContent=n.text,t.appendChild(r);break}case"link":{let r=n,s=In(r.href);if(s===void 0){let o=g("span");T(o,r.tokens),t.appendChild(o);break}let i=g("a","md-link");i.href=s,i.target="_blank",i.rel="noopener noreferrer",T(i,r.tokens),t.appendChild(i);break}case"image":{let r=g("span","md-image");r.textContent=`[image: ${n.text||"untitled"}]`,t.appendChild(r);break}case"br":t.appendChild(g("br"));break;default:{let r=n.text??"",s=n.tokens;s&&s.length>0&&n.type==="text"?T(t,s):r&&t.appendChild(document.createTextNode(r));break}}}function Pn(t){let e=t.ordered?g("ol","md-list"):g("ul","md-list");t.ordered&&typeof t.start=="number"&&t.start>1&&(e.start=t.start);for(let n of t.items){let r=g("li");if(n.task){let s=g("input","md-task");s.type="checkbox",s.checked=!!n.checked,s.disabled=!0,r.appendChild(s)}xe(r,n.tokens),e.appendChild(r)}return e}function Mn(t){let e=g("pre","md-pre"),n=g("code");return t.lang&&(n.className=`md-lang-${t.lang.split(/\s+/)[0]??""}`),n.textContent=t.text,e.appendChild(n),e}function _n(t){let e=g("table","md-table"),n=g("thead"),r=g("tr");for(let i of t.header){let o=g("th");T(o,i.tokens),r.appendChild(o)}n.appendChild(r),e.appendChild(n);let s=g("tbody");for(let i of t.rows){let o=g("tr");for(let c of i){let a=g("td");T(a,c.tokens),o.appendChild(a)}s.appendChild(o)}return e.appendChild(s),e}function xe(t,e){for(let n of e)switch(n.type){case"heading":{let r=Math.min(Math.max(n.depth,1),6),s=g(`h${r}`,"md-heading");T(s,n.tokens),t.appendChild(s);break}case"paragraph":{let r=g("p","md-p");T(r,n.tokens),t.appendChild(r);break}case"code":t.appendChild(Mn(n));break;case"list":t.appendChild(Pn(n));break;case"blockquote":{let r=g("blockquote","md-quote");xe(r,n.tokens),t.appendChild(r);break}case"table":t.appendChild(_n(n));break;case"hr":t.appendChild(g("hr","md-hr"));break;case"space":break;case"html":{let r=g("p","md-p");r.textContent=n.text,t.appendChild(r);break}default:{let r=n.tokens;if(r&&r.length>0){let i=g("p","md-p");T(i,r),t.appendChild(i);break}let s=n.text??"";if(s.trim()){let i=g("p","md-p");i.textContent=s,t.appendChild(i)}break}}}function dt(t,e="md"){let n=g("div",e);try{xe(n,new y().lex(t))}catch{n.textContent=t}return n}var ut=2e3;function d(t,e,n){let r=document.createElement(t);return e&&(r.className=e),n!==void 0&&(r.textContent=n),r}function zn(t){if(!t)return;let e=t.
|
|
63
|
+
Please report this to https://github.com/markedjs/marked.`,t){let r="<p>An error occurred:</p><pre>"+S(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(n);throw n}}},$=new Ln;function m(t,e){return $.parse(t,e)}m.options=m.setOptions=function(t){return $.setOptions(t),m.defaults=$.defaults,tt(m.defaults),m};m.getDefaults=ce;m.defaults=I;m.use=function(...t){return $.use(...t),m.defaults=$.defaults,tt(m.defaults),m};m.walkTokens=function(t,e){return $.walkTokens(t,e)};m.parseInline=$.parseInline;m.Parser=v;m.parser=v.parse;m.Renderer=V;m.TextRenderer=ke;m.Lexer=y;m.lexer=y.lex;m.Tokenizer=X;m.Hooks=O;m.parse=m;var xs=m.options,bs=m.setOptions,ws=m.use,ys=m.walkTokens,vs=m.parseInline;var Ts=v.parse,Ss=y.lex;var $n=["http:","https:","mailto:"];function In(t){try{let e=new URL(t);return $n.includes(e.protocol)?e.href:void 0}catch{return}}function g(t,e){let n=document.createElement(t);return e&&(n.className=e),n}function T(t,e){if(e)for(let n of e)switch(n.type){case"strong":{let r=g("strong");T(r,n.tokens),t.appendChild(r);break}case"em":{let r=g("em");T(r,n.tokens),t.appendChild(r);break}case"del":{let r=g("s");T(r,n.tokens),t.appendChild(r);break}case"codespan":{let r=g("code","md-code-inline");r.textContent=n.text,t.appendChild(r);break}case"link":{let r=n,s=In(r.href);if(s===void 0){let o=g("span");T(o,r.tokens),t.appendChild(o);break}let i=g("a","md-link");i.href=s,i.target="_blank",i.rel="noopener noreferrer",T(i,r.tokens),t.appendChild(i);break}case"image":{let r=g("span","md-image");r.textContent=`[image: ${n.text||"untitled"}]`,t.appendChild(r);break}case"br":t.appendChild(g("br"));break;default:{let r=n.text??"",s=n.tokens;s&&s.length>0&&n.type==="text"?T(t,s):r&&t.appendChild(document.createTextNode(r));break}}}function Pn(t){let e=t.ordered?g("ol","md-list"):g("ul","md-list");t.ordered&&typeof t.start=="number"&&t.start>1&&(e.start=t.start);for(let n of t.items){let r=g("li");if(n.task){let s=g("input","md-task");s.type="checkbox",s.checked=!!n.checked,s.disabled=!0,r.appendChild(s)}xe(r,n.tokens),e.appendChild(r)}return e}function Mn(t){let e=g("pre","md-pre"),n=g("code");return t.lang&&(n.className=`md-lang-${t.lang.split(/\s+/)[0]??""}`),n.textContent=t.text,e.appendChild(n),e}function _n(t){let e=g("table","md-table"),n=g("thead"),r=g("tr");for(let i of t.header){let o=g("th");T(o,i.tokens),r.appendChild(o)}n.appendChild(r),e.appendChild(n);let s=g("tbody");for(let i of t.rows){let o=g("tr");for(let c of i){let a=g("td");T(a,c.tokens),o.appendChild(a)}s.appendChild(o)}return e.appendChild(s),e}function xe(t,e){for(let n of e)switch(n.type){case"heading":{let r=Math.min(Math.max(n.depth,1),6),s=g(`h${r}`,"md-heading");T(s,n.tokens),t.appendChild(s);break}case"paragraph":{let r=g("p","md-p");T(r,n.tokens),t.appendChild(r);break}case"code":t.appendChild(Mn(n));break;case"list":t.appendChild(Pn(n));break;case"blockquote":{let r=g("blockquote","md-quote");xe(r,n.tokens),t.appendChild(r);break}case"table":t.appendChild(_n(n));break;case"hr":t.appendChild(g("hr","md-hr"));break;case"space":break;case"html":{let r=g("p","md-p");r.textContent=n.text,t.appendChild(r);break}default:{let r=n.tokens;if(r&&r.length>0){let i=g("p","md-p");T(i,r),t.appendChild(i);break}let s=n.text??"";if(s.trim()){let i=g("p","md-p");i.textContent=s,t.appendChild(i)}break}}}function dt(t,e="md"){let n=g("div",e);try{xe(n,new y().lex(t))}catch{n.textContent=t}return n}var ut=2e3;function d(t,e,n){let r=document.createElement(t);return e&&(r.className=e),n!==void 0&&(r.textContent=n),r}function zn(t){if(!t)return;let e=t.replace(/[/\\]+$/,"").split(/[/\\]/).pop()??"";return e&&e!=="."?e:void 0}function Hn(t){return(t.title??"").replace(/^\s*\[[^\]]{0,80}\]\s*/,"").trim()||t.title||t.id.slice(0,8)}function we(t,e,n,r){t.textContent="";for(let s of e){let i=d("button","session-row");s.id===n&&i.classList.add("is-active");let o=d("span","session-title",Hn(s));i.appendChild(o);let c=d("span","session-meta"),a=zn(s.cwd);a&&c.appendChild(d("span","session-cwd",a));let p=d("span",s.mode==="live"?"badge badge-live":"badge badge-readonly");p.textContent=s.mode==="live"?"live":"read-only",c.appendChild(p),s.alive&&c.appendChild(d("span","badge badge-alive","running")),s.updatedAt&&c.appendChild(d("span","session-time",On(s.updatedAt))),i.appendChild(c),i.addEventListener("click",()=>r(s.id)),t.appendChild(i)}e.length===0&&t.appendChild(d("div","empty","No sessions found."))}function ye(t,e){t.textContent="";for(let n of e)t.appendChild(qn(n))}function qn(t){switch(t.kind){case"user":{let e=d("div","msg msg-user");return e.appendChild(d("div","msg-role","you")),e.appendChild(d("div","msg-body",t.text)),e}case"assistant":{let e=d("div","msg msg-assistant");e.appendChild(d("div","msg-role","agent"));let n=d("div","msg-body md-body");return n.appendChild(dt(t.text)),e.appendChild(n),e}case"thinking":{let e=d("details","msg msg-thinking");return e.appendChild(d("summary","msg-role","thinking")),e.appendChild(d("div","msg-body",t.text)),e}case"error":{let e=d("div","msg msg-error");return e.appendChild(d("div","msg-role","error")),e.appendChild(d("div","msg-body",t.message)),e}case"notice":return d("div","notice",t.text);case"tool":return Bn(t)}}function Bn(t){let e=d("details",`tool tool-${t.status}`),n=d("summary","tool-summary");n.appendChild(d("span",`tool-dot tool-dot-${t.status}`,"")),n.appendChild(d("span","tool-name",t.name)),t.inputPreview&&n.appendChild(d("span","tool-target",Dn(t.name,t.inputPreview))),e.appendChild(n);let r=d("div","tool-body");if(t.inputPreview&&(r.appendChild(d("div","tool-label","input")),r.appendChild(d("pre","tool-pre",Q(t.inputPreview)))),t.outputUnavailable===!0)r.appendChild(d("div","tool-unavailable","Result not available after refresh \u2014 successful tool output is not persisted to the session ledger."));else if(t.output!==void 0&&t.output!==""){r.appendChild(d("div","tool-label","output"));let s=Q(t.output);if(s.length>ut){let i=d("pre","tool-pre",s.slice(0,ut));r.appendChild(i);let o=d("button","tool-more",`Show full output (${s.length.toLocaleString()} chars)`);o.addEventListener("click",()=>{i.textContent=s,o.remove()}),r.appendChild(o)}else r.appendChild(d("pre","tool-pre",s))}return t.diff!==void 0&&(r.appendChild(d("div","tool-label","diff")),r.appendChild(Nn(Q(String(t.diff))))),e.appendChild(r),e}function be(t,e){let n=t.replace(/\s+/g," ").trim();return n.length<=e?n:`${n.slice(0,e-1)}\u2026`}function Nn(t){let e=d("pre","tool-pre tool-diff");for(let n of t.split(`
|
|
64
64
|
`)){let r=document.createElement("span");r.textContent=n,r.className=n.startsWith("+++")||n.startsWith("---")?"diff-ctx":n.startsWith("+")?"diff-add":n.startsWith("-")?"diff-del":n.startsWith("@@")?"diff-hunk":"diff-ctx",e.appendChild(r)}return e}function Dn(t,e){try{let n=JSON.parse(e);if((t==="bash"||t==="shell")&&typeof n.command=="string")return be(n.command,80);if((t==="edit_file"||t==="write_file"||t==="read_file")&&typeof n.file_path=="string")return n.file_path;if(t==="agent"&&typeof n.prompt=="string")return be(n.prompt,60);if((t==="grep"||t==="glob")&&typeof n.pattern=="string")return n.pattern}catch{}return be(e,90)}function On(t){let e=Date.parse(t);if(Number.isNaN(e))return"";let n=Math.max(0,(Date.now()-e)/1e3);return n<60?"just now":n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:`${Math.floor(n/86400)}d ago`}function ve(t,e,n){t.textContent="",t.classList.toggle("has-pending",e.length>0);for(let r of e){let s=r.request??{},i=d("div","approval-card"),o=d("div","approval-head");o.appendChild(d("span","approval-badge",s.origin==="agent"?"question":"approval")),s.serverName&&o.appendChild(d("span","approval-source",s.serverName)),i.appendChild(o);let c=s.title??s.message??"The agent is waiting for a response.";i.appendChild(d("div","approval-title",c)),s.description&&s.description!==c&&i.appendChild(d("div","approval-desc",s.description));let a=d("div","approval-actions");if(s.type==="choice"&&Array.isArray(s.choices)&&s.choices.length>0)for(let l of s.choices){let u=d("button","approval-btn",l);u.addEventListener("click",()=>n(r.id,{action:"accept",content:{value:l}})),a.appendChild(u)}else if(s.type==="text"||s.type==="number"){let l=document.createElement("input");l.className="approval-input",l.type=s.type==="number"?"number":"text",s.questionDefault!==void 0&&(l.value=String(s.questionDefault));let u=()=>n(r.id,{action:"accept",content:{value:s.type==="number"?Number(l.value):l.value}});l.addEventListener("keydown",b=>{b.key==="Enter"&&u()}),i.appendChild(l);let h=d("button","approval-btn approval-primary","Submit");h.addEventListener("click",u),a.appendChild(h)}else{let l=d("button","approval-btn approval-primary","Approve");l.addEventListener("click",()=>n(r.id,{action:"accept",content:{value:!0}})),a.appendChild(l)}let p=d("button","approval-btn approval-danger","Deny");p.addEventListener("click",()=>n(r.id,{action:"decline"})),a.appendChild(p),i.appendChild(a),t.appendChild(i)}}var ht=0;function R(t){return ht+=1,`${t}_${ht}`}function P(t){return typeof t=="string"?t:void 0}function ft(t){let e=t;if(typeof e.kind=="string")switch(e.kind){case"user":return{kind:"user",id:R("u"),text:P(e.text)??""};case"assistant":return{kind:"assistant",id:R("a"),text:P(e.text)??""};case"tool":{let n=P(e.input)??"";return n.trim()==="\u2026"?void 0:{kind:"tool",id:R("t"),name:P(e.toolName)??"tool",inputPreview:n,status:"ok",outputUnavailable:!0}}case"tool_error":{let n=P(e.content)??"",r=n.split(`
|
|
65
65
|
`,1)[0]??"";return{kind:"tool",id:R("t"),name:P(e.toolName)??"error",inputPreview:r,status:"error",output:n}}case"error":return{kind:"error",id:R("e"),message:P(e.message)??"error"};case"done":{let n=e.costUsd,r=e.durationMs,s=[];return typeof n=="number"&&s.push(`$${n.toFixed(4)}`),typeof r=="number"&&s.push(`${(r/1e3).toFixed(1)}s`),{kind:"notice",id:R("n"),text:s.length?`turn complete \xB7 ${s.join(" \xB7 ")}`:"turn complete"}}case"paused":return{kind:"notice",id:R("n"),text:"paused \u2014 usage limit"};case"resumed":return{kind:"notice",id:R("n"),text:"resumed"};default:return}}function gt(t,e){let n=e;if(n.kind!=="done")return t;let r=n.costUsd,s=n.durationMs;return{costUsd:t.costUsd+(typeof r=="number"?r:0),durationMs:t.durationMs+(typeof s=="number"?s:0),turns:t.turns+1}}function Te(t,e){return Number.isInteger(e)&&e>=0&&e<t.length}function mt(t,e){if(!Te(t,e)||e===0)return t.slice();let n=t.slice(),r=n[e-1],s=n[e];return r===void 0||s===void 0?t.slice():(n[e-1]=s,n[e]=r,n)}function kt(t,e){if(!Te(t,e)||e===t.length-1)return t.slice();let n=t.slice(),r=n[e+1],s=n[e];return r===void 0||s===void 0?t.slice():(n[e+1]=s,n[e]=r,n)}function xt(t,e){if(!Te(t,e))return t.slice();let n=t.slice();return n.splice(e,1),n}var ee=class{constructor(e){this.deps=e}deps;queue=[];flushing=!1;entries(){return[...this.queue]}clear(){this.queue=[],this.render()}wire(){let e=()=>{let n=this.deps.input.value.trim();n&&(this.queue=[...this.queue,n],this.deps.input.value="",Z(this.deps.input),this.render(),this.flush())};this.deps.send.addEventListener("click",e),this.deps.input.addEventListener("keydown",n=>{n.key==="Enter"&&(n.metaKey||n.ctrlKey)&&e()})}render(){let e=this.deps.container;e.textContent="",this.queue.forEach((n,r)=>{let s=document.createElement("div");s.className="queue-row";let i=document.createElement("span");i.className="queue-text",i.textContent=n,s.appendChild(i);for(let[o,c]of[["\u2191",()=>{this.queue=mt(this.queue,r)}],["\u2193",()=>{this.queue=kt(this.queue,r)}],["\u2715",()=>{this.queue=xt(this.queue,r)}]]){let a=document.createElement("button");a.className="queue-btn",a.textContent=o,a.addEventListener("click",()=>{c(),this.render()}),s.appendChild(a)}e.appendChild(s)})}async flush(){if(this.flushing||!this.deps.isLive()||this.deps.isTurnActive())return;let e=this.queue[0];if(e!==void 0){this.flushing=!0;try{await this.deps.submit(e),this.queue=this.queue.slice(1),this.render(),this.deps.onAccepted()}catch(n){this.deps.onError(n instanceof Error?n.message:"send failed")}finally{this.flushing=!1}}}};function bt(t,e=80){return t.scrollHeight-t.scrollTop-t.clientHeight<=e}var vt=ze(),H=[],E,te=[],A={costUsd:0,durationMs:0,turns:0},Se,M=[],Ce,q=!1,F=!1;function k(t){let e=document.getElementById(t);if(!e)throw new Error(`missing #${t}`);return e}var Ee;function Re(){return Ee||(Ee=new ee({container:k("queue"),input:k("prompt"),send:k("send"),submit:async t=>{if(E===void 0)throw new Error("no active session");await _(`/api/sessions/${encodeURIComponent(E)}/prompt`,{method:"POST",body:JSON.stringify({text:t})})},isLive:Le,isTurnActive:()=>q,onAccepted:()=>{q=!0,ne()},onError:t=>{k("status").textContent=t}})),Ee}async function _(t,e){let n=await fetch(t,{...e,headers:{authorization:`Bearer ${vt}`,"content-type":"application/json",...e?.headers??{}}});if(n.status===401)throw new Error("Session credential missing \u2014 reopen the URL printed by `afk web`. A new tab does not inherit the credential from the first one.");if(!n.ok)throw new Error(`${n.status} ${await n.text()}`);return await n.json()}function jn(t){t.scrollTop=t.scrollHeight}function Fn(){return H.find(t=>t.id===E)}function Le(){return Fn()?.mode==="live"}async function Ae(){if(H=(await _("/api/sessions")).sessions,E===void 0&&H.length>0){let e=H[0];e&&se(e.id)}we(k("sessions"),H,E,se)}function se(t){E=t,te=[],Re().clear(),A={costUsd:0,durationMs:0,turns:0},Se?.stop(),q=!1,F=!1,we(k("sessions"),H,E,se),ye(k("transcript"),te),wt(),ne(),Se=new U(t,vt,{onEvent:e=>{let r=e.record;if(!r)return;(r.kind==="done"||r.kind==="error")&&(q=!1,ne(),Re().flush());let s=ft(r);if(A=gt(A,r),s){te.push(s);let i=bt(k("transcript"));ye(k("transcript"),te),i&&jn(k("transcript"))}Tt()},onStatus:e=>{let n=k("status");n.textContent=e==="ended"?"session ended":e,n.className=`status status-${e}`,e==="ended"&&(q=!1),F=e==="reconnecting"||e==="connecting",wt(),ne()}}),Se.start()}function Tt(){let t=[`${A.turns} turns`];A.costUsd>0&&t.push(`$${A.costUsd.toFixed(4)}`),A.durationMs>0&&t.push(`${(A.durationMs/1e3).toFixed(1)}s`),k("meter").textContent=t.join(" \xB7 ")}function wt(){let t=Le(),e=k("prompt"),n=k("send"),r=!t||F;e.disabled=r,n.disabled=r,e.placeholder=t?F?"Reconnecting\u2026":"Message the agent\u2026 (queues while it works)":"Read-only \u2014 this session runs in another process",k("composer").classList.toggle("is-readonly",!t),k("composer").classList.toggle("is-reconnecting",t&&F)}function ne(){k("stop").hidden=!(q&&Le())}async function Un(){let t=k("new-session");t.disabled=!0,t.textContent="starting\u2026";try{let{session:e}=await _("/api/sessions",{method:"POST",body:JSON.stringify({})});await Ae(),se(e.id)}catch(e){k("status").textContent=e instanceof Error?e.message:"could not start session"}finally{t.disabled=!1,t.textContent="+ New"}}async function yt(){let t=await _("/api/pending"),e=t.pending.length!==M.length||t.pending.some((n,r)=>n.id!==M[r]?.id);M=t.pending,e&&ve(k("approvals"),M,St)}function St(t,e){M=M.filter(n=>n.id!==t),ve(k("approvals"),M,St),_("/api/approve",{method:"POST",body:JSON.stringify({requestId:t,response:e})}).catch(n=>{k("status").textContent=n instanceof Error?n.message:"approval failed"})}async function Zn(){if(E===void 0)return;let t=k("stop");t.disabled=!0,t.textContent="Stopping\u2026";try{await _(`/api/sessions/${encodeURIComponent(E)}/interrupt`,{method:"POST",body:JSON.stringify({})})}catch(e){throw t.disabled=!1,t.textContent="Stop",e}}async function Kn(){Qe({input:k("prompt"),loadCommands:async()=>(await _("/api/commands")).commands}),Re().wire(),k("new-session").addEventListener("click",()=>{Un()}),k("stop").addEventListener("click",()=>{Zn().catch(t=>{k("status").textContent=t instanceof Error?t.message:"stop failed"})}),Tt(),await Ae(),setInterval(()=>{Ae().catch(()=>{})},1e4),Ce=setInterval(()=>{yt().catch(()=>{})},1e3),yt().catch(()=>{}),window.addEventListener("beforeunload",()=>{Ce&&clearInterval(Ce)})}Kn().catch(t=>{k("status").textContent=t instanceof Error?t.message:String(t)});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-afk",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.146.0",
|
|
4
4
|
"description": "Open-source coding-agent harness you can actually change — own the loop (prompts, gates, routing, skills, terminal states), use any model, run long tasks while you're away.",
|
|
5
5
|
"main": "dist/index.mjs",
|
|
6
6
|
"types": "dist/index.d.ts",
|