agent-replay 0.1.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/LICENSE +21 -0
- package/README.md +113 -0
- package/bin/agent-replay.js +20 -0
- package/build/client/_app/immutable/assets/0.D9-tUsfl.css +1 -0
- package/build/client/_app/immutable/assets/0.D9-tUsfl.css.br +0 -0
- package/build/client/_app/immutable/assets/0.D9-tUsfl.css.gz +0 -0
- package/build/client/_app/immutable/assets/2.Ch4de4ty.css +1 -0
- package/build/client/_app/immutable/assets/2.Ch4de4ty.css.br +0 -0
- package/build/client/_app/immutable/assets/2.Ch4de4ty.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.BP1aEJ1A.css +1 -0
- package/build/client/_app/immutable/assets/3.BP1aEJ1A.css.br +0 -0
- package/build/client/_app/immutable/assets/3.BP1aEJ1A.css.gz +0 -0
- package/build/client/_app/immutable/chunks/8LyLqy0e.js +1 -0
- package/build/client/_app/immutable/chunks/8LyLqy0e.js.br +3 -0
- package/build/client/_app/immutable/chunks/8LyLqy0e.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BmaMsIzI.js +3 -0
- package/build/client/_app/immutable/chunks/BmaMsIzI.js.br +0 -0
- package/build/client/_app/immutable/chunks/BmaMsIzI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BoUXsunA.js +1 -0
- package/build/client/_app/immutable/chunks/BoUXsunA.js.br +0 -0
- package/build/client/_app/immutable/chunks/BoUXsunA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CCa20sJM.js +1 -0
- package/build/client/_app/immutable/chunks/CCa20sJM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CCa20sJM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CP-o74wi.js +2 -0
- package/build/client/_app/immutable/chunks/CP-o74wi.js.br +0 -0
- package/build/client/_app/immutable/chunks/CP-o74wi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZWwZlGk.js +1 -0
- package/build/client/_app/immutable/chunks/CZWwZlGk.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZWwZlGk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6SnDtAs.js +1 -0
- package/build/client/_app/immutable/chunks/D6SnDtAs.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6SnDtAs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DApgqo7x.js +1 -0
- package/build/client/_app/immutable/chunks/DApgqo7x.js.br +0 -0
- package/build/client/_app/immutable/chunks/DApgqo7x.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DCcb0kkP.js +1 -0
- package/build/client/_app/immutable/chunks/DCcb0kkP.js.br +0 -0
- package/build/client/_app/immutable/chunks/DCcb0kkP.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CelDjTDX.js +2 -0
- package/build/client/_app/immutable/entry/app.CelDjTDX.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CelDjTDX.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Bo8U6P_2.js +1 -0
- package/build/client/_app/immutable/entry/start.Bo8U6P_2.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Bo8U6P_2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DdgnJbSm.js +1 -0
- package/build/client/_app/immutable/nodes/0.DdgnJbSm.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DdgnJbSm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DUCL1Cc_.js +1 -0
- package/build/client/_app/immutable/nodes/1.DUCL1Cc_.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DUCL1Cc_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.FNRc_Nvw.js +1 -0
- package/build/client/_app/immutable/nodes/2.FNRc_Nvw.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.FNRc_Nvw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CaEmUkA2.js +29 -0
- package/build/client/_app/immutable/nodes/3.CaEmUkA2.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CaEmUkA2.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/favicon.svg +13 -0
- package/build/client/favicon.svg.br +0 -0
- package/build/client/favicon.svg.gz +0 -0
- package/build/client/robots.txt +3 -0
- package/build/client/screenshot.png +0 -0
- package/build/env.js +94 -0
- package/build/handler.js +1494 -0
- package/build/index.js +345 -0
- package/build/server/chunks/0-CkGitm9W.js +9 -0
- package/build/server/chunks/0-CkGitm9W.js.map +1 -0
- package/build/server/chunks/1-BU8Hl3FY.js +9 -0
- package/build/server/chunks/1-BU8Hl3FY.js.map +1 -0
- package/build/server/chunks/2-DenZJmTh.js +27 -0
- package/build/server/chunks/2-DenZJmTh.js.map +1 -0
- package/build/server/chunks/3-Df2VKXDy.js +73 -0
- package/build/server/chunks/3-Df2VKXDy.js.map +1 -0
- package/build/server/chunks/_layout.svelte-BK7oCPlN.js +26 -0
- package/build/server/chunks/_layout.svelte-BK7oCPlN.js.map +1 -0
- package/build/server/chunks/_page.svelte-BMqbzglq.js +178 -0
- package/build/server/chunks/_page.svelte-BMqbzglq.js.map +1 -0
- package/build/server/chunks/_page.svelte-C2kNC2pi.js +504 -0
- package/build/server/chunks/_page.svelte-C2kNC2pi.js.map +1 -0
- package/build/server/chunks/context-JUYyv6NC.js +74 -0
- package/build/server/chunks/context-JUYyv6NC.js.map +1 -0
- package/build/server/chunks/error.svelte-Epasb48G.js +46 -0
- package/build/server/chunks/error.svelte-Epasb48G.js.map +1 -0
- package/build/server/chunks/escaping-CqgfEcN3.js +19 -0
- package/build/server/chunks/escaping-CqgfEcN3.js.map +1 -0
- package/build/server/chunks/exports-CURVw3-F.js +303 -0
- package/build/server/chunks/exports-CURVw3-F.js.map +1 -0
- package/build/server/chunks/format-dOzJq-yD.js +59 -0
- package/build/server/chunks/format-dOzJq-yD.js.map +1 -0
- package/build/server/chunks/index-C0L7m6Jv.js +1497 -0
- package/build/server/chunks/index-C0L7m6Jv.js.map +1 -0
- package/build/server/chunks/index-CoD1IJuy.js +190 -0
- package/build/server/chunks/index-CoD1IJuy.js.map +1 -0
- package/build/server/chunks/index2-f44F-4KW.js +614 -0
- package/build/server/chunks/index2-f44F-4KW.js.map +1 -0
- package/build/server/chunks/shared-server-DaWdgxVh.js +11 -0
- package/build/server/chunks/shared-server-DaWdgxVh.js.map +1 -0
- package/build/server/index.js +8152 -0
- package/build/server/index.js.map +1 -0
- package/build/server/manifest.js +54 -0
- package/build/server/manifest.js.map +1 -0
- package/build/shims.js +32 -0
- package/package.json +71 -0
- package/static/favicon.svg +13 -0
- package/static/robots.txt +3 -0
- package/static/screenshot.png +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as x,a as f,f as y,d as _e,t as J}from"../chunks/CP-o74wi.js";import{au as pe,t as q,av as ge,u as he,r as ye,A as ke,aw as Ce,Q as de,V as n,X as l,W as c,b as t,R as S,T as ve,ax as R,a as fe,s as C,U as E,at as we,e as Ae,ay as Se}from"../chunks/DApgqo7x.js";import{f as De,s as ce,a as Ie,b as Pe,c as je,d as xe,r as Le,h as Me}from"../chunks/CZWwZlGk.js";import{i as D}from"../chunks/8LyLqy0e.js";import{P as Te,b as K,g as Be,s as N,e as le,i as me}from"../chunks/CCa20sJM.js";import{b as Ee}from"../chunks/BoUXsunA.js";function Re(s,r,d=r){var _=new WeakSet;pe(s,"input",async v=>{var i=v?s.defaultValue:s.value;if(i=ie(s)?ue(i):i,d(i),q!==null&&_.add(q),await ge(),i!==(i=r())){var m=s.selectionStart,p=s.selectionEnd,w=s.value.length;if(s.value=i??"",p!==null){var A=s.value.length;m===p&&p===w&&A>w?(s.selectionStart=A,s.selectionEnd=A):(s.selectionStart=m,s.selectionEnd=Math.min(p,A))}}}),(ke&&s.defaultValue!==s.value||he(r)==null&&s.value)&&(d(ie(s)?ue(s.value):s.value),q!==null&&_.add(q)),ye(()=>{var v=r();if(s===document.activeElement){var i=Ce??q;if(_.has(i))return}ie(s)&&v===ue(s.value)||s.type==="date"&&!v&&!s.value||v!==s.value&&(s.value=v??"")})}function ie(s){var r=s.type;return r==="number"||r==="range"}function ue(s){return s===""?null:+s}var Ne=y("<span> </span>"),Ue=y('<span class="text-[10px] text-surface-600">included</span>'),Oe=y('<a class="block bg-surface-900 border border-surface-800 rounded-lg p-4 hover:border-surface-600 hover:bg-surface-800/80 transition-all group" style="container-type: inline-size;"><div class="flex items-start justify-between gap-3 mb-3"><div class="min-w-0"><h3 class="text-surface-100 font-medium truncate group-hover:text-white transition-colors"> </h3> <p class="text-surface-500 text-xs mt-0.5 truncate"> </p></div> <span class="text-surface-500 text-xs whitespace-nowrap"> </span></div> <div class="session-card-meta flex items-center gap-2 text-xs text-surface-400 flex-wrap svelte-yfumhu"><!> <span> </span> <span class="meta-sep text-surface-700 svelte-yfumhu">|</span> <span class="text-cyan-400/80"> </span> <span class="meta-sep text-surface-700 svelte-yfumhu">|</span> <span> </span> <span class="meta-sep text-surface-700 svelte-yfumhu">|</span> <span> </span> <span> <!></span></div></a>');function Ve(s,r){de(r,!0);function d(o){return o.includes("opus")?"bg-purple-500/15 text-purple-300 border border-purple-500/30":o.includes("sonnet")?"bg-blue-500/15 text-blue-300 border border-blue-500/30":o.includes("haiku")?"bg-green-500/15 text-green-300 border border-green-500/30":"bg-surface-800 text-surface-400 border border-surface-700"}function _(o){const b=`/sessions/${o.sessionId}`;if(o.provider==="cursor"&&o.providerMeta){const M=new URLSearchParams({provider:"cursor",...o.providerMeta,project:o.project});return`${b}?${M}`}return`${b}?project=${encodeURIComponent(o.project)}&file=${encodeURIComponent(o.filePath)}`}const v={"claude-code":{label:"CC",cls:"bg-orange-500/15 text-orange-300 border-orange-500/30"},cursor:{label:"Cursor",cls:"bg-sky-500/15 text-sky-300 border-sky-500/30"}};var i=Oe(),m=n(i),p=n(m),w=n(p),A=n(w,!0);l(w);var z=c(w,2),F=n(z,!0);l(z),l(p);var I=c(p,2),Y=n(I,!0);l(I),l(m);var B=c(m,2),H=n(B);{var U=o=>{var b=Ne(),M=n(b,!0);l(b),S(()=>{N(b,1,`inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium border ${(v[r.session.provider]?.cls||"bg-surface-800 text-surface-400 border-surface-700")??""}`,"svelte-yfumhu"),x(M,v[r.session.provider]?.label||r.session.provider)}),f(o,b)};D(H,o=>{r.session.provider&&r.session.provider!=="claude-code"&&o(U)})}var P=c(H,2),O=n(P,!0);l(P);var V=c(P,4),Z=n(V);l(V);var L=c(V,4),Q=n(L,!0);l(L);var W=c(L,4),$=n(W);l(W);var j=c(W,2),X=n(j,!0),ee=c(X);{var te=o=>{var b=Ue();f(o,b)},G=R(()=>K());D(ee,o=>{t(G)&&o(te)})}l(j),l(B),l(i),S((o,b,M,se,ae,e,a,u,T,k)=>{xe(i,"href",o),x(A,b),x(F,r.session.project),x(Y,M),N(P,1,`inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-medium ${se??""}`,"svelte-yfumhu"),x(O,ae),x(Z,`${r.session.toolCallCount??""} tools`),x(Q,e),x($,`${a??""} out`),N(j,1,`ml-auto ${u??""}`),xe(j,"title",T),x(X,k)},[()=>_(r.session),()=>r.session.slug||r.session.sessionId.slice(0,8),()=>De(r.session.startedAt),()=>d(r.session.model),()=>ce(r.session.model),()=>Ie(r.session.startedAt,r.session.lastActiveAt),()=>Pe(r.session.outputTokens),()=>K()?"text-surface-500":r.session.estimatedCost>0?"text-emerald-400":"text-surface-500",()=>K()?`Estimated API cost — included in your ${Te[Be()]} subscription`:"Estimated API cost",()=>je(r.session.estimatedCost,K())]),f(s,i),ve()}var We=y('<button class="absolute right-3 top-1/2 -translate-y-1/2 text-surface-500 hover:text-surface-300">✕</button>'),qe=y('<span class="ml-0.5"> </span>'),ze=y("<button> <!></button>"),Fe=y("<button> </button>"),He=y('<span class="text-surface-700 mx-1">|</span> <button>All</button> <!>',1),Qe=y('<div class="text-center py-12 text-surface-500"><!></div>'),Xe=y('<div class="h-1"></div>'),Ge=y('<div class="space-y-4"><div class="relative"><input type="text" placeholder="Search sessions by project, slug..." class="w-full bg-surface-900 border border-surface-800 rounded-lg px-4 py-2.5 text-sm text-surface-200 placeholder:text-surface-600 focus:outline-none focus:border-surface-600 transition-colors"/> <!></div> <div class="flex flex-wrap items-center gap-1.5"><!> <!></div> <div class="text-xs text-surface-500"><!></div> <div class="grid gap-3"><!> <!> <!></div></div>');function Je(s,r){de(r,!0);let d=E(""),_=E("date"),v=E("desc"),i=E("all"),m=E(50),p=E(void 0),w=R(()=>[...new Set(r.sessions.map(e=>e.provider).filter(Boolean))]);function A(e){return new Date(e.lastActiveAt).getTime()-new Date(e.startedAt).getTime()}function z(e){t(_)===e?C(v,t(v)==="asc"?"desc":"asc",!0):(C(_,e,!0),C(v,e==="model"?"asc":"desc",!0)),C(m,50)}let F=R(()=>r.sessions.filter(e=>{if(t(i)!=="all"&&e.provider!==t(i))return!1;if(!t(d))return!0;const a=t(d).toLowerCase();return e.slug.toLowerCase().includes(a)||e.project.toLowerCase().includes(a)||e.sessionId.toLowerCase().includes(a)})),I=R(()=>[...t(F)].sort((e,a)=>{let u=0;switch(t(_)){case"date":u=new Date(e.lastActiveAt).getTime()-new Date(a.lastActiveAt).getTime();break;case"model":u=ce(e.model).localeCompare(ce(a.model));break;case"cost":u=e.estimatedCost-a.estimatedCost;break;case"duration":u=A(e)-A(a);break;case"tokens":u=e.outputTokens-a.outputTokens;break}return t(v)==="asc"?u:-u})),Y=R(()=>t(I).slice(0,t(m))),B=R(()=>t(m)<t(I).length);fe(()=>{t(d),C(m,50)});const H=[{key:"date",label:"Date"},{key:"model",label:"Model"},{key:"cost",label:"Cost"},{key:"duration",label:"Duration"},{key:"tokens",label:"Output"}];fe(()=>{if(!t(p))return;const e=new IntersectionObserver(a=>{a[0].isIntersecting&&t(B)&&C(m,t(m)+50)},{rootMargin:"200px"});return e.observe(t(p)),()=>e.disconnect()});var U=Ge(),P=n(U),O=n(P);Le(O);var V=c(O,2);{var Z=e=>{var a=We();a.__click=()=>C(d,""),f(e,a)};D(V,e=>{t(d)&&e(Z)})}l(P);var L=c(P,2),Q=n(L);le(Q,17,()=>H,me,(e,a)=>{let u=()=>t(a).key,T=()=>t(a).label;var k=ze();k.__click=()=>z(u());var g=n(k),h=c(g);{var re=oe=>{var ne=qe(),be=n(ne,!0);l(ne),S(()=>x(be,t(v)==="asc"?"↑":"↓")),f(oe,ne)};D(h,oe=>{t(_)===u()&&oe(re)})}l(k),S(()=>{N(k,1,`px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${t(_)===u()?"bg-surface-800 text-surface-200":"text-surface-500 hover:text-surface-300"}`),x(g,`${T()??""} `)}),f(e,k)});var W=c(Q,2);{var $=e=>{var a=He(),u=c(we(a),2);u.__click=()=>C(i,"all");var T=c(u,2);le(T,17,()=>t(w),me,(k,g)=>{var h=Fe();h.__click=()=>C(i,t(g),!0);var re=n(h,!0);l(h),S(()=>{N(h,1,`px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${t(i)===t(g)?"bg-surface-800 text-surface-200":"text-surface-500 hover:text-surface-300"}`),x(re,t(g)==="claude-code"?"Claude Code":"Cursor")}),f(k,h)}),S(()=>N(u,1,`px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${t(i)==="all"?"bg-surface-800 text-surface-200":"text-surface-500 hover:text-surface-300"}`)),f(e,a)};D(W,e=>{t(w).length>1&&e($)})}l(L);var j=c(L,2),X=n(j);{var ee=e=>{var a=J();S(()=>x(a,`Showing ${t(m)??""} of ${t(I).length??""} sessions`)),f(e,a)},te=e=>{var a=J();S(()=>x(a,`${t(I).length??""} session${t(I).length!==1?"s":""}`)),f(e,a)};D(X,e=>{t(B)?e(ee):e(te,!1)})}l(j);var G=c(j,2),o=n(G);le(o,17,()=>t(Y),e=>e.sessionId,(e,a)=>{Ve(e,{get session(){return t(a)}})});var b=c(o,2);{var M=e=>{var a=Qe(),u=n(a);{var T=g=>{var h=J();S(()=>x(h,`No sessions matching "${t(d)??""}"`)),f(g,h)},k=g=>{var h=J("No sessions found. Make sure Claude Code sessions exist in ~/.claude/projects/");f(g,h)};D(u,g=>{t(d)?g(T):g(k,!1)})}l(a),f(e,a)};D(b,e=>{t(F).length===0&&e(M)})}var se=c(b,2);{var ae=e=>{var a=Xe();Ee(a,u=>C(p,u),()=>t(p)),f(e,a)};D(se,e=>{t(B)&&e(ae)})}l(G),l(U),Re(O,()=>t(d),e=>C(d,e)),f(s,U),ve()}_e(["click"]);var Ke=y('<div class="max-w-4xl mx-auto px-3 py-4 sm:px-4 sm:py-8"><div class="mb-6 sm:mb-8"><h1 class="text-xl sm:text-2xl font-bold text-surface-100 mb-2">Sessions</h1> <p class="text-surface-500 text-sm">Browse and replay your Claude Code agent sessions</p></div> <!></div>');function at(s,r){de(r,!0);var d=Ke();Me("1uha8ag",v=>{Ae(()=>{Se.title="Agent Replay — Dashboard"})});var _=c(n(d),2);Je(_,{get sessions(){return r.data.sessions}}),l(d),f(s,d),ve()}export{at as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import{d as be,s as L,a as _,f as E,t as ce,c as Xe,e as Qe}from"../chunks/CP-o74wi.js";import{A as Oe,aT as Ze,ad as Ye,b5 as Ke,b6 as $e,Q as ae,V as u,W as f,X as o,b as s,R as S,T as ne,ax as U,s as $,U as ie,at as se,$ as et,b7 as tt,ay as rt}from"../chunks/DApgqo7x.js";import{i as J}from"../chunks/8LyLqy0e.js";import{t as ee,d as Je,s as at,a as nt,b as De,c as st,h as it}from"../chunks/CZWwZlGk.js";import{t as ot,s as te,e as de,i as xe,P as lt,b as pe,g as ut}from"../chunks/CCa20sJM.js";import{b as Te}from"../chunks/BoUXsunA.js";import{p as oe}from"../chunks/DCcb0kkP.js";function ke(t,e,r,a){var l=t.__style;if(Oe||l!==e){var n=ot(e);(!Oe||n!==t.getAttribute("style"))&&(n==null?t.removeAttribute("style"):t.style.cssText=n),t.__style=e}return a}function Ve(t,e,r=!1){if(t.multiple){if(e==null)return;if(!Ye(e))return Ke();for(var a of t.options)a.selected=e.includes(Se(a));return}for(a of t.options){var l=Se(a);if($e(l,e)){a.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function vt(t){var e=new MutationObserver(()=>{Ve(t,t.__value)});e.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Ze(()=>{e.disconnect()})}function Se(t){return"__value"in t?t.__value:t.value}var ct=E("<div></div>"),dt=E('<span class="text-xs text-red-400">error</span>'),ft=E('<button class="w-full text-left relative pl-6 group"><div></div> <!> <div><div class="flex items-center gap-2 mb-0.5"><span class="text-xs font-medium text-surface-400"> </span> <!></div> <div class="text-surface-300 text-xs leading-relaxed truncate"> </div></div></button>');function pt(t,e){ae(e,!0);let r=oe(e,"selected",3,!1);const a={Bash:"border-green-500/50 bg-green-500/5",Read:"border-blue-500/50 bg-blue-500/5",Write:"border-amber-500/50 bg-amber-500/5",Edit:"border-amber-500/50 bg-amber-500/5",Glob:"border-purple-500/50 bg-purple-500/5",Grep:"border-purple-500/50 bg-purple-500/5",Task:"border-cyan-500/50 bg-cyan-500/5",WebFetch:"border-indigo-500/50 bg-indigo-500/5",WebSearch:"border-indigo-500/50 bg-indigo-500/5"},l={Bash:"bg-green-500",Read:"bg-blue-500",Write:"bg-amber-500",Edit:"bg-amber-500",Glob:"bg-purple-500",Grep:"bg-purple-500",Task:"bg-cyan-500",WebFetch:"bg-indigo-500",WebSearch:"bg-indigo-500"},n={Bash:"text-green-500",Read:"text-blue-500",Write:"text-amber-500",Edit:"text-amber-500",Glob:"text-purple-500",Grep:"text-purple-500",Task:"text-cyan-500",WebFetch:"text-indigo-500",WebSearch:"text-indigo-500"};function i(k){const c=k.data;switch(c.eventType){case"user_message":return ee(c.text,80);case"assistant_text":return ee(c.text,80);case"thinking":return ee(c.thinking,60);case"tool_call":{const W=c.input;return c.toolName==="Bash"?ee(String(W.command||""),60):c.toolName==="Read"?ee(String(W.file_path||""),60):c.toolName==="Edit"?ee(String(W.file_path||""),60):c.toolName==="Write"?ee(String(W.file_path||""),60):c.toolName==="Glob"?ee(String(W.pattern||""),60):c.toolName==="Grep"?ee(String(W.pattern||""),60):c.toolName==="Task"?ee(String(W.description||""),60):c.toolName}case"system":return c.subtype;case"compact_boundary":return"Context compacted";default:return""}}function x(k){const c=k.data;switch(c.eventType){case"user_message":return"User";case"assistant_text":return"Claude";case"thinking":return"Thinking";case"tool_call":return c.toolName;case"system":return"System";case"compact_boundary":return"Compact";default:return""}}function p(k){const c=k.data;return c.eventType==="user_message"?"bg-sky-500":c.eventType==="assistant_text"?"bg-surface-400":c.eventType==="thinking"?"bg-yellow-500":c.eventType==="tool_call"?l[c.toolName]||"bg-surface-500":c.eventType==="system"?"bg-surface-600":c.eventType==="compact_boundary"?"bg-orange-500":"bg-surface-600"}function g(k){const c=k.data;return c.eventType==="user_message"?"text-sky-500":c.eventType==="assistant_text"?"text-surface-400":c.eventType==="thinking"?"text-yellow-500":c.eventType==="tool_call"?n[c.toolName]||"text-surface-500":c.eventType==="compact_boundary"?"text-orange-500":"text-surface-600"}function d(k){const c=k.data;return c.eventType==="user_message"?"border-sky-500/50 bg-sky-500/5":c.eventType==="assistant_text"?"border-surface-600 bg-surface-800/50":c.eventType==="thinking"?"border-yellow-500/30 bg-yellow-500/5":c.eventType==="tool_call"?a[c.toolName]||"border-surface-600 bg-surface-800/50":c.eventType==="compact_boundary"?"border-orange-500/30 bg-orange-500/5":"border-surface-700 bg-surface-800/50"}function m(k){return k.data.eventType==="tool_call"&&!!k.data.result?.isError}var w=ft();w.__click=function(...k){e.onclick?.apply(this,k)};var I=u(w),T=f(I,2);{var b=k=>{var c=ct();S(W=>te(c,1,`absolute left-0 top-3 w-3 h-3 rounded-full z-[9] ${W??""} animate-pulse-ring`,"svelte-1z0u85a"),[()=>g(e.event)]),_(k,c)};J(T,k=>{r()&&k(b)})}var v=f(T,2),y=u(v),N=u(y),z=u(N,!0);o(N);var C=f(N,2);{var M=k=>{var c=dt();_(k,c)},F=U(()=>m(e.event));J(C,k=>{s(F)&&k(M)})}o(y);var B=f(y,2),V=u(B,!0);o(B),o(v),o(w),S((k,c,W,O,q)=>{te(I,1,`absolute left-0 top-3 w-3 h-3 rounded-full ${k??""} ring-2 ring-surface-950 z-10
|
|
2
|
+
${r()?"scale-125":"group-hover:scale-110"} transition-transform`,"svelte-1z0u85a"),te(v,1,`ml-2 px-3 py-2 rounded-md border transition-all text-sm
|
|
3
|
+
${c??""}
|
|
4
|
+
${r()?"ring-1 ring-surface-500 !bg-surface-800":"hover:bg-surface-800/80"}
|
|
5
|
+
${W??""}`,"svelte-1z0u85a"),L(z,O),L(V,q)},[()=>p(e.event),()=>d(e.event),()=>m(e.event)?"!border-red-500/50":"",()=>x(e.event),()=>i(e.event)]),_(t,w),ne()}be(["click"]);var mt=E("<div><!></div>"),xt=E('<div class="relative"><div class="absolute left-[5px] top-0 bottom-0 w-px bg-surface-800"></div> <div class="space-y-1"></div></div>');function ze(t,e){ae(e,!0);let r=oe(e,"selectedIndex",3,0),a=ie(void 0);function l(p){if(!s(a))return;const g=s(a).querySelector(`[data-event-index="${p}"]`);g&&g.scrollIntoView({behavior:"smooth",block:"nearest"})}var n={scrollToEvent:l},i=xt(),x=f(u(i),2);return de(x,23,()=>e.events,p=>p.id,(p,g,d)=>{var m=mt(),w=u(m);{let I=U(()=>s(d)===r());pt(w,{get event(){return s(g)},get selected(){return s(I)},onclick:()=>e.onselect(s(d))})}o(m),S(()=>Je(m,"data-event-index",s(d))),_(p,m)}),o(x),o(i),Te(i,p=>$(a,p),()=>s(a)),_(t,i),ne(n)}function re(){}re.prototype={diff:function(e,r){var a,l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=l.callback;typeof l=="function"&&(n=l,l={});var i=this;function x(C){return C=i.postProcess(C,l),n?(setTimeout(function(){n(C)},0),!0):C}e=this.castInput(e,l),r=this.castInput(r,l),e=this.removeEmpty(this.tokenize(e,l)),r=this.removeEmpty(this.tokenize(r,l));var p=r.length,g=e.length,d=1,m=p+g;l.maxEditLength!=null&&(m=Math.min(m,l.maxEditLength));var w=(a=l.timeout)!==null&&a!==void 0?a:1/0,I=Date.now()+w,T=[{oldPos:-1,lastComponent:void 0}],b=this.extractCommon(T[0],r,e,0,l);if(T[0].oldPos+1>=g&&b+1>=p)return x(Re(i,T[0].lastComponent,r,e,i.useLongestToken));var v=-1/0,y=1/0;function N(){for(var C=Math.max(v,-d);C<=Math.min(y,d);C+=2){var M=void 0,F=T[C-1],B=T[C+1];F&&(T[C-1]=void 0);var V=!1;if(B){var k=B.oldPos-C;V=B&&0<=k&&k<p}var c=F&&F.oldPos+1<g;if(!V&&!c){T[C]=void 0;continue}if(!c||V&&F.oldPos<B.oldPos?M=i.addToPath(B,!0,!1,0,l):M=i.addToPath(F,!1,!0,1,l),b=i.extractCommon(M,r,e,C,l),M.oldPos+1>=g&&b+1>=p)return x(Re(i,M.lastComponent,r,e,i.useLongestToken));T[C]=M,M.oldPos+1>=g&&(y=Math.min(y,C-1)),b+1>=p&&(v=Math.max(v,C+1))}d++}if(n)(function C(){setTimeout(function(){if(d>m||Date.now()>I)return n();N()||C()},0)})();else for(;d<=m&&Date.now()<=I;){var z=N();if(z)return z}},addToPath:function(e,r,a,l,n){var i=e.lastComponent;return i&&!n.oneChangePerToken&&i.added===r&&i.removed===a?{oldPos:e.oldPos+l,lastComponent:{count:i.count+1,added:r,removed:a,previousComponent:i.previousComponent}}:{oldPos:e.oldPos+l,lastComponent:{count:1,added:r,removed:a,previousComponent:i}}},extractCommon:function(e,r,a,l,n){for(var i=r.length,x=a.length,p=e.oldPos,g=p-l,d=0;g+1<i&&p+1<x&&this.equals(a[p+1],r[g+1],n);)g++,p++,d++,n.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return d&&!n.oneChangePerToken&&(e.lastComponent={count:d,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=p,g},equals:function(e,r,a){return a.comparator?a.comparator(e,r):e===r||a.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],a=0;a<e.length;a++)e[a]&&r.push(e[a]);return r},castInput:function(e){return e},tokenize:function(e){return Array.from(e)},join:function(e){return e.join("")},postProcess:function(e){return e}};function Re(t,e,r,a,l){for(var n=[],i;e;)n.push(e),i=e.previousComponent,delete e.previousComponent,e=i;n.reverse();for(var x=0,p=n.length,g=0,d=0;x<p;x++){var m=n[x];if(m.removed)m.value=t.join(a.slice(d,d+m.count)),d+=m.count;else{if(!m.added&&l){var w=r.slice(g,g+m.count);w=w.map(function(I,T){var b=a[d+T];return b.length>I.length?b:I}),m.value=t.join(w)}else m.value=t.join(r.slice(g,g+m.count));g+=m.count,m.added||(d+=m.count)}}return n}function Me(t,e){var r;for(r=0;r<t.length&&r<e.length;r++)if(t[r]!=e[r])return t.slice(0,r);return t.slice(0,r)}function Be(t,e){var r;if(!t||!e||t[t.length-1]!=e[e.length-1])return"";for(r=0;r<t.length&&r<e.length;r++)if(t[t.length-(r+1)]!=e[e.length-(r+1)])return t.slice(-r);return t.slice(-r)}function Ce(t,e,r){if(t.slice(0,e.length)!=e)throw Error("string ".concat(JSON.stringify(t)," doesn't start with prefix ").concat(JSON.stringify(e),"; this is a bug"));return r+t.slice(e.length)}function Ee(t,e,r){if(!e)return t+r;if(t.slice(-e.length)!=e)throw Error("string ".concat(JSON.stringify(t)," doesn't end with suffix ").concat(JSON.stringify(e),"; this is a bug"));return t.slice(0,-e.length)+r}function ve(t,e){return Ce(t,e,"")}function me(t,e){return Ee(t,e,"")}function We(t,e){return e.slice(0,gt(t,e))}function gt(t,e){var r=0;t.length>e.length&&(r=t.length-e.length);var a=e.length;t.length<e.length&&(a=t.length);var l=Array(a),n=0;l[0]=0;for(var i=1;i<a;i++){for(e[i]==e[n]?l[i]=l[n]:l[i]=n;n>0&&e[i]!=e[n];)n=l[n];e[i]==e[n]&&n++}n=0;for(var x=r;x<t.length;x++){for(;n>0&&t[x]!=e[n];)n=l[n];t[x]==e[n]&&n++}return n}var ge="a-zA-Z0-9_\\u{C0}-\\u{FF}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}",ht=new RegExp("[".concat(ge,"]+|\\s+|[^").concat(ge,"]"),"ug"),_e=new re;_e.equals=function(t,e,r){return r.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t.trim()===e.trim()};_e.tokenize=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r;if(e.intlSegmenter){if(e.intlSegmenter.resolvedOptions().granularity!="word")throw new Error('The segmenter passed must have a granularity of "word"');r=Array.from(e.intlSegmenter.segment(t),function(n){return n.segment})}else r=t.match(ht)||[];var a=[],l=null;return r.forEach(function(n){/\s/.test(n)?l==null?a.push(n):a.push(a.pop()+n):/\s/.test(l)?a[a.length-1]==l?a.push(a.pop()+n):a.push(l+n):a.push(n),l=n}),a};_e.join=function(t){return t.map(function(e,r){return r==0?e:e.replace(/^\s+/,"")}).join("")};_e.postProcess=function(t,e){if(!t||e.oneChangePerToken)return t;var r=null,a=null,l=null;return t.forEach(function(n){n.added?a=n:n.removed?l=n:((a||l)&&Fe(r,l,a,n),r=n,a=null,l=null)}),(a||l)&&Fe(r,l,a,null),t};function Fe(t,e,r,a){if(e&&r){var l=e.value.match(/^\s*/)[0],n=e.value.match(/\s*$/)[0],i=r.value.match(/^\s*/)[0],x=r.value.match(/\s*$/)[0];if(t){var p=Me(l,i);t.value=Ee(t.value,i,p),e.value=ve(e.value,p),r.value=ve(r.value,p)}if(a){var g=Be(n,x);a.value=Ce(a.value,x,g),e.value=me(e.value,g),r.value=me(r.value,g)}}else if(r)t&&(r.value=r.value.replace(/^\s*/,"")),a&&(a.value=a.value.replace(/^\s*/,""));else if(t&&a){var d=a.value.match(/^\s*/)[0],m=e.value.match(/^\s*/)[0],w=e.value.match(/\s*$/)[0],I=Me(d,m);e.value=ve(e.value,I);var T=Be(ve(d,I),w);e.value=me(e.value,T),a.value=Ce(a.value,d,T),t.value=Ee(t.value,d,d.slice(0,d.length-T.length))}else if(a){var b=a.value.match(/^\s*/)[0],v=e.value.match(/\s*$/)[0],y=We(v,b);e.value=me(e.value,y)}else if(t){var N=t.value.match(/\s*$/)[0],z=e.value.match(/^\s*/)[0],C=We(N,z);e.value=ve(e.value,C)}}var bt=new re;bt.tokenize=function(t){var e=new RegExp("(\\r?\\n)|[".concat(ge,"]+|[^\\S\\n\\r]+|[^").concat(ge,"]"),"ug");return t.match(e)||[]};var ye=new re;ye.tokenize=function(t,e){e.stripTrailingCr&&(t=t.replace(/\r\n/g,`
|
|
6
|
+
`));var r=[],a=t.split(/(\n|\r\n)/);a[a.length-1]||a.pop();for(var l=0;l<a.length;l++){var n=a[l];l%2&&!e.newlineIsToken?r[r.length-1]+=n:r.push(n)}return r};ye.equals=function(t,e,r){return r.ignoreWhitespace?((!r.newlineIsToken||!t.includes(`
|
|
7
|
+
`))&&(t=t.trim()),(!r.newlineIsToken||!e.includes(`
|
|
8
|
+
`))&&(e=e.trim())):r.ignoreNewlineAtEof&&!r.newlineIsToken&&(t.endsWith(`
|
|
9
|
+
`)&&(t=t.slice(0,-1)),e.endsWith(`
|
|
10
|
+
`)&&(e=e.slice(0,-1))),re.prototype.equals.call(this,t,e,r)};function je(t,e,r){return ye.diff(t,e,r)}var _t=new re;_t.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};var yt=new re;yt.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function Ge(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable})),r.push.apply(r,a)}return r}function he(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Ge(Object(r),!0).forEach(function(a){kt(t,a,r[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ge(Object(r)).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(r,a))})}return t}function wt(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var a=r.call(t,e);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Tt(t){var e=wt(t,"string");return typeof e=="symbol"?e:e+""}function Pe(t){"@babel/helpers - typeof";return Pe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pe(t)}function kt(t,e,r){return e=Tt(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function we(t){return Ct(t)||Et(t)||Pt(t)||Nt()}function Ct(t){if(Array.isArray(t))return Ne(t)}function Et(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function Pt(t,e){if(t){if(typeof t=="string")return Ne(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ne(t,e)}}function Ne(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,a=new Array(e);r<e;r++)a[r]=t[r];return a}function Nt(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
11
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var fe=new re;fe.useLongestToken=!0;fe.tokenize=ye.tokenize;fe.castInput=function(t,e){var r=e.undefinedReplacement,a=e.stringifyReplacer,l=a===void 0?function(n,i){return typeof i>"u"?r:i}:a;return typeof t=="string"?t:JSON.stringify(Ie(t,null,null,l),l," ")};fe.equals=function(t,e,r){return re.prototype.equals.call(fe,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"),r)};function Ie(t,e,r,a,l){e=e||[],r=r||[],a&&(t=a(l,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var i;if(Object.prototype.toString.call(t)==="[object Array]"){for(e.push(t),i=new Array(t.length),r.push(i),n=0;n<t.length;n+=1)i[n]=Ie(t[n],e,r,a,l);return e.pop(),r.pop(),i}if(t&&t.toJSON&&(t=t.toJSON()),Pe(t)==="object"&&t!==null){e.push(t),i={},r.push(i);var x=[],p;for(p in t)Object.prototype.hasOwnProperty.call(t,p)&&x.push(p);for(x.sort(),n=0;n<x.length;n+=1)p=x[n],i[p]=Ie(t[p],e,r,a,p);e.pop(),r.pop()}else i=t;return i}var Le=new re;Le.tokenize=function(t){return t.slice()};Le.join=Le.removeEmpty=function(t){return t};function qe(t,e,r,a,l,n,i){if(i||(i={}),typeof i=="function"&&(i={callback:i}),typeof i.context>"u"&&(i.context=4),i.newlineIsToken)throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");if(i.callback){var x=i,p=x.callback;je(r,a,he(he({},i),{},{callback:function(m){var w=g(m);p(w)}}))}else return g(je(r,a,i));function g(d){if(!d)return;d.push({value:"",lines:[]});function m(V){return V.map(function(k){return" "+k})}for(var w=[],I=0,T=0,b=[],v=1,y=1,N=function(){var k=d[z],c=k.lines||At(k.value);if(k.lines=c,k.added||k.removed){var W;if(!I){var O=d[z-1];I=v,T=y,O&&(b=i.context>0?m(O.lines.slice(-i.context)):[],I-=b.length,T-=b.length)}(W=b).push.apply(W,we(c.map(function(D){return(k.added?"+":"-")+D}))),k.added?y+=c.length:v+=c.length}else{if(I)if(c.length<=i.context*2&&z<d.length-2){var q;(q=b).push.apply(q,we(m(c)))}else{var G,P=Math.min(c.length,i.context);(G=b).push.apply(G,we(m(c.slice(0,P))));var A={oldStart:I,oldLines:v-I+P,newStart:T,newLines:y-T+P,lines:b};w.push(A),I=0,T=0,b=[]}v+=c.length,y+=c.length}},z=0;z<d.length;z++)N();for(var C=0,M=w;C<M.length;C++)for(var F=M[C],B=0;B<F.lines.length;B++)F.lines[B].endsWith(`
|
|
12
|
+
`)?F.lines[B]=F.lines[B].slice(0,-1):(F.lines.splice(B+1,0,"\"),B++);return{oldFileName:t,newFileName:e,oldHeader:l,newHeader:n,hunks:w}}}function Ae(t){if(Array.isArray(t))return t.map(Ae).join(`
|
|
13
|
+
`);var e=[];t.oldFileName==t.newFileName&&e.push("Index: "+t.oldFileName),e.push("==================================================================="),e.push("--- "+t.oldFileName+(typeof t.oldHeader>"u"?"":" "+t.oldHeader)),e.push("+++ "+t.newFileName+(typeof t.newHeader>"u"?"":" "+t.newHeader));for(var r=0;r<t.hunks.length;r++){var a=t.hunks[r];a.oldLines===0&&(a.oldStart-=1),a.newLines===0&&(a.newStart-=1),e.push("@@ -"+a.oldStart+","+a.oldLines+" +"+a.newStart+","+a.newLines+" @@"),e.push.apply(e,a.lines)}return e.join(`
|
|
14
|
+
`)+`
|
|
15
|
+
`}function It(t,e,r,a,l,n,i){var x;if(typeof i=="function"&&(i={callback:i}),(x=i)!==null&&x!==void 0&&x.callback){var g=i,d=g.callback;qe(t,e,r,a,l,n,he(he({},i),{},{callback:function(w){w?d(Ae(w)):d()}}))}else{var p=qe(t,e,r,a,l,n,i);return p?Ae(p):void 0}}function Lt(t,e,r,a,l,n){return It(t,t,e,r,a,l,n)}function At(t){var e=t.endsWith(`
|
|
16
|
+
`),r=t.split(`
|
|
17
|
+
`).map(function(a){return a+`
|
|
18
|
+
`});return e?r.pop():r.push(r.pop().slice(0,-1)),r}var Ot=E("<div><!> </div>"),Dt=E('<div class="rounded-md border border-surface-800 overflow-hidden"><div class="bg-surface-900 px-3 py-1.5 border-b border-surface-800 flex items-center gap-2"><span class="text-amber-400 text-xs"> </span></div> <div class="overflow-x-auto text-xs font-mono"></div></div>');function St(t,e){ae(e,!0);let r=U(()=>Lt(e.filePath,e.oldString,e.newString,"","",{context:3})),a=U(()=>{const g=[];for(const d of s(r).split(`
|
|
19
|
+
`))d.startsWith("@@")?g.push({type:"header",content:d}):d.startsWith("+")&&!d.startsWith("+++")?g.push({type:"add",content:d.slice(1)}):d.startsWith("-")&&!d.startsWith("---")?g.push({type:"remove",content:d.slice(1)}):d.startsWith(" ")&&g.push({type:"context",content:d.slice(1)});return g});var l=Dt(),n=u(l),i=u(n),x=u(i,!0);o(i),o(n);var p=f(n,2);de(p,21,()=>s(a),xe,(g,d)=>{var m=Ot(),w=u(m);{var I=y=>{var N=ce("+");_(y,N)},T=y=>{var N=ce("-");_(y,N)},b=y=>{var N=ce(" ");_(y,N)};J(w,y=>{s(d).type==="add"?y(I):s(d).type==="remove"?y(T,1):s(d).type==="context"&&y(b,2)})}var v=f(w,1,!0);o(m),S(()=>{te(m,1,`px-3 py-0.5 whitespace-pre
|
|
20
|
+
${s(d).type==="add"?"bg-green-500/10 text-green-300":""}
|
|
21
|
+
${s(d).type==="remove"?"bg-red-500/10 text-red-300":""}
|
|
22
|
+
${s(d).type==="context"?"text-surface-400":""}
|
|
23
|
+
${s(d).type==="header"?"bg-surface-800 text-purple-400 py-1":""}`),L(v,s(d).content)}),_(g,m)}),o(p),o(l),S(()=>L(x,e.filePath)),_(t,l),ne()}var zt=E('<span class="text-surface-500 text-xs ml-1"> </span>'),Rt=E('<div><pre class="whitespace-pre-wrap"> </pre></div>'),Mt=E('<button class="w-full text-left px-3 py-1 bg-surface-900/50 text-surface-500 text-xs hover:text-surface-400 border-t border-surface-800"> </button> <!>',1),Bt=E('<div class="rounded-md border border-surface-800 overflow-hidden"><div class="bg-surface-900 px-3 py-1.5 border-b border-surface-800 flex items-center gap-2"><div class="flex gap-1"><div class="w-2.5 h-2.5 rounded-full bg-red-500/60"></div> <div class="w-2.5 h-2.5 rounded-full bg-yellow-500/60"></div> <div class="w-2.5 h-2.5 rounded-full bg-green-500/60"></div></div> <!></div> <div class="bg-surface-950 px-3 py-2 font-mono text-xs"><span class="text-green-400">$</span> <span class="text-surface-200 ml-2 whitespace-pre-wrap"> </span></div> <!></div>');function Wt(t,e){ae(e,!0);let r=ie(!0);var a=Bt(),l=u(a),n=f(u(l),2);{var i=w=>{var I=zt(),T=u(I,!0);o(I),S(()=>L(T,e.description)),_(w,I)};J(n,w=>{e.description&&w(i)})}o(l);var x=f(l,2),p=f(u(x),2),g=u(p,!0);o(p),o(x);var d=f(x,2);{var m=w=>{var I=Mt(),T=se(I);T.__click=()=>$(r,!s(r));var b=u(T);o(T);var v=f(T,2);{var y=N=>{var z=Rt(),C=u(z),M=u(C,!0);o(C),o(z),S(()=>{te(z,1,`bg-surface-950 px-3 py-2 font-mono text-xs max-h-96 overflow-y-auto
|
|
24
|
+
${e.isError?"text-red-300":"text-surface-400"}`),L(M,e.output)}),_(N,z)};J(v,N=>{s(r)&&N(y)})}S(N=>L(b,`${s(r)?"▾":"▸"} Output (${N??""} lines)`),[()=>e.output.split(`
|
|
25
|
+
`).length]),_(w,I)};J(d,w=>{e.output&&w(m)})}o(a),S(()=>L(g,e.command)),_(t,a),ne()}be(["click"]);var Ft=E('<tr class="hover:bg-surface-800/30"><td class="text-surface-600 text-right px-2 py-0 select-none w-1 whitespace-nowrap border-r border-surface-800"></td><td class="text-surface-300 px-3 py-0 whitespace-pre"> </td></tr>'),jt=E('<div class="rounded-md border border-surface-800 overflow-hidden"><div class="overflow-x-auto font-mono text-xs"><table class="w-full"><tbody></tbody></table></div></div>');function ue(t,e){ae(e,!0);let r=oe(e,"maxHeight",3,"24rem"),a=U(()=>e.content.split(`
|
|
26
|
+
`));var l=jt(),n=u(l),i=u(n),x=u(i);de(x,21,()=>s(a),xe,(p,g,d)=>{var m=Ft(),w=u(m);w.textContent=d+1;var I=f(w),T=u(I,!0);o(I),o(m),S(()=>L(T,s(g))),_(p,m)}),o(x),o(i),o(n),o(l),S(()=>ke(n,`max-height: ${r()??""}; overflow-y: auto;`)),_(t,l),ne()}var Gt=E('<div class="flex items-center justify-center h-full text-surface-600 text-sm">Select an event to view details</div>'),qt=E('<div><h3 class="text-xs font-medium text-sky-400 mb-3 uppercase tracking-wider">User Message</h3> <div class="text-surface-200 text-sm whitespace-pre-wrap leading-relaxed"> </div></div>'),Ht=E('<div><h3 class="text-xs font-medium text-surface-400 mb-3 uppercase tracking-wider">Claude</h3> <div class="text-surface-200 text-sm whitespace-pre-wrap leading-relaxed"> </div></div>'),Jt=E('<div><h3 class="text-xs font-medium text-yellow-400 mb-3 uppercase tracking-wider">Thinking</h3> <div class="text-surface-400 text-sm whitespace-pre-wrap leading-relaxed italic"> </div></div>'),Vt=E('<span class="text-red-400 ml-2">Error</span>'),Ut=E('<span class="text-surface-500 text-xs ml-2"> </span>'),Xt=E('<div class="rounded-md border border-red-500/30 bg-red-500/5 px-3 py-2"><p class="text-red-400 text-xs font-medium mb-1">Tool returned an error during this session</p> <pre class="text-red-300/80 text-xs whitespace-pre-wrap"> </pre></div>'),Qt=E('<div class="mb-2"><span class="text-blue-400 text-xs"> </span> <!></div> <!>',1),Zt=E('<div class="mb-2"><span class="text-amber-400 text-xs"> </span></div> <!>',1),Yt=E('<span class="text-surface-500 text-xs ml-2"> </span>'),Kt=E('<div class="mb-2"><span class="text-purple-400 text-xs"> </span> <!></div> <!>',1),$t=E('<span class="text-surface-500 text-xs ml-2"> </span>'),er=E('<div class="mb-2"><span class="text-purple-400 text-xs"> </span> <!></div> <!>',1),tr=E('<div class="text-surface-400 text-xs whitespace-pre-wrap bg-surface-900 rounded p-3 border border-surface-800"> </div>'),rr=E('<div class="mt-3"><span class="text-xs text-surface-500">Result:</span> <!></div>'),ar=E('<div class="space-y-2"><div class="text-surface-300 text-sm"><span class="text-cyan-400">Description:</span> </div> <!> <!></div>'),nr=E('<div class="text-xs text-surface-500">Result</div> <div class="rounded-md border border-red-500/30 bg-red-500/5 px-3 py-2"><p class="text-red-400 text-xs font-medium mb-1">Tool returned an error during this session</p> <pre class="text-red-300/80 text-xs whitespace-pre-wrap"> </pre></div>',1),sr=E('<div class="text-xs text-surface-500">Result</div> <!>',1),ir=E('<div class="space-y-3"><div class="text-xs text-surface-500">Input</div> <pre class="text-xs text-surface-300 bg-surface-900 rounded p-3 border border-surface-800 overflow-x-auto"> </pre> <!></div>'),or=E('<div><h3 class="text-xs font-medium text-surface-400 mb-3 uppercase tracking-wider"> <!></h3> <!></div>'),lr=E('<p class="text-surface-500 text-xs mt-1"> </p>'),ur=E('<div><h3 class="text-xs font-medium text-surface-500 mb-3 uppercase tracking-wider">System</h3> <p class="text-surface-400 text-sm"> </p> <!></div>'),vr=E('<div class="text-center py-8"><div class="text-orange-400 text-sm font-medium">Context Compacted</div> <p class="text-surface-500 text-xs mt-2">The conversation was summarized to fit the context window</p></div>'),cr=E('<div class="h-full overflow-y-auto p-4 space-y-4"><!></div>');function He(t,e){ae(e,!0);var r=Xe(),a=se(r);{var l=i=>{var x=Gt();_(i,x)},n=i=>{var x=cr(),p=u(x);{var g=b=>{var v=qt(),y=f(u(v),2),N=u(y,!0);o(y),o(v),S(()=>L(N,e.event.data.text)),_(b,v)},d=b=>{var v=Ht(),y=f(u(v),2),N=u(y,!0);o(y),o(v),S(()=>L(N,e.event.data.text)),_(b,v)},m=b=>{var v=Jt(),y=f(u(v),2),N=u(y,!0);o(y),o(v),S(()=>L(N,e.event.data.thinking)),_(b,v)},w=b=>{const v=U(()=>e.event.data);var y=or(),N=u(y),z=u(N),C=f(z);{var M=P=>{var A=Vt();_(P,A)};J(C,P=>{s(v).result?.isError&&P(M)})}o(N);var F=f(N,2);{var B=P=>{{let A=U(()=>String(s(v).input.file_path||"")),D=U(()=>String(s(v).input.old_string||"")),H=U(()=>String(s(v).input.new_string||""));St(P,{get filePath(){return s(A)},get oldString(){return s(D)},get newString(){return s(H)}})}},V=P=>{{let A=U(()=>String(s(v).input.command||"")),D=U(()=>String(s(v).input.description||"")),H=U(()=>s(v).result?.content||""),Q=U(()=>s(v).result?.isError||!1);Wt(P,{get command(){return s(A)},get description(){return s(D)},get output(){return s(H)},get isError(){return s(Q)}})}},k=P=>{var A=Qt(),D=se(A),H=u(D),Q=u(H,!0);o(H);var Y=f(H,2);{var K=j=>{var Z=Ut(),le=u(Z);o(Z),S(()=>L(le,`from line ${s(v).input.offset??""}`)),_(j,Z)};J(Y,j=>{s(v).input.offset&&j(K)})}o(D);var X=f(D,2);{var h=j=>{var Z=Xt(),le=f(u(Z),2),Ue=u(le,!0);o(le),o(Z),S(()=>L(Ue,s(v).result.content)),_(j,Z)},R=j=>{{let Z=U(()=>s(v).result?.content||"No content");ue(j,{get content(){return s(Z)}})}};J(X,j=>{s(v).result?.isError?j(h):j(R,!1)})}S(()=>L(Q,s(v).input.file_path)),_(P,A)},c=P=>{var A=Zt(),D=se(A),H=u(D),Q=u(H,!0);o(H),o(D);var Y=f(D,2);{let K=U(()=>String(s(v).input.content||""));ue(Y,{get content(){return s(K)}})}S(()=>L(Q,s(v).input.file_path)),_(P,A)},W=P=>{var A=Kt(),D=se(A),H=u(D),Q=u(H);o(H);var Y=f(H,2);{var K=h=>{var R=Yt(),j=u(R);o(R),S(()=>L(j,`in ${s(v).input.path??""}`)),_(h,R)};J(Y,h=>{s(v).input.path&&h(K)})}o(D);var X=f(D,2);{let h=U(()=>s(v).result?.content||"No results");ue(X,{get content(){return s(h)}})}S(()=>L(Q,`Pattern: ${s(v).input.pattern??""}`)),_(P,A)},O=P=>{var A=er(),D=se(A),H=u(D),Q=u(H);o(H);var Y=f(H,2);{var K=h=>{var R=$t(),j=u(R);o(R),S(()=>L(j,`in ${s(v).input.path??""}`)),_(h,R)};J(Y,h=>{s(v).input.path&&h(K)})}o(D);var X=f(D,2);{let h=U(()=>s(v).result?.content||"No results");ue(X,{get content(){return s(h)}})}S(()=>L(Q,`/${s(v).input.pattern??""}/`)),_(P,A)},q=P=>{var A=ar(),D=u(A),H=f(u(D));o(D);var Q=f(D,2);{var Y=h=>{var R=tr(),j=u(R,!0);o(R),S(()=>L(j,s(v).input.prompt)),_(h,R)};J(Q,h=>{s(v).input.prompt&&h(Y)})}var K=f(Q,2);{var X=h=>{var R=rr(),j=f(u(R),2);ue(j,{get content(){return s(v).result.content}}),o(R),_(h,R)};J(K,h=>{s(v).result&&h(X)})}o(A),S(()=>L(H,` ${(s(v).input.description||"")??""}`)),_(P,A)},G=P=>{var A=ir(),D=f(u(A),2),H=u(D,!0);o(D);var Q=f(D,2);{var Y=X=>{var h=nr(),R=f(se(h),2),j=f(u(R),2),Z=u(j,!0);o(j),o(R),S(()=>L(Z,s(v).result.content)),_(X,h)},K=X=>{var h=sr(),R=f(se(h),2);ue(R,{get content(){return s(v).result.content}}),_(X,h)};J(Q,X=>{s(v).result?.isError?X(Y):s(v).result&&X(K,1)})}o(A),S(X=>L(H,X),[()=>JSON.stringify(s(v).input,null,2)]),_(P,A)};J(F,P=>{s(v).toolName==="Edit"?P(B):s(v).toolName==="Bash"?P(V,1):s(v).toolName==="Read"?P(k,2):s(v).toolName==="Write"?P(c,3):s(v).toolName==="Glob"?P(W,4):s(v).toolName==="Grep"?P(O,5):s(v).toolName==="Task"?P(q,6):P(G,!1)})}o(y),S(()=>L(z,`${s(v).toolName??""} `)),_(b,y)},I=b=>{var v=ur(),y=f(u(v),2),N=u(y,!0);o(y);var z=f(y,2);{var C=M=>{var F=lr(),B=u(F);o(F),S(V=>L(B,`Duration: ${V??""}s`),[()=>(e.event.data.durationMs/1e3).toFixed(1)]),_(M,F)};J(z,M=>{e.event.data.durationMs&&M(C)})}o(v),S(()=>L(N,e.event.data.subtype)),_(b,v)},T=b=>{var v=vr();_(b,v)};J(p,b=>{e.event.data.eventType==="user_message"?b(g):e.event.data.eventType==="assistant_text"?b(d,1):e.event.data.eventType==="thinking"?b(m,2):e.event.data.eventType==="tool_call"?b(w,3):e.event.data.eventType==="system"?b(I,4):e.event.data.eventType==="compact_boundary"&&b(T,5)})}o(x),_(i,x)};J(a,i=>{e.event?i(n,!1):i(l)})}_(t,r),ne()}var dr=E("<button> </button>"),fr=E("<option> </option>"),pr=E('<div class="playback-controls flex items-center gap-3"><button class="text-surface-400 hover:text-surface-200 disabled:text-surface-700 disabled:cursor-not-allowed transition-colors p-1 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center" title="Previous (Left Arrow)">◀</button> <button class="text-surface-200 hover:text-white transition-colors p-1 text-lg min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center" title="Play/Pause (Space)"><!></button> <button class="text-surface-400 hover:text-surface-200 disabled:text-surface-700 disabled:cursor-not-allowed transition-colors p-1 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center" title="Next (Right Arrow)">▶</button> <button class="flex-1 h-1.5 bg-surface-800 rounded-full relative cursor-pointer group" aria-label="Seek to position"><div class="absolute inset-y-0 left-0 bg-surface-500 group-hover:bg-surface-400 rounded-full transition-all"></div> <div class="absolute top-1/2 -translate-y-1/2 w-3 h-3 bg-surface-300 rounded-full opacity-0 group-hover:opacity-100 transition-opacity"></div></button> <span class="counter text-surface-500 text-xs tabular-nums min-w-[4rem] text-right svelte-167mial"><span class="counter-full svelte-167mial"> </span> <span class="counter-short hidden svelte-167mial"> </span></span> <div class="speed-buttons flex items-center gap-1 svelte-167mial"></div> <div class="speed-select hidden svelte-167mial"><select class="bg-surface-800 border border-surface-700 rounded text-xs text-surface-300 px-1.5 py-1 min-h-[44px]"></select></div></div>');function mr(t,e){ae(e,!0);let r=oe(e,"currentIndex",3,0),a=oe(e,"totalEvents",3,0),l=oe(e,"isPlaying",3,!1),n=oe(e,"speed",3,1);const i=[1,2,4,8];function x(O){const G=O.currentTarget.getBoundingClientRect(),P=(O.clientX-G.left)/G.width,A=Math.round(P*(a()-1));e.onseek(Math.max(0,Math.min(a()-1,A)))}let p=U(()=>a()>1?r()/(a()-1)*100:0);var g=pr(),d=u(g);d.__click=function(...O){e.onprev?.apply(this,O)};var m=f(d,2);m.__click=function(...O){e.ontoggleplay?.apply(this,O)};var w=u(m);{var I=O=>{var q=ce("❚❚");_(O,q)},T=O=>{var q=ce("▶");_(O,q)};J(w,O=>{l()?O(I):O(T,!1)})}o(m);var b=f(m,2);b.__click=function(...O){e.onnext?.apply(this,O)};var v=f(b,2);v.__click=x;var y=u(v),N=f(y,2);o(v);var z=f(v,2),C=u(z),M=u(C);o(C);var F=f(C,2),B=u(F);o(F),o(z);var V=f(z,2);de(V,21,()=>i,xe,(O,q)=>{var G=dr();G.__click=()=>e.onspeedchange(s(q));var P=u(G);o(G),S(()=>{te(G,1,`text-xs px-1.5 py-0.5 rounded transition-colors
|
|
27
|
+
${n()===s(q)?"bg-surface-700 text-surface-200":"text-surface-500 hover:text-surface-300"}`),L(P,`${s(q)??""}x`)}),_(O,G)}),o(V);var k=f(V,2),c=u(k);c.__change=O=>e.onspeedchange(Number(O.target.value)),de(c,21,()=>i,xe,(O,q)=>{var G=fr(),P=u(G);o(G);var A={};S(()=>{L(P,`${s(q)??""}x`),A!==(A=s(q))&&(G.value=(G.__value=s(q))??"")}),_(O,G)}),o(c);var W;vt(c),o(k),o(g),S(()=>{d.disabled=r()<=0,b.disabled=r()>=a()-1,ke(y,`width: ${s(p)??""}%`),ke(N,`left: ${s(p)??""}%`),L(M,`${r()+1} / ${a()??""}`),L(B,`${r()+1}/${a()??""}`),W!==(W=n())&&(c.value=(c.__value=n())??"",Ve(c,n()))}),_(t,g),ne()}be(["click","change"]);var xr=E('<span class="text-[10px] text-surface-600">included</span>'),gr=E('<div class="stats-bar-container" style="container-type: inline-size;"><div class="stats-bar flex items-center gap-4 text-xs text-surface-400 flex-wrap svelte-1cc6v80"><div class="flex items-center gap-1.5"><span class="text-surface-500">Model</span> <span> </span></div> <span class="stats-sep text-surface-700 svelte-1cc6v80">|</span> <div class="flex items-center gap-1.5"><span class="text-surface-500">Duration</span> <span class="text-surface-200"> </span></div> <span class="stats-sep text-surface-700 svelte-1cc6v80">|</span> <div class="flex items-center gap-1.5"><span class="text-surface-500">Tools</span> <span class="text-cyan-300"> </span></div> <span class="stats-sep text-surface-700 svelte-1cc6v80">|</span> <div class="flex items-center gap-1.5"><span class="text-surface-500">Tokens</span> <span><span class="text-amber-300"> </span> / <span class="text-blue-300"> </span></span></div> <span class="stats-sep text-surface-700 svelte-1cc6v80">|</span> <div class="flex items-center gap-1.5"><span class="text-surface-500">Cost</span> <span> </span> <!></div></div></div>');function hr(t,e){ae(e,!0);function r(c){return c.includes("opus")?"text-purple-300":c.includes("sonnet")?"text-blue-300":c.includes("haiku")?"text-green-300":"text-surface-200"}var a=gr(),l=u(a),n=u(l),i=f(u(n),2),x=u(i,!0);o(i),o(n);var p=f(n,4),g=f(u(p),2),d=u(g,!0);o(g),o(p);var m=f(p,4),w=f(u(m),2),I=u(w,!0);o(w),o(m);var T=f(m,4),b=f(u(T),2),v=u(b),y=u(v);o(v);var N=f(v,2),z=u(N);o(N),o(b),o(T);var C=f(T,4),M=f(u(C),2),F=u(M,!0);o(M);var B=f(M,2);{var V=c=>{var W=xr();_(c,W)},k=U(()=>pe());J(B,c=>{s(k)&&c(V)})}o(C),o(l),o(a),S((c,W,O,q,G,P,A,D)=>{te(i,1,c,"svelte-1cc6v80"),L(x,W),L(d,O),L(I,e.summary.toolCallCount),L(y,`${q??""} in`),L(z,`${G??""} out`),Je(C,"title",P),te(M,1,A),L(F,D)},[()=>r(e.summary.model),()=>at(e.summary.model),()=>nt(e.summary.startedAt,e.summary.lastActiveAt),()=>De(e.summary.inputTokens),()=>De(e.summary.outputTokens),()=>pe()?`Estimated API cost — included in your ${lt[ut()]} subscription`:"Estimated API cost",()=>pe()?"text-surface-500":"text-emerald-300",()=>st(e.summary.estimatedCost,pe())]),_(t,a),ne()}var br=E('<div class="h-full overflow-y-auto p-3"><!></div>'),_r=E('<div class="h-full overflow-hidden flex flex-col"><button class="px-3 py-2 text-xs text-surface-500 hover:text-blue-400 transition-colors text-left sm:hidden">← Back to timeline</button> <div class="flex-1 overflow-hidden"><!></div></div>'),yr=E('<div class="h-[calc(100vh-3.5rem-2px)] flex flex-col"><div class="border-b border-surface-800 bg-surface-900/50 px-3 sm:px-4 py-2 space-y-2"><div class="flex items-center gap-3"><a href="/" class="text-surface-500 hover:text-blue-400 transition-colors text-xs">← Sessions</a> <span class="text-surface-700">|</span> <h1 class="text-surface-100 text-sm font-medium truncate"> </h1> <span class="text-surface-600 text-xs truncate hidden sm:inline"> </span></div> <!> <!></div> <div class="mobile-tabs flex border-b border-surface-800 lg:hidden"><button>Timeline</button> <button>Details</button></div> <div class="desktop-layout flex-1 hidden lg:flex overflow-hidden"><div class="w-[400px] xl:w-[400px] lg:w-[280px] min-w-[240px] border-r border-surface-800 overflow-y-auto p-3"><!></div> <div class="flex-1 overflow-hidden"><!></div></div> <div class="mobile-layout flex-1 lg:hidden overflow-hidden"><!></div></div>');function Ir(t,e){ae(e,!0);let r=ie(0),a=ie(!1),l=ie(1),n=null,i=ie(void 0),x=ie("timeline"),p=U(()=>e.data.timeline.events[s(r)]||null);function g(h){h<0||h>=e.data.timeline.events.length||($(r,h,!0),s(i)?.scrollToEvent(h),$(x,"details"))}function d(){g(s(r)-1)}function m(){if(s(r)>=e.data.timeline.events.length-1){T();return}g(s(r)+1)}function w(){s(a)?T():I()}function I(){s(r)>=e.data.timeline.events.length-1&&$(r,0),$(a,!0),n=setInterval(()=>{if(s(r)>=e.data.timeline.events.length-1){T();return}m()},1e3/s(l))}function T(){$(a,!1),n&&(clearInterval(n),n=null)}function b(h){$(l,h,!0),s(a)&&(T(),I())}function v(h){if(!(h.target instanceof HTMLInputElement||h.target instanceof HTMLTextAreaElement))switch(h.key){case"ArrowLeft":h.preventDefault(),d();break;case"ArrowRight":h.preventDefault(),m();break;case" ":h.preventDefault(),w();break}}function y(){$(x,"timeline")}var N=yr();Qe("keydown",et,v),it("y8uck8",h=>{tt(R=>{rt.title=`${R??""} — Agent Replay`},[()=>e.data.timeline.summary.slug||e.data.timeline.summary.sessionId.slice(0,8)])});var z=u(N),C=u(z),M=f(u(C),4),F=u(M,!0);o(M);var B=f(M,2),V=u(B,!0);o(B),o(C);var k=f(C,2);hr(k,{get summary(){return e.data.timeline.summary}});var c=f(k,2);mr(c,{get currentIndex(){return s(r)},get totalEvents(){return e.data.timeline.events.length},get isPlaying(){return s(a)},get speed(){return s(l)},onprev:d,onnext:m,ontoggleplay:w,onspeedchange:b,onseek:g}),o(z);var W=f(z,2),O=u(W);O.__click=()=>$(x,"timeline");var q=f(O,2);q.__click=()=>$(x,"details"),o(W);var G=f(W,2),P=u(G),A=u(P);Te(ze(A,{get events(){return e.data.timeline.events},get selectedIndex(){return s(r)},onselect:g}),h=>$(i,h,!0),()=>s(i)),o(P);var D=f(P,2),H=u(D);He(H,{get event(){return s(p)}}),o(D),o(G);var Q=f(G,2),Y=u(Q);{var K=h=>{var R=br(),j=u(R);Te(ze(j,{get events(){return e.data.timeline.events},get selectedIndex(){return s(r)},onselect:g}),Z=>$(i,Z,!0),()=>s(i)),o(R),_(h,R)},X=h=>{var R=_r(),j=u(R);j.__click=y;var Z=f(j,2),le=u(Z);He(le,{get event(){return s(p)}}),o(Z),o(R),_(h,R)};J(Y,h=>{s(x)==="timeline"?h(K):h(X,!1)})}o(Q),o(N),S(h=>{L(F,h),L(V,e.data.timeline.summary.project),te(O,1,`flex-1 px-4 py-2.5 text-xs font-medium transition-colors
|
|
28
|
+
${s(x)==="timeline"?"text-surface-100 border-b-2 border-blue-500":"text-surface-500 hover:text-surface-300"}`),te(q,1,`flex-1 px-4 py-2.5 text-xs font-medium transition-colors
|
|
29
|
+
${s(x)==="details"?"text-surface-100 border-b-2 border-blue-500":"text-surface-500 hover:text-surface-300"}`)},[()=>e.data.timeline.summary.slug||e.data.timeline.summary.sessionId.slice(0,8)]),_(t,N),ne()}be(["click"]);export{Ir as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"1771226941231"}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g" x1="0" y1="0" x2="0" y2="1">
|
|
4
|
+
<stop offset="0%" stop-color="#67e8f9"/>
|
|
5
|
+
<stop offset="100%" stop-color="#818cf8"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<path d="M16 2C9.373 2 4 7.373 4 14v14l3-3 3 3 3-3 3 3 3-3 3 3 3-3 3 3V14c0-6.627-5.373-12-12-12z" fill="url(#g)"/>
|
|
9
|
+
<circle cx="12" cy="14" r="2.5" fill="#0f172a"/>
|
|
10
|
+
<circle cx="20" cy="14" r="2.5" fill="#0f172a"/>
|
|
11
|
+
<circle cx="13" cy="13.2" r="0.8" fill="#fff"/>
|
|
12
|
+
<circle cx="21" cy="13.2" r="0.8" fill="#fff"/>
|
|
13
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/build/env.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
|
|
3
|
+
/* global "" */
|
|
4
|
+
|
|
5
|
+
const expected = new Set([
|
|
6
|
+
'SOCKET_PATH',
|
|
7
|
+
'HOST',
|
|
8
|
+
'PORT',
|
|
9
|
+
'ORIGIN',
|
|
10
|
+
'XFF_DEPTH',
|
|
11
|
+
'ADDRESS_HEADER',
|
|
12
|
+
'PROTOCOL_HEADER',
|
|
13
|
+
'HOST_HEADER',
|
|
14
|
+
'PORT_HEADER',
|
|
15
|
+
'BODY_SIZE_LIMIT',
|
|
16
|
+
'SHUTDOWN_TIMEOUT',
|
|
17
|
+
'IDLE_TIMEOUT',
|
|
18
|
+
'KEEP_ALIVE_TIMEOUT',
|
|
19
|
+
'HEADERS_TIMEOUT'
|
|
20
|
+
]);
|
|
21
|
+
|
|
22
|
+
const expected_unprefixed = new Set(['LISTEN_PID', 'LISTEN_FDS']);
|
|
23
|
+
|
|
24
|
+
if ("") {
|
|
25
|
+
for (const name in process.env) {
|
|
26
|
+
if (name.startsWith("")) {
|
|
27
|
+
const unprefixed = name.slice("".length);
|
|
28
|
+
if (!expected.has(unprefixed)) {
|
|
29
|
+
throw new Error(
|
|
30
|
+
`You should change envPrefix (${""}) to avoid conflicts with existing environment variables — unexpectedly saw ${name}`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @param {string} name
|
|
39
|
+
* @param {any} fallback
|
|
40
|
+
*/
|
|
41
|
+
function env(name, fallback) {
|
|
42
|
+
const prefix = expected_unprefixed.has(name) ? '' : "";
|
|
43
|
+
const prefixed = prefix + name;
|
|
44
|
+
return prefixed in process.env ? process.env[prefixed] : fallback;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const integer_regexp = /^\d+$/;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Throw a consistently-structured parsing error for environment variables.
|
|
51
|
+
* @param {string} name
|
|
52
|
+
* @param {any} value
|
|
53
|
+
* @param {string} description
|
|
54
|
+
* @returns {never}
|
|
55
|
+
*/
|
|
56
|
+
function parsing_error(name, value, description) {
|
|
57
|
+
throw new Error(
|
|
58
|
+
`Invalid value for environment variable ${name}: ${JSON.stringify(value)} (${description})`
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Check the environment for a timeout value (non-negative integer) in seconds.
|
|
64
|
+
* @param {string} name
|
|
65
|
+
* @param {number} [fallback]
|
|
66
|
+
* @returns {number | undefined}
|
|
67
|
+
*/
|
|
68
|
+
function timeout_env(name, fallback) {
|
|
69
|
+
const raw = env(name, fallback);
|
|
70
|
+
if (!raw) {
|
|
71
|
+
return fallback;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (!integer_regexp.test(raw)) {
|
|
75
|
+
parsing_error(name, raw, 'should be a non-negative integer');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const parsed = Number.parseInt(raw, 10);
|
|
79
|
+
|
|
80
|
+
// We don't technically need to check `Number.isNaN` because the value already passed the regexp test.
|
|
81
|
+
// However, just in case there's some new codepath introduced somewhere down the line, it's probably good
|
|
82
|
+
// to stick this in here.
|
|
83
|
+
if (Number.isNaN(parsed)) {
|
|
84
|
+
parsing_error(name, raw, 'should be a non-negative integer');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (parsed < 0) {
|
|
88
|
+
parsing_error(name, raw, 'should be a non-negative integer');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return parsed;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { env, timeout_env };
|