llmxray 0.4.1 → 0.4.3

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 (49) hide show
  1. package/README.md +265 -265
  2. package/dist/assets/{AITrainingPage-VU-Nu5i0.js → AITrainingPage-DEU4UAR7.js} +1 -1
  3. package/dist/assets/AnalyticsPage-C7mNUAil.js +1 -0
  4. package/dist/assets/{BenchmarkPage-CQUTAU0c.js → BenchmarkPage-jiUqdHmg.js} +2 -2
  5. package/dist/assets/{ComparisonPage-DSO_-JZF.js → ComparisonPage-BoBWSObY.js} +3 -3
  6. package/dist/assets/CostDashboardPage-BKQDsZhx.js +1 -0
  7. package/dist/assets/{DashboardPage-lqAFJvOo.js → DashboardPage-CV8Ejgxv.js} +43 -43
  8. package/dist/assets/{EmbeddingsPage-DDBfFe8z.js → EmbeddingsPage-DXjVT4eU.js} +1 -1
  9. package/dist/assets/{GoogleCallbackPage-H8X6YDz9.js → GoogleCallbackPage-BUIkYpZv.js} +1 -1
  10. package/dist/assets/{JsonTreeNode-DQ_R5Euc.js → JsonTreeNode-C0UNUwZm.js} +1 -1
  11. package/dist/assets/{ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-CV939MUZ.js → ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-vQNvYFzV.js} +1 -1
  12. package/dist/assets/{RAGPage-DbZxWHmi.js → RAGPage-Dv4UDEyz.js} +1 -1
  13. package/dist/assets/SessionPage-B0fMQGSB.js +15 -0
  14. package/dist/assets/{SettingsPage-fmgr8zF9.js → SettingsPage-DTJP-4xU.js} +1 -1
  15. package/dist/assets/{StatusBadge.vue_vue_type_script_setup_true_lang-BbHpA7hy.js → StatusBadge.vue_vue_type_script_setup_true_lang-BiB0M6lv.js} +1 -1
  16. package/dist/assets/{StorageGauge.vue_vue_type_style_index_0_lang-Dd3BsCg6.js → StorageGauge.vue_vue_type_style_index_0_lang-DToi3R0q.js} +1 -1
  17. package/dist/assets/{SystemPage-Bd3SBsWI.js → SystemPage-BPK15qwe.js} +2 -2
  18. package/dist/assets/{TabBar.vue_vue_type_script_setup_true_lang-DlSEPHs6.js → TabBar.vue_vue_type_script_setup_true_lang-BtGCdMZK.js} +1 -1
  19. package/dist/assets/{TokenStreamDisplay.vue_vue_type_script_setup_true_lang-P-I0kJTd.js → TokenStreamDisplay.vue_vue_type_script_setup_true_lang-B6juPZsY.js} +1 -1
  20. package/dist/assets/{ToolWorkshopPage-D9doB8PF.js → ToolWorkshopPage-DmpoHHaD.js} +3 -3
  21. package/dist/assets/{agent-store-CuCtjbhV.js → agent-store-C6w1zV86.js} +1 -1
  22. package/dist/assets/{canvas-ai-db-DBUT-nyD.js → canvas-ai-db-BpqhUp6k.js} +1 -1
  23. package/dist/assets/{download-C3s6K1NW.js → download-pCIjWOn5.js} +1 -1
  24. package/dist/assets/{generate-service-DrRYe_-5.js → generate-service-DmtXqq_h.js} +1 -1
  25. package/dist/assets/{google-auth-store-B0WvuFWG.js → google-auth-store-Dgv2FihL.js} +1 -1
  26. package/dist/assets/index-534TcCbY.js +8 -0
  27. package/dist/assets/index-B72Sw9uL.css +1 -0
  28. package/dist/assets/{index-CUNpOQX9.js → index-ClITfJ3t.js} +1 -1
  29. package/dist/assets/{index-DoMyvAkM.js → index-DHuj6tKB.js} +1 -1
  30. package/dist/assets/{info-D-oZIv7P.js → info-Eg1tUw1x.js} +1 -1
  31. package/dist/assets/{metrics-store-DRErjO4D.js → metrics-store-7m97Sb7w.js} +1 -1
  32. package/dist/assets/{papaparse.min-DJzuA_ek.js → papaparse.min-3FeAYh4d.js} +1 -1
  33. package/dist/assets/{pencil-MO2uWQbW.js → pencil-CZp68oBU.js} +1 -1
  34. package/dist/assets/{rag-store-CBWvD3Va.js → rag-store-Bm0nxdec.js} +3 -3
  35. package/dist/assets/session-store-BQ0TF24S.js +1 -0
  36. package/dist/assets/{share-2-CnM5sBDm.js → share-2-CJJGZsZO.js} +1 -1
  37. package/dist/assets/{storage-store-cx_2Hb_J.js → storage-store-6qFwk_C5.js} +1 -1
  38. package/dist/assets/stream-handler-BM5egg14.js +4 -0
  39. package/dist/assets/{tool-workshop-store-Cb4eb3e4.js → tool-workshop-store-9_FKfdnT.js} +1 -1
  40. package/dist/assets/toolcall-store-C4Trr01T.js +1 -0
  41. package/dist/assets/{trash-2-Cj-NOsVZ.js → trash-2-DjfJXqVK.js} +1 -1
  42. package/dist/index.html +2 -2
  43. package/package.json +88 -88
  44. package/dist/assets/CostDashboardPage-BLzCE-bT.js +0 -1
  45. package/dist/assets/SessionPage-DvtFE4GS.js +0 -15
  46. package/dist/assets/index-Bawj8X2v.css +0 -1
  47. package/dist/assets/index-DYHBy1xj.js +0 -8
  48. package/dist/assets/stream-handler-CXdBM2li.js +0 -4
  49. package/dist/assets/toolcall-store-xQEQUq5f.js +0 -1
@@ -1,4 +1,4 @@
1
- import{aq as _s,aw as ln,ax as Us}from"./index-DYHBy1xj.js";function Ts(e,n){for(var t=0;t<n.length;t++){const r=n[t];if(typeof r!="string"&&!Array.isArray(r)){for(const c in r)if(c!=="default"&&!(c in e)){const i=Object.getOwnPropertyDescriptor(r,c);i&&Object.defineProperty(e,c,i.get?i:{enumerable:!0,get:()=>r[c]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Ve={},wi="1.13.8",ma=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},Zt=Array.prototype,Ei=Object.prototype,ba=typeof Symbol<"u"?Symbol.prototype:null,ws=Zt.push,ot=Zt.slice,et=Ei.toString,Es=Ei.hasOwnProperty,Ic=typeof ArrayBuffer<"u",As=typeof DataView<"u",Fs=Array.isArray,ya=Object.keys,Da=Object.create,va=Ic&&ArrayBuffer.isView,Cs=isNaN,Ss=isFinite,Lc=!{toString:null}.propertyIsEnumerable("toString"),xa=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Bs=Math.pow(2,53)-1;function qe(e,n){return n=n==null?e.length-1:+n,function(){for(var t=Math.max(arguments.length-n,0),r=Array(t),c=0;c<t;c++)r[c]=arguments[c+n];switch(n){case 0:return e.call(this,r);case 1:return e.call(this,arguments[0],r);case 2:return e.call(this,arguments[0],arguments[1],r)}var i=Array(n+1);for(c=0;c<n;c++)i[c]=arguments[c];return i[n]=r,e.apply(this,i)}}function pn(e){var n=typeof e;return n==="function"||n==="object"&&!!e}function Mc(e){return e===null}function Ai(e){return e===void 0}function Fi(e){return e===!0||e===!1||et.call(e)==="[object Boolean]"}function qc(e){return!!(e&&e.nodeType===1)}function Me(e){var n="[object "+e+"]";return function(t){return et.call(t)===n}}const Yt=Me("String"),Ci=Me("Number"),Pc=Me("Date"),zc=Me("RegExp"),jc=Me("Error"),Si=Me("Symbol"),Bi=Me("ArrayBuffer");var Oe=Me("Function"),ks=ma.document&&ma.document.childNodes;typeof/./!="function"&&typeof Int8Array!="object"&&typeof ks!="function"&&(Oe=function(e){return typeof e=="function"||!1});const Xc=Me("Object");var Vc=As&&(!/\[native code\]/.test(String(DataView))||Xc(new DataView(new ArrayBuffer(8)))),ki=typeof Map<"u"&&Xc(new Map),Ws=Me("DataView");function Rs(e){return e!=null&&Oe(e.getInt8)&&Bi(e.buffer)}const nt=Vc?Rs:Ws,gn=Fs||Me("Array");function mn(e,n){return e!=null&&Es.call(e,n)}var In=Me("Arguments");(function(){In(arguments)||(In=function(e){return mn(e,"callee")})})();function Hc(e){return!Si(e)&&Ss(e)&&!isNaN(parseFloat(e))}function Wi(e){return Ci(e)&&Cs(e)}function Ri(e){return function(){return e}}function Gc(e){return function(n){var t=e(n);return typeof t=="number"&&t>=0&&t<=Bs}}function Zc(e){return function(n){return n?.[e]}}const jt=Zc("byteLength"),Os=Gc(jt);var Ns=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function Is(e){return va?va(e)&&!nt(e):Os(e)&&Ns.test(et.call(e))}const Oi=Ic?Is:Ri(!1),Le=Zc("length");function Ls(e){for(var n={},t=e.length,r=0;r<t;++r)n[e[r]]=!0;return{contains:function(c){return n[c]===!0},push:function(c){return n[c]=!0,e.push(c)}}}function Yc(e,n){n=Ls(n);var t=xa.length,r=e.constructor,c=Oe(r)&&r.prototype||Ei,i="constructor";for(mn(e,i)&&!n.contains(i)&&n.push(i);t--;)i=xa[t],i in e&&e[i]!==c[i]&&!n.contains(i)&&n.push(i)}function We(e){if(!pn(e))return[];if(ya)return ya(e);var n=[];for(var t in e)mn(e,t)&&n.push(t);return Lc&&Yc(e,n),n}function $c(e){if(e==null)return!0;var n=Le(e);return typeof n=="number"&&(gn(e)||Yt(e)||In(e))?n===0:Le(We(e))===0}function Ni(e,n){var t=We(n),r=t.length;if(e==null)return!r;for(var c=Object(e),i=0;i<r;i++){var a=t[i];if(n[a]!==c[a]||!(a in c))return!1}return!0}function Fe(e){if(e instanceof Fe)return e;if(!(this instanceof Fe))return new Fe(e);this._wrapped=e}Fe.VERSION=wi;Fe.prototype.value=function(){return this._wrapped};Fe.prototype.valueOf=Fe.prototype.toJSON=Fe.prototype.value;Fe.prototype.toString=function(){return String(this._wrapped)};function _a(e){return new Uint8Array(e.buffer||e,e.byteOffset||0,jt(e))}var Ua="[object DataView]";function Kc(e,n){for(var t=[{a:e,b:n}],r=[],c=[];t.length;){var i=t.pop();if(i===!0){r.pop(),c.pop();continue}if(e=i.a,n=i.b,e===n){if(e!==0||1/e===1/n)continue;return!1}if(e==null||n==null)return!1;if(e!==e){if(n!==n)continue;return!1}var a=typeof e;if(a!=="function"&&a!=="object"&&typeof n!="object")return!1;e instanceof Fe&&(e=e._wrapped),n instanceof Fe&&(n=n._wrapped);var o=et.call(e);if(o!==et.call(n))return!1;if(Vc&&o=="[object Object]"&&nt(e)){if(!nt(n))return!1;o=Ua}switch(o){case"[object RegExp]":case"[object String]":if(""+e==""+n)continue;return!1;case"[object Number]":t.push({a:+e,b:+n});continue;case"[object Date]":case"[object Boolean]":if(+e==+n)continue;return!1;case"[object Symbol]":if(ba.valueOf.call(e)===ba.valueOf.call(n))continue;return!1;case"[object ArrayBuffer]":case Ua:t.push({a:_a(e),b:_a(n)});continue}var u=o==="[object Array]";if(!u&&Oi(e)){var h=jt(e);if(h!==jt(n))return!1;if(e.buffer===n.buffer&&e.byteOffset===n.byteOffset)continue;u=!0}if(!u){if(typeof e!="object"||typeof n!="object")return!1;var b=e.constructor,m=n.constructor;if(b!==m&&!(Oe(b)&&b instanceof b&&Oe(m)&&m instanceof m)&&"constructor"in e&&"constructor"in n)return!1}for(var g=r.length;g--;)if(r[g]===e){if(c[g]===n)break;return!1}if(!(g>=0))if(r.push(e),c.push(n),t.push(!0),u){if(g=e.length,g!==n.length)return!1;for(;g--;)t.push({a:e[g],b:n[g]})}else{var f=We(e),y;if(g=f.length,We(n).length!==g)return!1;for(;g--;){if(y=f[g],!mn(n,y))return!1;t.push({a:e[y],b:n[y]})}}}return!0}function qn(e){if(!pn(e))return[];var n=[];for(var t in e)n.push(t);return Lc&&Yc(e,n),n}function Ii(e){var n=Le(e);return function(t){if(t==null)return!1;var r=qn(t);if(Le(r))return!1;for(var c=0;c<n;c++)if(!Oe(t[e[c]]))return!1;return e!==eu||!Oe(t[Li])}}var Li="forEach",Qc="has",Mi=["clear","delete"],Jc=["get",Qc,"set"],Ms=Mi.concat(Li,Jc),eu=Mi.concat(Jc),qs=["add"].concat(Mi,Li,Qc);const nu=ki?Ii(Ms):Me("Map"),tu=ki?Ii(eu):Me("WeakMap"),ru=ki?Ii(qs):Me("Set"),iu=Me("WeakSet");function Fn(e){for(var n=We(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=e[n[c]];return r}function au(e){for(var n=We(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=[n[c],e[n[c]]];return r}function qi(e){for(var n={},t=We(e),r=0,c=t.length;r<c;r++)n[e[t[r]]]=t[r];return n}function tt(e){var n=[];for(var t in e)Oe(e[t])&&n.push(t);return n.sort()}function Pi(e,n){return function(t){var r=arguments.length;if(n&&(t=Object(t)),r<2||t==null)return t;for(var c=1;c<r;c++)for(var i=arguments[c],a=e(i),o=a.length,u=0;u<o;u++){var h=a[u];(!n||t[h]===void 0)&&(t[h]=i[h])}return t}}const zi=Pi(qn),Ln=Pi(We),ji=Pi(qn,!0);function Ps(){return function(){}}function ou(e){if(!pn(e))return{};if(Da)return Da(e);var n=Ps();n.prototype=e;var t=new n;return n.prototype=null,t}function cu(e,n){var t=ou(e);return n&&Ln(t,n),t}function uu(e){return pn(e)?gn(e)?e.slice():zi({},e):e}function su(e,n){return n(e),e}function Xi(e){return gn(e)?e:[e]}Fe.toPath=Xi;function ct(e){return Fe.toPath(e)}function Vi(e,n){for(var t=n.length,r=0;r<t;r++){if(e==null)return;e=e[n[r]]}return t?e:void 0}function Hi(e,n,t){var r=Vi(e,ct(n));return Ai(r)?t:r}function du(e,n){n=ct(n);for(var t=n.length,r=0;r<t;r++){var c=n[r];if(!mn(e,c))return!1;e=e[c]}return!!t}function $t(e){return e}function An(e){return e=Ln({},e),function(n){return Ni(n,e)}}function Kt(e){return e=ct(e),function(n){return Vi(n,e)}}function ut(e,n,t){if(n===void 0)return e;switch(t??3){case 1:return function(r){return e.call(n,r)};case 3:return function(r,c,i){return e.call(n,r,c,i)};case 4:return function(r,c,i,a){return e.call(n,r,c,i,a)}}return function(){return e.apply(n,arguments)}}function lu(e,n,t){return e==null?$t:Oe(e)?ut(e,n,t):pn(e)&&!gn(e)?An(e):Kt(e)}function Qt(e,n){return lu(e,n,1/0)}Fe.iteratee=Qt;function ze(e,n,t){return Fe.iteratee!==Qt?Fe.iteratee(e,n):lu(e,n,t)}function fu(e,n,t){n=ze(n,t);for(var r=We(e),c=r.length,i={},a=0;a<c;a++){var o=r[a];i[o]=n(e[o],o,e)}return i}function Gi(){}function hu(e){return e==null?Gi:function(n){return Hi(e,n)}}function pu(e,n,t){var r=Array(Math.max(0,e));n=ut(n,t,1);for(var c=0;c<e;c++)r[c]=n(c);return r}function Xt(e,n){return n==null&&(n=e,e=0),e+Math.floor(Math.random()*(n-e+1))}const Mn=Date.now||function(){return new Date().getTime()};function gu(e){var n=function(i){return e[i]},t="(?:"+We(e).join("|")+")",r=RegExp(t),c=RegExp(t,"g");return function(i){return i=i==null?"":""+i,r.test(i)?i.replace(c,n):i}}const mu={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},bu=gu(mu),zs=qi(mu),yu=gu(zs),Du=Fe.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var yr=/(.)^/,js={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Xs=/\\|'|\r|\n|\u2028|\u2029/g;function Vs(e){return"\\"+js[e]}var Hs=/^\s*(\w|\$)+\s*$/;function vu(e,n,t){!n&&t&&(n=t),n=ji({},n,Fe.templateSettings);var r=RegExp([(n.escape||yr).source,(n.interpolate||yr).source,(n.evaluate||yr).source].join("|")+"|$","g"),c=0,i="__p+='";e.replace(r,function(h,b,m,g,f){return i+=e.slice(c,f).replace(Xs,Vs),c=f+h.length,b?i+=`'+
1
+ import{aq as _s,aw as ln,ax as Us}from"./index-534TcCbY.js";function Ts(e,n){for(var t=0;t<n.length;t++){const r=n[t];if(typeof r!="string"&&!Array.isArray(r)){for(const c in r)if(c!=="default"&&!(c in e)){const i=Object.getOwnPropertyDescriptor(r,c);i&&Object.defineProperty(e,c,i.get?i:{enumerable:!0,get:()=>r[c]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Ve={},wi="1.13.8",ma=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},Zt=Array.prototype,Ei=Object.prototype,ba=typeof Symbol<"u"?Symbol.prototype:null,ws=Zt.push,ot=Zt.slice,et=Ei.toString,Es=Ei.hasOwnProperty,Ic=typeof ArrayBuffer<"u",As=typeof DataView<"u",Fs=Array.isArray,ya=Object.keys,Da=Object.create,va=Ic&&ArrayBuffer.isView,Cs=isNaN,Ss=isFinite,Lc=!{toString:null}.propertyIsEnumerable("toString"),xa=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Bs=Math.pow(2,53)-1;function qe(e,n){return n=n==null?e.length-1:+n,function(){for(var t=Math.max(arguments.length-n,0),r=Array(t),c=0;c<t;c++)r[c]=arguments[c+n];switch(n){case 0:return e.call(this,r);case 1:return e.call(this,arguments[0],r);case 2:return e.call(this,arguments[0],arguments[1],r)}var i=Array(n+1);for(c=0;c<n;c++)i[c]=arguments[c];return i[n]=r,e.apply(this,i)}}function pn(e){var n=typeof e;return n==="function"||n==="object"&&!!e}function Mc(e){return e===null}function Ai(e){return e===void 0}function Fi(e){return e===!0||e===!1||et.call(e)==="[object Boolean]"}function qc(e){return!!(e&&e.nodeType===1)}function Me(e){var n="[object "+e+"]";return function(t){return et.call(t)===n}}const Yt=Me("String"),Ci=Me("Number"),Pc=Me("Date"),zc=Me("RegExp"),jc=Me("Error"),Si=Me("Symbol"),Bi=Me("ArrayBuffer");var Oe=Me("Function"),ks=ma.document&&ma.document.childNodes;typeof/./!="function"&&typeof Int8Array!="object"&&typeof ks!="function"&&(Oe=function(e){return typeof e=="function"||!1});const Xc=Me("Object");var Vc=As&&(!/\[native code\]/.test(String(DataView))||Xc(new DataView(new ArrayBuffer(8)))),ki=typeof Map<"u"&&Xc(new Map),Ws=Me("DataView");function Rs(e){return e!=null&&Oe(e.getInt8)&&Bi(e.buffer)}const nt=Vc?Rs:Ws,gn=Fs||Me("Array");function mn(e,n){return e!=null&&Es.call(e,n)}var In=Me("Arguments");(function(){In(arguments)||(In=function(e){return mn(e,"callee")})})();function Hc(e){return!Si(e)&&Ss(e)&&!isNaN(parseFloat(e))}function Wi(e){return Ci(e)&&Cs(e)}function Ri(e){return function(){return e}}function Gc(e){return function(n){var t=e(n);return typeof t=="number"&&t>=0&&t<=Bs}}function Zc(e){return function(n){return n?.[e]}}const jt=Zc("byteLength"),Os=Gc(jt);var Ns=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function Is(e){return va?va(e)&&!nt(e):Os(e)&&Ns.test(et.call(e))}const Oi=Ic?Is:Ri(!1),Le=Zc("length");function Ls(e){for(var n={},t=e.length,r=0;r<t;++r)n[e[r]]=!0;return{contains:function(c){return n[c]===!0},push:function(c){return n[c]=!0,e.push(c)}}}function Yc(e,n){n=Ls(n);var t=xa.length,r=e.constructor,c=Oe(r)&&r.prototype||Ei,i="constructor";for(mn(e,i)&&!n.contains(i)&&n.push(i);t--;)i=xa[t],i in e&&e[i]!==c[i]&&!n.contains(i)&&n.push(i)}function We(e){if(!pn(e))return[];if(ya)return ya(e);var n=[];for(var t in e)mn(e,t)&&n.push(t);return Lc&&Yc(e,n),n}function $c(e){if(e==null)return!0;var n=Le(e);return typeof n=="number"&&(gn(e)||Yt(e)||In(e))?n===0:Le(We(e))===0}function Ni(e,n){var t=We(n),r=t.length;if(e==null)return!r;for(var c=Object(e),i=0;i<r;i++){var a=t[i];if(n[a]!==c[a]||!(a in c))return!1}return!0}function Fe(e){if(e instanceof Fe)return e;if(!(this instanceof Fe))return new Fe(e);this._wrapped=e}Fe.VERSION=wi;Fe.prototype.value=function(){return this._wrapped};Fe.prototype.valueOf=Fe.prototype.toJSON=Fe.prototype.value;Fe.prototype.toString=function(){return String(this._wrapped)};function _a(e){return new Uint8Array(e.buffer||e,e.byteOffset||0,jt(e))}var Ua="[object DataView]";function Kc(e,n){for(var t=[{a:e,b:n}],r=[],c=[];t.length;){var i=t.pop();if(i===!0){r.pop(),c.pop();continue}if(e=i.a,n=i.b,e===n){if(e!==0||1/e===1/n)continue;return!1}if(e==null||n==null)return!1;if(e!==e){if(n!==n)continue;return!1}var a=typeof e;if(a!=="function"&&a!=="object"&&typeof n!="object")return!1;e instanceof Fe&&(e=e._wrapped),n instanceof Fe&&(n=n._wrapped);var o=et.call(e);if(o!==et.call(n))return!1;if(Vc&&o=="[object Object]"&&nt(e)){if(!nt(n))return!1;o=Ua}switch(o){case"[object RegExp]":case"[object String]":if(""+e==""+n)continue;return!1;case"[object Number]":t.push({a:+e,b:+n});continue;case"[object Date]":case"[object Boolean]":if(+e==+n)continue;return!1;case"[object Symbol]":if(ba.valueOf.call(e)===ba.valueOf.call(n))continue;return!1;case"[object ArrayBuffer]":case Ua:t.push({a:_a(e),b:_a(n)});continue}var u=o==="[object Array]";if(!u&&Oi(e)){var h=jt(e);if(h!==jt(n))return!1;if(e.buffer===n.buffer&&e.byteOffset===n.byteOffset)continue;u=!0}if(!u){if(typeof e!="object"||typeof n!="object")return!1;var b=e.constructor,m=n.constructor;if(b!==m&&!(Oe(b)&&b instanceof b&&Oe(m)&&m instanceof m)&&"constructor"in e&&"constructor"in n)return!1}for(var g=r.length;g--;)if(r[g]===e){if(c[g]===n)break;return!1}if(!(g>=0))if(r.push(e),c.push(n),t.push(!0),u){if(g=e.length,g!==n.length)return!1;for(;g--;)t.push({a:e[g],b:n[g]})}else{var f=We(e),y;if(g=f.length,We(n).length!==g)return!1;for(;g--;){if(y=f[g],!mn(n,y))return!1;t.push({a:e[y],b:n[y]})}}}return!0}function qn(e){if(!pn(e))return[];var n=[];for(var t in e)n.push(t);return Lc&&Yc(e,n),n}function Ii(e){var n=Le(e);return function(t){if(t==null)return!1;var r=qn(t);if(Le(r))return!1;for(var c=0;c<n;c++)if(!Oe(t[e[c]]))return!1;return e!==eu||!Oe(t[Li])}}var Li="forEach",Qc="has",Mi=["clear","delete"],Jc=["get",Qc,"set"],Ms=Mi.concat(Li,Jc),eu=Mi.concat(Jc),qs=["add"].concat(Mi,Li,Qc);const nu=ki?Ii(Ms):Me("Map"),tu=ki?Ii(eu):Me("WeakMap"),ru=ki?Ii(qs):Me("Set"),iu=Me("WeakSet");function Fn(e){for(var n=We(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=e[n[c]];return r}function au(e){for(var n=We(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=[n[c],e[n[c]]];return r}function qi(e){for(var n={},t=We(e),r=0,c=t.length;r<c;r++)n[e[t[r]]]=t[r];return n}function tt(e){var n=[];for(var t in e)Oe(e[t])&&n.push(t);return n.sort()}function Pi(e,n){return function(t){var r=arguments.length;if(n&&(t=Object(t)),r<2||t==null)return t;for(var c=1;c<r;c++)for(var i=arguments[c],a=e(i),o=a.length,u=0;u<o;u++){var h=a[u];(!n||t[h]===void 0)&&(t[h]=i[h])}return t}}const zi=Pi(qn),Ln=Pi(We),ji=Pi(qn,!0);function Ps(){return function(){}}function ou(e){if(!pn(e))return{};if(Da)return Da(e);var n=Ps();n.prototype=e;var t=new n;return n.prototype=null,t}function cu(e,n){var t=ou(e);return n&&Ln(t,n),t}function uu(e){return pn(e)?gn(e)?e.slice():zi({},e):e}function su(e,n){return n(e),e}function Xi(e){return gn(e)?e:[e]}Fe.toPath=Xi;function ct(e){return Fe.toPath(e)}function Vi(e,n){for(var t=n.length,r=0;r<t;r++){if(e==null)return;e=e[n[r]]}return t?e:void 0}function Hi(e,n,t){var r=Vi(e,ct(n));return Ai(r)?t:r}function du(e,n){n=ct(n);for(var t=n.length,r=0;r<t;r++){var c=n[r];if(!mn(e,c))return!1;e=e[c]}return!!t}function $t(e){return e}function An(e){return e=Ln({},e),function(n){return Ni(n,e)}}function Kt(e){return e=ct(e),function(n){return Vi(n,e)}}function ut(e,n,t){if(n===void 0)return e;switch(t??3){case 1:return function(r){return e.call(n,r)};case 3:return function(r,c,i){return e.call(n,r,c,i)};case 4:return function(r,c,i,a){return e.call(n,r,c,i,a)}}return function(){return e.apply(n,arguments)}}function lu(e,n,t){return e==null?$t:Oe(e)?ut(e,n,t):pn(e)&&!gn(e)?An(e):Kt(e)}function Qt(e,n){return lu(e,n,1/0)}Fe.iteratee=Qt;function ze(e,n,t){return Fe.iteratee!==Qt?Fe.iteratee(e,n):lu(e,n,t)}function fu(e,n,t){n=ze(n,t);for(var r=We(e),c=r.length,i={},a=0;a<c;a++){var o=r[a];i[o]=n(e[o],o,e)}return i}function Gi(){}function hu(e){return e==null?Gi:function(n){return Hi(e,n)}}function pu(e,n,t){var r=Array(Math.max(0,e));n=ut(n,t,1);for(var c=0;c<e;c++)r[c]=n(c);return r}function Xt(e,n){return n==null&&(n=e,e=0),e+Math.floor(Math.random()*(n-e+1))}const Mn=Date.now||function(){return new Date().getTime()};function gu(e){var n=function(i){return e[i]},t="(?:"+We(e).join("|")+")",r=RegExp(t),c=RegExp(t,"g");return function(i){return i=i==null?"":""+i,r.test(i)?i.replace(c,n):i}}const mu={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},bu=gu(mu),zs=qi(mu),yu=gu(zs),Du=Fe.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var yr=/(.)^/,js={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Xs=/\\|'|\r|\n|\u2028|\u2029/g;function Vs(e){return"\\"+js[e]}var Hs=/^\s*(\w|\$)+\s*$/;function vu(e,n,t){!n&&t&&(n=t),n=ji({},n,Fe.templateSettings);var r=RegExp([(n.escape||yr).source,(n.interpolate||yr).source,(n.evaluate||yr).source].join("|")+"|$","g"),c=0,i="__p+='";e.replace(r,function(h,b,m,g,f){return i+=e.slice(c,f).replace(Xs,Vs),c=f+h.length,b?i+=`'+
2
2
  ((__t=(`+b+`))==null?'':_.escape(__t))+
3
3
  '`:m?i+=`'+
4
4
  ((__t=(`+m+`))==null?'':__t)+
@@ -1 +1 @@
1
- import{c}from"./index-DYHBy1xj.js";const o=c("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);export{o as I};
1
+ import{c}from"./index-534TcCbY.js";const o=c("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);export{o as I};
@@ -1 +1 @@
1
- import{d as T,r as i,a as f}from"./index-DYHBy1xj.js";const M=T("metrics",()=>{const s=i(new Map),a=i({totalSessions:0,avgTtftMs:0,avgTps:0,avgTotalDurationMs:0,totalTokensGenerated:0,totalPromptsEvaluated:0,modelsUsed:[]}),d=f(()=>[...s.value.values()].sort((t,e)=>t.startedAt-e.startedAt));function g(t){return s.value.get(t)??null}function m(t,e){s.value.set(t,e)}function v(){const t=[...s.value.values()];if(t.length===0)return;const e=new Set;let n=0,l=0,r=0,u=0,c=0;for(const o of t)e.add(o.model),n+=o.ttftMs,l+=o.tokensPerSecond,r+=o.totalDurationMs,u+=o.completionTokenCount,c+=o.promptTokenCount;a.value={totalSessions:t.length,avgTtftMs:n/t.length,avgTps:l/t.length,avgTotalDurationMs:r/t.length,totalTokensGenerated:u,totalPromptsEvaluated:c,modelsUsed:[...e]}}return{metricsBySession:s,aggregate:a,metricsHistory:d,getMetrics:g,recordMetrics:m,recalculateAggregate:v}});export{M as u};
1
+ import{d as T,r as i,a as f}from"./index-534TcCbY.js";const M=T("metrics",()=>{const s=i(new Map),a=i({totalSessions:0,avgTtftMs:0,avgTps:0,avgTotalDurationMs:0,totalTokensGenerated:0,totalPromptsEvaluated:0,modelsUsed:[]}),d=f(()=>[...s.value.values()].sort((t,e)=>t.startedAt-e.startedAt));function g(t){return s.value.get(t)??null}function m(t,e){s.value.set(t,e)}function v(){const t=[...s.value.values()];if(t.length===0)return;const e=new Set;let n=0,l=0,r=0,u=0,c=0;for(const o of t)e.add(o.model),n+=o.ttftMs,l+=o.tokensPerSecond,r+=o.totalDurationMs,u+=o.completionTokenCount,c+=o.promptTokenCount;a.value={totalSessions:t.length,avgTtftMs:n/t.length,avgTps:l/t.length,avgTotalDurationMs:r/t.length,totalTokensGenerated:u,totalPromptsEvaluated:c,modelsUsed:[...e]}}return{metricsBySession:s,aggregate:a,metricsHistory:d,getMetrics:g,recordMetrics:m,recalculateAggregate:v}});export{M as u};
@@ -1,4 +1,4 @@
1
- import{ax as ve}from"./index-DYHBy1xj.js";function be(G,ae){for(var Q=0;Q<ae.length;Q++){const m=ae[Q];if(typeof m!="string"&&!Array.isArray(m)){for(const M in m)if(M!=="default"&&!(M in G)){const B=Object.getOwnPropertyDescriptor(m,M);B&&Object.defineProperty(G,M,B.get?B:{enumerable:!0,get:()=>m[M]})}}}return Object.freeze(Object.defineProperty(G,Symbol.toStringTag,{value:"Module"}))}var se={exports:{}};var Ee=se.exports,ge;function we(){return ge||(ge=1,(function(G,ae){((Q,m)=>{G.exports=m()})(Ee,function Q(){var m=typeof self<"u"?self:typeof window<"u"?window:m!==void 0?m:{},M,B=!m.document&&!!m.postMessage,oe=m.IS_PAPA_WORKER||!1,te={},ye=0,u={};function K(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},(function(t){var r=he(t);r.chunkSize=parseInt(r.chunkSize),t.step||t.chunk||(r.chunkSize=null),this._handle=new le(r),(this._handle.streamer=this)._config=r}).call(this,e),this.parseChunk=function(t,r){var n=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<n){let l=this._config.newline;l||(i=this._config.quoteChar||'"',l=this._handle.guessLineEndings(t,i)),t=[...t.split(l).slice(n)].join(l)}this.isFirstChunk&&k(this._config.beforeFirstChunk)&&(i=this._config.beforeFirstChunk(t))!==void 0&&(t=i),this.isFirstChunk=!1,this._halted=!1;var n=this._partialLine+t,i=(this._partialLine="",this._handle.parse(n,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(t=i.meta.cursor,n=(this._finished||(this._partialLine=n.substring(t-this._baseIndex),this._baseIndex=t),i&&i.data&&(this._rowCount+=i.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),oe)m.postMessage({results:i,workerId:u.WORKER_ID,finished:n});else if(k(this._config.chunk)&&!r){if(this._config.chunk(i,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=i=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(i.data),this._completeResults.errors=this._completeResults.errors.concat(i.errors),this._completeResults.meta=i.meta),this._completed||!n||!k(this._config.complete)||i&&i.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),n||i&&i.meta.paused||this._nextChunk(),i}this._halted=!0},this._sendError=function(t){k(this._config.error)?this._config.error(t):oe&&this._config.error&&m.postMessage({workerId:u.WORKER_ID,error:t,finished:!1})}}function re(e){var t;(e=e||{}).chunkSize||(e.chunkSize=u.RemoteChunkSize),K.call(this,e),this._nextChunk=B?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(r){this._input=r,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),B||(t.onload=H(this._chunkLoaded,this),t.onerror=H(this._chunkError,this)),t.open(this._config.downloadRequestBody?"POST":"GET",this._input,!B),this._config.downloadRequestHeaders){var r,n=this._config.downloadRequestHeaders;for(r in n)t.setRequestHeader(r,n[r])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,t.setRequestHeader("Range","bytes="+this._start+"-"+i));try{t.send(this._config.downloadRequestBody)}catch(l){this._chunkError(l.message)}B&&t.status===0&&this._chunkError()}},this._chunkLoaded=function(){t.readyState===4&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(r=>(r=r.getResponseHeader("Content-Range"))!==null?parseInt(r.substring(r.lastIndexOf("/")+1)):-1)(t),this.parseChunk(t.responseText)))},this._chunkError=function(r){r=t.statusText||r,this._sendError(new Error(r))}}function ie(e){(e=e||{}).chunkSize||(e.chunkSize=u.LocalChunkSize),K.call(this,e);var t,r,n=typeof FileReader<"u";this.stream=function(i){this._input=i,r=i.slice||i.webkitSlice||i.mozSlice,n?((t=new FileReader).onload=H(this._chunkLoaded,this),t.onerror=H(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var i=this._input,l=(this._config.chunkSize&&(l=Math.min(this._start+this._config.chunkSize,this._input.size),i=r.call(i,this._start,l)),t.readAsText(i,this._config.encoding));n||this._chunkLoaded({target:{result:l}})},this._chunkLoaded=function(i){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(i.target.result)},this._chunkError=function(){this._sendError(t.error)}}function Y(e){var t;K.call(this,e=e||{}),this.stream=function(r){return t=r,this._nextChunk()},this._nextChunk=function(){var r,n;if(!this._finished)return r=this._config.chunkSize,t=r?(n=t.substring(0,r),t.substring(r)):(n=t,""),this._finished=!t,this.parseChunk(n)}}function ne(e){K.call(this,e=e||{});var t=[],r=!0,n=!1;this.pause=function(){K.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){K.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(i){this._input=i,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){n&&t.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=H(function(i){try{t.push(typeof i=="string"?i:i.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(l){this._streamError(l)}},this),this._streamError=H(function(i){this._streamCleanUp(),this._sendError(i)},this),this._streamEnd=H(function(){this._streamCleanUp(),n=!0,this._streamData("")},this),this._streamCleanUp=H(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function le(e){var t,r,n,i,l=Math.pow(2,53),S=-l,F=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,j=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,d=this,E=0,a=0,T=!1,h=!1,c=[],s={data:[],errors:[],meta:{}};function x(p){return e.skipEmptyLines==="greedy"?p.join("").trim()==="":p.length===1&&p[0].length===0}function O(){if(s&&n&&(z("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+u.DefaultDelimiter+"'"),n=!1),e.skipEmptyLines&&(s.data=s.data.filter(function(o){return!x(o)})),I()){let o=function(R,C){k(e.transformHeader)&&(R=e.transformHeader(R,C)),c.push(R)};if(s)if(Array.isArray(s.data[0])){for(var p=0;I()&&p<s.data.length;p++)s.data[p].forEach(o);s.data.splice(0,1)}else s.data.forEach(o)}function g(o,R){for(var C=e.header?{}:[],y=0;y<o.length;y++){var v=y,_=o[y],_=((P,f)=>(b=>(e.dynamicTypingFunction&&e.dynamicTyping[b]===void 0&&(e.dynamicTyping[b]=e.dynamicTypingFunction(b)),(e.dynamicTyping[b]||e.dynamicTyping)===!0))(P)?f==="true"||f==="TRUE"||f!=="false"&&f!=="FALSE"&&((b=>{if(F.test(b)&&(b=parseFloat(b),S<b&&b<l))return 1})(f)?parseFloat(f):j.test(f)?new Date(f):f===""?null:f):f)(v=e.header?y>=c.length?"__parsed_extra":c[y]:v,_=e.transform?e.transform(_,v):_);v==="__parsed_extra"?(C[v]=C[v]||[],C[v].push(_)):C[v]=_}return e.header&&(y>c.length?z("FieldMismatch","TooManyFields","Too many fields: expected "+c.length+" fields but parsed "+y,a+R):y<c.length&&z("FieldMismatch","TooFewFields","Too few fields: expected "+c.length+" fields but parsed "+y,a+R)),C}var w;s&&(e.header||e.dynamicTyping||e.transform)&&(w=1,!s.data.length||Array.isArray(s.data[0])?(s.data=s.data.map(g),w=s.data.length):s.data=g(s.data,0),e.header&&s.meta&&(s.meta.fields=c),a+=w)}function I(){return e.header&&c.length===0}function z(p,g,w,o){p={type:p,code:g,message:w},o!==void 0&&(p.row=o),s.errors.push(p)}k(e.step)&&(i=e.step,e.step=function(p){s=p,I()?O():(O(),s.data.length!==0&&(E+=p.data.length,e.preview&&E>e.preview?r.abort():(s.data=s.data[0],i(s,d))))}),this.parse=function(p,g,w){var o=e.quoteChar||'"',o=(e.newline||(e.newline=this.guessLineEndings(p,o)),n=!1,e.delimiter?k(e.delimiter)&&(e.delimiter=e.delimiter(p),s.meta.delimiter=e.delimiter):((o=((R,C,y,v,_)=>{var P,f,b,$;_=_||[","," ","|",";",u.RECORD_SEP,u.UNIT_SEP];for(var J=0;J<_.length;J++){for(var U,V=_[J],D=0,q=0,A=0,L=(b=void 0,new ue({comments:v,delimiter:V,newline:C,preview:10}).parse(R)),W=0;W<L.data.length;W++)y&&x(L.data[W])?A++:(U=L.data[W].length,q+=U,b===void 0?b=U:0<U&&(D+=Math.abs(U-b),b=U));0<L.data.length&&(q/=L.data.length-A),(f===void 0||D<=f)&&($===void 0||$<q)&&1.99<q&&(f=D,P=V,$=q)}return{successful:!!(e.delimiter=P),bestDelimiter:P}})(p,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=o.bestDelimiter:(n=!0,e.delimiter=u.DefaultDelimiter),s.meta.delimiter=e.delimiter),he(e));return e.preview&&e.header&&o.preview++,t=p,r=new ue(o),s=r.parse(t,g,w),O(),T?{meta:{paused:!0}}:s||{meta:{paused:!1}}},this.paused=function(){return T},this.pause=function(){T=!0,r.abort(),t=k(e.chunk)?"":t.substring(r.getCharIndex())},this.resume=function(){d.streamer._halted?(T=!1,d.streamer.parseChunk(t,!0)):setTimeout(d.resume,3)},this.aborted=function(){return h},this.abort=function(){h=!0,r.abort(),s.meta.aborted=!0,k(e.complete)&&e.complete(s),t=""},this.guessLineEndings=function(R,o){R=R.substring(0,1048576);var o=new RegExp(X(o)+"([^]*?)"+X(o),"gm"),w=(R=R.replace(o,"")).split("\r"),o=R.split(`
1
+ import{ax as ve}from"./index-534TcCbY.js";function be(G,ae){for(var Q=0;Q<ae.length;Q++){const m=ae[Q];if(typeof m!="string"&&!Array.isArray(m)){for(const M in m)if(M!=="default"&&!(M in G)){const B=Object.getOwnPropertyDescriptor(m,M);B&&Object.defineProperty(G,M,B.get?B:{enumerable:!0,get:()=>m[M]})}}}return Object.freeze(Object.defineProperty(G,Symbol.toStringTag,{value:"Module"}))}var se={exports:{}};var Ee=se.exports,ge;function we(){return ge||(ge=1,(function(G,ae){((Q,m)=>{G.exports=m()})(Ee,function Q(){var m=typeof self<"u"?self:typeof window<"u"?window:m!==void 0?m:{},M,B=!m.document&&!!m.postMessage,oe=m.IS_PAPA_WORKER||!1,te={},ye=0,u={};function K(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},(function(t){var r=he(t);r.chunkSize=parseInt(r.chunkSize),t.step||t.chunk||(r.chunkSize=null),this._handle=new le(r),(this._handle.streamer=this)._config=r}).call(this,e),this.parseChunk=function(t,r){var n=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<n){let l=this._config.newline;l||(i=this._config.quoteChar||'"',l=this._handle.guessLineEndings(t,i)),t=[...t.split(l).slice(n)].join(l)}this.isFirstChunk&&k(this._config.beforeFirstChunk)&&(i=this._config.beforeFirstChunk(t))!==void 0&&(t=i),this.isFirstChunk=!1,this._halted=!1;var n=this._partialLine+t,i=(this._partialLine="",this._handle.parse(n,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(t=i.meta.cursor,n=(this._finished||(this._partialLine=n.substring(t-this._baseIndex),this._baseIndex=t),i&&i.data&&(this._rowCount+=i.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),oe)m.postMessage({results:i,workerId:u.WORKER_ID,finished:n});else if(k(this._config.chunk)&&!r){if(this._config.chunk(i,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=i=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(i.data),this._completeResults.errors=this._completeResults.errors.concat(i.errors),this._completeResults.meta=i.meta),this._completed||!n||!k(this._config.complete)||i&&i.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),n||i&&i.meta.paused||this._nextChunk(),i}this._halted=!0},this._sendError=function(t){k(this._config.error)?this._config.error(t):oe&&this._config.error&&m.postMessage({workerId:u.WORKER_ID,error:t,finished:!1})}}function re(e){var t;(e=e||{}).chunkSize||(e.chunkSize=u.RemoteChunkSize),K.call(this,e),this._nextChunk=B?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(r){this._input=r,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),B||(t.onload=H(this._chunkLoaded,this),t.onerror=H(this._chunkError,this)),t.open(this._config.downloadRequestBody?"POST":"GET",this._input,!B),this._config.downloadRequestHeaders){var r,n=this._config.downloadRequestHeaders;for(r in n)t.setRequestHeader(r,n[r])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,t.setRequestHeader("Range","bytes="+this._start+"-"+i));try{t.send(this._config.downloadRequestBody)}catch(l){this._chunkError(l.message)}B&&t.status===0&&this._chunkError()}},this._chunkLoaded=function(){t.readyState===4&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(r=>(r=r.getResponseHeader("Content-Range"))!==null?parseInt(r.substring(r.lastIndexOf("/")+1)):-1)(t),this.parseChunk(t.responseText)))},this._chunkError=function(r){r=t.statusText||r,this._sendError(new Error(r))}}function ie(e){(e=e||{}).chunkSize||(e.chunkSize=u.LocalChunkSize),K.call(this,e);var t,r,n=typeof FileReader<"u";this.stream=function(i){this._input=i,r=i.slice||i.webkitSlice||i.mozSlice,n?((t=new FileReader).onload=H(this._chunkLoaded,this),t.onerror=H(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var i=this._input,l=(this._config.chunkSize&&(l=Math.min(this._start+this._config.chunkSize,this._input.size),i=r.call(i,this._start,l)),t.readAsText(i,this._config.encoding));n||this._chunkLoaded({target:{result:l}})},this._chunkLoaded=function(i){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(i.target.result)},this._chunkError=function(){this._sendError(t.error)}}function Y(e){var t;K.call(this,e=e||{}),this.stream=function(r){return t=r,this._nextChunk()},this._nextChunk=function(){var r,n;if(!this._finished)return r=this._config.chunkSize,t=r?(n=t.substring(0,r),t.substring(r)):(n=t,""),this._finished=!t,this.parseChunk(n)}}function ne(e){K.call(this,e=e||{});var t=[],r=!0,n=!1;this.pause=function(){K.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){K.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(i){this._input=i,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){n&&t.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=H(function(i){try{t.push(typeof i=="string"?i:i.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(l){this._streamError(l)}},this),this._streamError=H(function(i){this._streamCleanUp(),this._sendError(i)},this),this._streamEnd=H(function(){this._streamCleanUp(),n=!0,this._streamData("")},this),this._streamCleanUp=H(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function le(e){var t,r,n,i,l=Math.pow(2,53),S=-l,F=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,j=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,d=this,E=0,a=0,T=!1,h=!1,c=[],s={data:[],errors:[],meta:{}};function x(p){return e.skipEmptyLines==="greedy"?p.join("").trim()==="":p.length===1&&p[0].length===0}function O(){if(s&&n&&(z("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+u.DefaultDelimiter+"'"),n=!1),e.skipEmptyLines&&(s.data=s.data.filter(function(o){return!x(o)})),I()){let o=function(R,C){k(e.transformHeader)&&(R=e.transformHeader(R,C)),c.push(R)};if(s)if(Array.isArray(s.data[0])){for(var p=0;I()&&p<s.data.length;p++)s.data[p].forEach(o);s.data.splice(0,1)}else s.data.forEach(o)}function g(o,R){for(var C=e.header?{}:[],y=0;y<o.length;y++){var v=y,_=o[y],_=((P,f)=>(b=>(e.dynamicTypingFunction&&e.dynamicTyping[b]===void 0&&(e.dynamicTyping[b]=e.dynamicTypingFunction(b)),(e.dynamicTyping[b]||e.dynamicTyping)===!0))(P)?f==="true"||f==="TRUE"||f!=="false"&&f!=="FALSE"&&((b=>{if(F.test(b)&&(b=parseFloat(b),S<b&&b<l))return 1})(f)?parseFloat(f):j.test(f)?new Date(f):f===""?null:f):f)(v=e.header?y>=c.length?"__parsed_extra":c[y]:v,_=e.transform?e.transform(_,v):_);v==="__parsed_extra"?(C[v]=C[v]||[],C[v].push(_)):C[v]=_}return e.header&&(y>c.length?z("FieldMismatch","TooManyFields","Too many fields: expected "+c.length+" fields but parsed "+y,a+R):y<c.length&&z("FieldMismatch","TooFewFields","Too few fields: expected "+c.length+" fields but parsed "+y,a+R)),C}var w;s&&(e.header||e.dynamicTyping||e.transform)&&(w=1,!s.data.length||Array.isArray(s.data[0])?(s.data=s.data.map(g),w=s.data.length):s.data=g(s.data,0),e.header&&s.meta&&(s.meta.fields=c),a+=w)}function I(){return e.header&&c.length===0}function z(p,g,w,o){p={type:p,code:g,message:w},o!==void 0&&(p.row=o),s.errors.push(p)}k(e.step)&&(i=e.step,e.step=function(p){s=p,I()?O():(O(),s.data.length!==0&&(E+=p.data.length,e.preview&&E>e.preview?r.abort():(s.data=s.data[0],i(s,d))))}),this.parse=function(p,g,w){var o=e.quoteChar||'"',o=(e.newline||(e.newline=this.guessLineEndings(p,o)),n=!1,e.delimiter?k(e.delimiter)&&(e.delimiter=e.delimiter(p),s.meta.delimiter=e.delimiter):((o=((R,C,y,v,_)=>{var P,f,b,$;_=_||[","," ","|",";",u.RECORD_SEP,u.UNIT_SEP];for(var J=0;J<_.length;J++){for(var U,V=_[J],D=0,q=0,A=0,L=(b=void 0,new ue({comments:v,delimiter:V,newline:C,preview:10}).parse(R)),W=0;W<L.data.length;W++)y&&x(L.data[W])?A++:(U=L.data[W].length,q+=U,b===void 0?b=U:0<U&&(D+=Math.abs(U-b),b=U));0<L.data.length&&(q/=L.data.length-A),(f===void 0||D<=f)&&($===void 0||$<q)&&1.99<q&&(f=D,P=V,$=q)}return{successful:!!(e.delimiter=P),bestDelimiter:P}})(p,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=o.bestDelimiter:(n=!0,e.delimiter=u.DefaultDelimiter),s.meta.delimiter=e.delimiter),he(e));return e.preview&&e.header&&o.preview++,t=p,r=new ue(o),s=r.parse(t,g,w),O(),T?{meta:{paused:!0}}:s||{meta:{paused:!1}}},this.paused=function(){return T},this.pause=function(){T=!0,r.abort(),t=k(e.chunk)?"":t.substring(r.getCharIndex())},this.resume=function(){d.streamer._halted?(T=!1,d.streamer.parseChunk(t,!0)):setTimeout(d.resume,3)},this.aborted=function(){return h},this.abort=function(){h=!0,r.abort(),s.meta.aborted=!0,k(e.complete)&&e.complete(s),t=""},this.guessLineEndings=function(R,o){R=R.substring(0,1048576);var o=new RegExp(X(o)+"([^]*?)"+X(o),"gm"),w=(R=R.replace(o,"")).split("\r"),o=R.split(`
2
2
  `),R=1<o.length&&o[0].length<w[0].length;if(w.length===1||R)return`
3
3
  `;for(var C=0,y=0;y<w.length;y++)w[y][0]===`
4
4
  `&&C++;return C>=w.length/2?`\r
@@ -1 +1 @@
1
- import{c as a}from"./index-DYHBy1xj.js";const c=a("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);export{c as P};
1
+ import{c as a}from"./index-534TcCbY.js";const c=a("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);export{c as P};
@@ -1,7 +1,7 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DoMyvAkM.js","assets/index-DYHBy1xj.js","assets/index-Bawj8X2v.css","assets/papaparse.min-DJzuA_ek.js"])))=>i.map(i=>d[i]);
2
- import{_ as y,n as x,o as _,d as $,r as f,a as b}from"./index-DYHBy1xj.js";import{vectorDB as w}from"./vector-db-ChAzHl5A.js";async function I(e,o){switch(o){case"pdf":return O(e);case"docx":return j(e);case"csv":return R(e);case"txt":case"md":return e.text();default:throw new Error(`Unsupported format: ${o}`)}}async function O(e){const o=await y(()=>import("./pdf-vkbVaD7t.js"),[]);o.GlobalWorkerOptions.workerSrc=new URL("/assets/pdf.worker-CliDBb4N.mjs",import.meta.url).toString();const c=await e.arrayBuffer(),n=await o.getDocument({data:c}).promise,r=[];for(let a=1;a<=n.numPages;a++){const l=(await(await n.getPage(a)).getTextContent()).items.map(s=>"str"in s?s.str:"").join(" ");r.push(l)}return r.join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DHuj6tKB.js","assets/index-534TcCbY.js","assets/index-B72Sw9uL.css","assets/papaparse.min-3FeAYh4d.js"])))=>i.map(i=>d[i]);
2
+ import{_ as y,n as x,o as _,d as $,r as f,a as b}from"./index-534TcCbY.js";import{vectorDB as w}from"./vector-db-ChAzHl5A.js";async function I(e,o){switch(o){case"pdf":return O(e);case"docx":return j(e);case"csv":return R(e);case"txt":case"md":return e.text();default:throw new Error(`Unsupported format: ${o}`)}}async function O(e){const o=await y(()=>import("./pdf-vkbVaD7t.js"),[]);o.GlobalWorkerOptions.workerSrc=new URL("/assets/pdf.worker-CliDBb4N.mjs",import.meta.url).toString();const c=await e.arrayBuffer(),n=await o.getDocument({data:c}).promise,r=[];for(let a=1;a<=n.numPages;a++){const l=(await(await n.getPage(a)).getTextContent()).items.map(s=>"str"in s?s.str:"").join(" ");r.push(l)}return r.join(`
3
3
 
4
- `)}async function j(e){const o=await y(()=>import("./index-DoMyvAkM.js").then(r=>r.i),__vite__mapDeps([0,1,2])),c=await e.arrayBuffer();return(await o.extractRawText({arrayBuffer:c})).value}async function R(e){const o=await y(()=>import("./papaparse.min-DJzuA_ek.js").then(n=>n.p),__vite__mapDeps([3,1,2])),c=await e.text();return new Promise((n,r)=>{o.default.parse(c,{header:!0,complete(a){const t=a.data.filter(u=>Object.values(u).some(l=>l!==""&&l!=null)).map((u,l)=>{const s=Object.entries(u).map(([d,m])=>`${d}: ${m}`).join(", ");return`Row ${l+1}: ${s}`});n(t.join(`
4
+ `)}async function j(e){const o=await y(()=>import("./index-DHuj6tKB.js").then(r=>r.i),__vite__mapDeps([0,1,2])),c=await e.arrayBuffer();return(await o.extractRawText({arrayBuffer:c})).value}async function R(e){const o=await y(()=>import("./papaparse.min-3FeAYh4d.js").then(n=>n.p),__vite__mapDeps([3,1,2])),c=await e.text();return new Promise((n,r)=>{o.default.parse(c,{header:!0,complete(a){const t=a.data.filter(u=>Object.values(u).some(l=>l!==""&&l!=null)).map((u,l)=>{const s=Object.entries(u).map(([d,m])=>`${d}: ${m}`).join(", ");return`Row ${l+1}: ${s}`});n(t.join(`
5
5
  `))},error(a){r(a)}})})}function T(e){switch(e.split(".").pop()?.toLowerCase()){case"pdf":return"pdf";case"docx":return"docx";case"txt":return"txt";case"md":return"md";case"csv":return"csv";default:return null}}const z={chunkSize:1e3,chunkOverlap:200,separator:`
6
6
 
7
7
  `};function A(e,o,c){const n={...z,...c},r=[],a=o.split(n.separator).filter(s=>s.trim());let t="",u=0,l=0;for(const s of a){const d=t?t+n.separator+s:s;if(d.length>n.chunkSize&&t){r.push(k(e,r.length,t,u));const m=t.slice(-n.chunkOverlap);u=l-m.length,t=m+n.separator+s}else t=d;l+=s.length+n.separator.length}return t.trim()&&r.push(k(e,r.length,t,u)),r}function k(e,o,c,n){const r=c.trim(),a={startChar:n,endChar:n+r.length};return{id:x(),documentId:e,index:o,content:r,tokenEstimate:Math.ceil(r.split(/\s+/).length*1.3),metadata:a}}async function B(e,o,c,n){const r=T(e.name);if(!r)throw new Error(`Unsupported file format: ${e.name}`);const a=x(),t={id:a,name:e.name,format:r,sizeBytes:e.size,addedAt:Date.now(),chunkCount:0,embeddingModel:o,status:"pending"};try{t.status="parsing",n?.({stage:"parsing",message:`Parsing ${e.name}...`,progress:.1});const u=await I(e,r);if(!u.trim())throw new Error("Document produced no extractable text");t.status="chunking",n?.({stage:"chunking",message:"Splitting into chunks...",progress:.3});const l=A(a,u,c);t.chunkCount=l.length,t.status="embedding",n?.({stage:"embedding",message:`Embedding ${l.length} chunks...`,progress:.4});const s=await L(l,o,(d,m)=>{const v=.4+d/m*.5;n?.({stage:"embedding",message:`Embedding chunk ${d}/${m}...`,progress:v})});return n?.({stage:"ready",message:"Storing vectors...",progress:.95}),await w.storeChunks(s),t.status="ready",await w.storeDocument(t),n?.({stage:"ready",message:"Done!",progress:1}),t}catch(u){throw t.status="error",t.error=u instanceof Error?u.message:"Ingestion failed",await w.storeDocument(t),u}}async function L(e,o,c){const n=[];for(let a=0;a<e.length;a+=10){const t=e.slice(a,a+10),u=t.map(s=>s.content),l=await _.embed({model:o,input:u});for(let s=0;s<t.length;s++){const d=t[s],m=l.embeddings[s];m&&n.push({id:x(),documentId:d.documentId,chunkId:d.id,content:d.content,embedding:m,metadata:d.metadata})}c(Math.min(a+10,e.length),e.length)}return n}async function D(e,o,c=5,n){const a=(await _.embed({model:o,input:[e]})).embeddings[0];if(!a)throw new Error("Failed to embed query");const t=await w.search(a,c,n),u=await w.getAllDocuments(),l=new Map(u.map(s=>[s.id,s.name]));return t.map(s=>({...s,documentName:l.get(s.chunk.documentId)??"Unknown"}))}function P(e){return e.length===0?"":`Use the following context to help answer the user's question. If the context doesn't contain relevant information, say so.
@@ -0,0 +1 @@
1
+ import{d as D,r as u,a as c,n as I,J as M}from"./index-534TcCbY.js";const B=D("sessions",()=>{const t=u(new Map),o=u(null),i=u(new Map),r=c(()=>o.value?t.value.get(o.value)??null:null),l=c(()=>[...t.value.values()].sort((e,s)=>s.createdAt-e.createdAt));function v(e){return t.value.get(e)}function f(e){const s=I(),n={id:s,mode:e.mode,model:e.model,status:"idle",createdAt:Date.now(),prompt:e.prompt,messages:e.messages??[],options:e.options??{},outputText:"",metrics:null};return t.value.set(s,n),s}function d(e,s){i.value.set(e,s)}function p(e,s){const n=t.value.get(e);n&&(n.status=s)}function S(e,s){const n=t.value.get(e);n&&(n.outputText+=s)}function g(e,s){const n=t.value.get(e);if(n){n.status="completed",n.metrics=s;const a=i.value.get(e);a&&M.saveSession(n,a).catch(console.error)}}function m(e,s){const n=t.value.get(e);n&&(n.status="error",n.error=s)}function A(e){const s=t.value.get(e);s&&(s.status="cancelled")}function w(e,s){const n=t.value.get(e);n&&(n.doneReason=s)}function x(e){o.value=e}return{sessions:t,activeSessionId:o,activeSession:r,recentSessions:l,sessionConversationMap:i,sessionById:v,createSession:f,linkSessionToConversation:d,updateSessionStatus:p,appendOutput:S,finalizeSession:g,setSessionError:m,cancelSession:A,setDoneReason:w,setActiveSession:x}});export{B as u};
@@ -1 +1 @@
1
- import{c}from"./index-DYHBy1xj.js";const y=c("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);export{y as S};
1
+ import{c}from"./index-534TcCbY.js";const y=c("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);export{y as S};
@@ -1 +1 @@
1
- import{d as b,r as d,a as f}from"./index-DYHBy1xj.js";const g=[{id:"rag",dbName:"llmxray-rag",label:"Knowledge Base",icon:"📚",stores:["chunks","documents"]},{id:"conversations",dbName:"llmxray-conversations",label:"Conversations",icon:"💬",stores:["conversations","messages","sessions","tokens"]},{id:"benchmarks",dbName:"llmxray-benchmarks",label:"Benchmarks",icon:"⏱",stores:["results","custom-suites"]},{id:"message-memory",dbName:"llmxray-message-memory",label:"Message Memory",icon:"🧠",stores:["messages"]},{id:"canvas-ai",dbName:"llmxray-canvas-ai",label:"AI Training",icon:"🎨",stores:["training-pairs"]},{id:"comparisons",dbName:"llmxray-comparisons",label:"Comparisons",icon:"⚖",stores:["runs"]},{id:"history",dbName:"llmxray-history",label:"History",icon:"📅",stores:["entries"]}];async function p(){if(!navigator.storage?.estimate)return{usage:0,quota:0,persisted:!1};const s=await navigator.storage.estimate(),e=await navigator.storage.persisted?.()??!1;return{usage:s.usage??0,quota:s.quota??0,persisted:e}}function m(s){if(s==null)return 0;if(typeof s!="object")return String(s).length*2;const e=s;let t=0;for(const o of Object.keys(e)){t+=o.length*2;const n=e[o];Array.isArray(n)&&n.length>0&&typeof n[0]=="number"?t+=n.length*8:typeof n=="string"?t+=n.length*2:typeof n=="number"?t+=8:typeof n=="boolean"?t+=4:n!=null&&typeof n=="object"&&(t+=m(n))}return t}function v(s){return new Promise(e=>{const t=indexedDB.open(s);t.onupgradeneeded=()=>{t.transaction?.abort(),e(null)},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)})}function h(s,e){return new Promise(t=>{if(!s.objectStoreNames.contains(e)){t({name:e,bytes:0,count:0});return}const n=s.transaction(e,"readonly").objectStore(e);let c=0,r=0;const i=n.openCursor();i.onsuccess=()=>{const u=i.result;u?(c+=m(u.value),r++,u.continue()):t({name:e,bytes:c,count:r})},i.onerror=()=>t({name:e,bytes:0,count:0})})}async function x(s,e){const t=await v(s);if(!t)return{totalBytes:0,recordCount:0,stores:e.map(o=>({name:o,bytes:0,count:0}))};try{const o=[];for(const r of e)o.push(await h(t,r));const n=o.reduce((r,i)=>r+i.bytes,0),c=o.reduce((r,i)=>r+i.count,0);return{totalBytes:n,recordCount:c,stores:o}}finally{t.close()}}async function w(){const s=[];for(const e of g){const{totalBytes:t,recordCount:o,stores:n}=await x(e.dbName,e.stores);s.push({id:e.id,label:e.label,icon:e.icon,type:"indexeddb",totalBytes:t,recordCount:o,stores:n})}return s}const B=b("storage",()=>{const s=d(null),e=d([]),t=d(!1),o=d(null),n=f(()=>e.value.reduce((a,l)=>a+l.totalBytes,0)),c=f(()=>!s.value||s.value.quota===0?0:Math.round(s.value.usage/s.value.quota*100)),r=f(()=>e.value.reduce((a,l)=>a+l.recordCount,0));function i(a){return e.value.find(l=>l.id===a)}async function u(){t.value=!0;try{const[a,l]=await Promise.all([p(),w()]);s.value=a,e.value=l,o.value=Date.now()}catch(a){console.error("Failed to estimate storage:",a)}finally{t.value=!1}}async function y(a=3e4){(!o.value||Date.now()-o.value>a)&&await u()}return{origin:s,databases:e,loading:t,lastUpdated:o,totalUsedBytes:n,usedPercent:c,totalRecordCount:r,getDatabaseById:i,refresh:u,refreshIfStale:y}});export{B as u};
1
+ import{d as b,r as d,a as f}from"./index-534TcCbY.js";const g=[{id:"rag",dbName:"llmxray-rag",label:"Knowledge Base",icon:"📚",stores:["chunks","documents"]},{id:"conversations",dbName:"llmxray-conversations",label:"Conversations",icon:"💬",stores:["conversations","messages","sessions","tokens"]},{id:"benchmarks",dbName:"llmxray-benchmarks",label:"Benchmarks",icon:"⏱",stores:["results","custom-suites"]},{id:"message-memory",dbName:"llmxray-message-memory",label:"Message Memory",icon:"🧠",stores:["messages"]},{id:"canvas-ai",dbName:"llmxray-canvas-ai",label:"AI Training",icon:"🎨",stores:["training-pairs"]},{id:"comparisons",dbName:"llmxray-comparisons",label:"Comparisons",icon:"⚖",stores:["runs"]},{id:"history",dbName:"llmxray-history",label:"History",icon:"📅",stores:["entries"]}];async function p(){if(!navigator.storage?.estimate)return{usage:0,quota:0,persisted:!1};const s=await navigator.storage.estimate(),e=await navigator.storage.persisted?.()??!1;return{usage:s.usage??0,quota:s.quota??0,persisted:e}}function m(s){if(s==null)return 0;if(typeof s!="object")return String(s).length*2;const e=s;let t=0;for(const o of Object.keys(e)){t+=o.length*2;const n=e[o];Array.isArray(n)&&n.length>0&&typeof n[0]=="number"?t+=n.length*8:typeof n=="string"?t+=n.length*2:typeof n=="number"?t+=8:typeof n=="boolean"?t+=4:n!=null&&typeof n=="object"&&(t+=m(n))}return t}function v(s){return new Promise(e=>{const t=indexedDB.open(s);t.onupgradeneeded=()=>{t.transaction?.abort(),e(null)},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)})}function h(s,e){return new Promise(t=>{if(!s.objectStoreNames.contains(e)){t({name:e,bytes:0,count:0});return}const n=s.transaction(e,"readonly").objectStore(e);let c=0,r=0;const i=n.openCursor();i.onsuccess=()=>{const u=i.result;u?(c+=m(u.value),r++,u.continue()):t({name:e,bytes:c,count:r})},i.onerror=()=>t({name:e,bytes:0,count:0})})}async function x(s,e){const t=await v(s);if(!t)return{totalBytes:0,recordCount:0,stores:e.map(o=>({name:o,bytes:0,count:0}))};try{const o=[];for(const r of e)o.push(await h(t,r));const n=o.reduce((r,i)=>r+i.bytes,0),c=o.reduce((r,i)=>r+i.count,0);return{totalBytes:n,recordCount:c,stores:o}}finally{t.close()}}async function w(){const s=[];for(const e of g){const{totalBytes:t,recordCount:o,stores:n}=await x(e.dbName,e.stores);s.push({id:e.id,label:e.label,icon:e.icon,type:"indexeddb",totalBytes:t,recordCount:o,stores:n})}return s}const B=b("storage",()=>{const s=d(null),e=d([]),t=d(!1),o=d(null),n=f(()=>e.value.reduce((a,l)=>a+l.totalBytes,0)),c=f(()=>!s.value||s.value.quota===0?0:Math.round(s.value.usage/s.value.quota*100)),r=f(()=>e.value.reduce((a,l)=>a+l.recordCount,0));function i(a){return e.value.find(l=>l.id===a)}async function u(){t.value=!0;try{const[a,l]=await Promise.all([p(),w()]);s.value=a,e.value=l,o.value=Date.now()}catch(a){console.error("Failed to estimate storage:",a)}finally{t.value=!1}}async function y(a=3e4){(!o.value||Date.now()-o.value>a)&&await u()}return{origin:s,databases:e,loading:t,lastUpdated:o,totalUsedBytes:n,usedPercent:c,totalRecordCount:r,getDatabaseById:i,refresh:u,refreshIfStale:y}});export{B as u};
@@ -0,0 +1,4 @@
1
+ import{n as u,A as z}from"./index-534TcCbY.js";import{u as G}from"./session-store-BQ0TF24S.js";import{a as R,b as E,u as J}from"./agent-store-C6w1zV86.js";import{u as $}from"./metrics-store-7m97Sb7w.js";import{u as q}from"./toolcall-store-C4Trr01T.js";const B=1e6;function F(t,n,a,e,c){const s=(e.total_duration??0)/B,o=(e.load_duration??0)/B,i=(e.prompt_eval_duration??0)/B,l=(e.eval_duration??0)/B,p=e.prompt_eval_count??0,r=e.eval_count??0,h=l>0?r/l*1e3:0,f=i>0?p/i*1e3:0,d=c.length>0?c[0]:0;return{sessionId:t,model:n,startedAt:a,completedAt:Date.now(),ttftMs:d,totalDurationMs:s,loadDurationMs:o,promptEvalDurationMs:i,evalDurationMs:l,tokensPerSecond:h,promptTokensPerSecond:f,promptTokenCount:p,completionTokenCount:r,totalTokenCount:p+r,tokenLatencies:c}}class V{constructor(n){this.stepIndex=0,this.activeStep=null,this.inThinkBlock=!1,this.completedSteps=[],this.lastProcessedLineIndex=-1,this.thinkBlockProcessed=!1,this.enablePatternDetection=n?.patternDetection??!0}get isThinking(){return this.inThinkBlock}get thinkingContent(){return this.inThinkBlock&&this.activeStep?this.activeStep.content:""}processToken(n,a){if(!this.inThinkBlock&&!this.thinkBlockProcessed&&a.includes("<think>")){this.inThinkBlock=!0;const i=a.split("<think>").pop()??"";return this.activeStep={type:"thought",content:i,startTokenIndex:n.index,startTimestamp:n.timestamp},null}if(this.inThinkBlock&&a.includes("</think>")){if(this.inThinkBlock=!1,this.thinkBlockProcessed=!0,this.activeStep){const i=a.match(/<think>([\s\S]*?)<\/think>/);if(i?this.activeStep.content=i[1]?.trim()??this.activeStep.content.trim():this.activeStep.content=this.activeStep.content.replace(/<\/think>[\s\S]*$/,"").trim(),this.activeStep.content)return this.finalizeStep(n);this.activeStep=null}return null}if(this.inThinkBlock&&this.activeStep)return this.activeStep.content+=n.text,null;if(!this.enablePatternDetection)return null;const e=a.split(`
2
+ `);if(e.length<2)return null;const c=e.length-2;if(c<=this.lastProcessedLineIndex)return null;this.lastProcessedLineIndex=c;const s=e[c]?.trim()??"";if(!s)return null;const o=K(s);if(o){let i=null;return this.activeStep&&(i=this.finalizeStep(n)),this.activeStep={type:o.type,content:o.content,startTokenIndex:n.index,startTimestamp:n.timestamp},i}return this.activeStep&&(this.activeStep.content+=n.text),null}finalize(){if(this.activeStep){const n={id:u(),index:this.stepIndex++,type:this.activeStep.type,content:this.activeStep.content.trim(),startTokenIndex:this.activeStep.startTokenIndex,endTokenIndex:this.activeStep.startTokenIndex,timestamp:this.activeStep.startTimestamp,durationMs:Date.now()-this.activeStep.startTimestamp};if(this.activeStep=null,n.content)return this.completedSteps.push(n),n}return null}finalizeStep(n){const a={id:u(),index:this.stepIndex++,type:this.activeStep.type,content:this.activeStep.content.trim(),startTokenIndex:this.activeStep.startTokenIndex,endTokenIndex:n.index,timestamp:this.activeStep.startTimestamp,durationMs:n.timestamp-this.activeStep.startTimestamp};return this.completedSteps.push(a),this.activeStep=null,a}}const H=[{regex:/^(?:Step\s+\d+[:.]\s*)(.+)/i,type:"thought"},{regex:/^(?:Thought[:.]\s*)(.+)/i,type:"thought"},{regex:/^(?:Observation[:.]\s*)(.+)/i,type:"observation"},{regex:/^(?:Action[:.]\s*)(.+)/i,type:"action"},{regex:/^(?:Conclusion[:.]\s*)(.+)/i,type:"conclusion"},{regex:/^(?:Therefore[,:.]\s*)(.+)/i,type:"conclusion"}];function K(t){const n=t.trim();for(const{regex:a,type:e}of H){const c=n.match(a);if(c)return{type:e,content:c[1]??n}}return null}async function I(t,n,a){const e=t.getReader(),c=new TextDecoder;let s="";try{for(;!a?.aborted;){const{done:o,value:i}=await e.read();if(o)break;s+=c.decode(i,{stream:!0});const l=s.split(`
3
+ `);s=l.pop()??"";for(const p of l){const r=p.trim();if(!r||!r.startsWith("data: "))continue;const h=r.slice(6);if(h==="[DONE]")return;try{const f=JSON.parse(h);n(f)}catch{}}}}finally{e.releaseLock()}}async function W(t,n,a){const e=t.getReader(),c=new TextDecoder;let s="";try{for(;!a?.aborted;){const{done:o,value:i}=await e.read();if(o)break;s+=c.decode(i,{stream:!0});const l=s.split(`
4
+ `);s=l.pop()??"";for(const p of l){const r=p.trim();if(r)try{const h=JSON.parse(r);n(h)}catch{}}}if(s.trim())try{const o=JSON.parse(s.trim());n(o)}catch{}}finally{e.releaseLock()}}async function tt(t,n,a){const e=G(),c=R(),s=$(),o=E(),i=J(),l=Date.now();let p=0,r=l,h="";const f=[],d=z(),b=e.sessionById(t),y=b?d.isThinkingModel(b.model):!1,x=new V({patternDetection:y});i.initGraph(t),i.addNode(t,{id:u(),type:"start",label:"Generation Start",sessionId:t,stepIndex:0,state:{},timestamp:l}),e.updateSessionStatus(t,"streaming"),await W(n,g=>{const M=Date.now(),D=M-r;h+=g.response;const C=j(D,f),v={id:u(),index:p++,text:g.response,timestamp:M,confidence:C,cumulativeText:h,interTokenLatencyMs:D};c.pushToken(t,v),e.appendOutput(t,g.response),f.push(D),r=M;const k=x.processToken(v,h);if(o.setThinking(t,x.isThinking,x.thinkingContent),k&&(o.addStep(t,k),i.addNode(t,{id:u(),type:"decision",label:`${k.type}: ${k.content.slice(0,40)}...`,sessionId:t,stepIndex:k.index,state:{reasoning:k.type},timestamp:k.timestamp})),g.done){x.finalize(),o.setThinking(t,!1,""),g.done_reason&&e.setDoneReason(t,g.done_reason);const m=e.sessionById(t);if(m){const T=F(t,m.model,l,g,f);s.recordMetrics(t,T),e.finalizeSession(t,T),s.recalculateAggregate()}i.addNode(t,{id:u(),type:"output",label:"Generation Complete",sessionId:t,stepIndex:p,state:{tokenCount:p},timestamp:Date.now()})}},a)}async function et(t,n,a){const e=G(),c=R(),s=$(),o=E(),i=q(),l=J(),p=Date.now();let r=0,h=p,f="",d="",b="",y=!1;const x=[],g=[],M=z(),D=e.sessionById(t),C=D?M.isThinkingModel(D.model):!1,v=new V({patternDetection:C});l.initGraph(t);const k=l.getGraph(t);return(!k||k.nodes.length===0)&&l.addNode(t,{id:u(),type:"start",label:"Chat Start",sessionId:t,stepIndex:0,state:{},timestamp:p}),e.updateSessionStatus(t,"streaming"),await W(n,m=>{const T=Date.now(),w=T-h,A=m.message.thinking;if(A){y=!0,d+=A,o.setThinking(t,!0,d),x.push(w),h=T;return}y&&d&&!m.done&&(o.setThinking(t,!1,d),d.trim()&&o.addStep(t,{id:u(),index:0,type:"thought",content:d.trim(),startTokenIndex:0,endTokenIndex:r,timestamp:T,durationMs:T-p}),b=d,d="");const N=m.message.content;f+=N;let P,L;m.logprobs&&m.logprobs.length>0?(L=m.logprobs[0].logprob,P=Math.exp(L)):P=j(w,x);const O={id:u(),index:r++,text:N,timestamp:T,confidence:P,logprob:L,cumulativeText:f,interTokenLatencyMs:w};if(c.pushToken(t,O),e.appendOutput(t,N),x.push(w),h=T,!y){const S=v.processToken(O,f);o.setThinking(t,v.isThinking,v.thinkingContent),S&&o.addStep(t,S)}if(m.message.tool_calls)for(const S of m.message.tool_calls){g.push(S);const _={id:u(),sessionId:t,index:i.getToolCalls(t).length,functionName:S.function.name,arguments:S.function.arguments,status:"pending",startedAt:T,tokenIndexStart:r};i.addToolCall(t,_),l.addNode(t,{id:u(),type:"tool_call",label:`Tool: ${S.function.name}`,sessionId:t,stepIndex:r,state:{tool:S.function.name,args:S.function.arguments},timestamp:T})}if(m.done&&(y&&d.trim()&&(b=d,o.addStep(t,{id:u(),index:0,type:"thought",content:d.trim(),startTokenIndex:0,endTokenIndex:r,timestamp:Date.now(),durationMs:Date.now()-p})),v.finalize(),o.setThinking(t,!1,y?b:""),m.done_reason&&e.setDoneReason(t,m.done_reason),g.length===0)){const S=e.sessionById(t);if(S){const _=F(t,S.model,p,m,x);s.recordMetrics(t,_),e.finalizeSession(t,_),s.recalculateAggregate()}l.addNode(t,{id:u(),type:"output",label:"Chat Complete",sessionId:t,stepIndex:r,state:{tokenCount:r},timestamp:Date.now()})}},a),{toolCalls:g}}function j(t,n){if(n.length<2)return .5;const a=[...n].sort((o,i)=>o-i),e=a[Math.floor(a.length/2)];if(e<=0)return .5;const c=t/e,s=Math.max(0,Math.min(1,1-(c-.5)/2));return Math.round(s*100)/100}export{tt as a,et as e,I as r};
@@ -1 +1 @@
1
- import{d as k,r as f,a as u,n as x}from"./index-DYHBy1xj.js";function m(){return{mode:"code",blocks:[],code:""}}const v="llmxray-workshop-tools",D="llmxray-tool-definitions",_=k("tool-workshop",()=>{const n=f({}),a=f(null);function p(){try{const e=localStorage.getItem(v);if(e){const t=JSON.parse(e),o={};for(const l of t)o[l.id]=l;n.value=o;return}g()}catch{}}function g(){try{const e=localStorage.getItem(D);if(!e)return;const t=JSON.parse(e),o={};for(const l of t){const d={id:l.id,definition:l.definition,implementation:m(),enabled:l.enabled,category:"custom",createdAt:l.createdAt,updatedAt:l.updatedAt,lastTestedAt:null,testResult:null};o[d.id]=d}n.value=o,i()}catch{}}function i(){const e=Object.values(n.value);localStorage.setItem(v,JSON.stringify(e))}p();const c=u(()=>Object.values(n.value)),r=u(()=>c.value.filter(e=>e.enabled)),y=u(()=>r.value.map(e=>e.definition)),b=u(()=>{const e={};for(const t of c.value){const o=t.category||"custom";e[o]||(e[o]=[]),e[o].push(t)}return e}),S=u(()=>a.value?n.value[a.value]??null:null);function s(e){const t=x(),o=Date.now(),l={id:t,definition:e.definition,implementation:e.implementation??m(),enabled:e.enabled??!1,category:e.category??"custom",createdAt:o,updatedAt:o,lastTestedAt:null,testResult:null};return n.value[t]=l,i(),t}function O(e,t){const o=n.value[e];o&&(n.value[e]={...o,...t,updatedAt:Date.now()},i())}function T(e){delete n.value[e],a.value===e&&(a.value=null),i()}function A(){n.value={},a.value=null,i()}function w(e){const t=n.value[e];if(!t)return null;const o=JSON.parse(JSON.stringify(t.definition));return o.function.name=`${o.function.name}_copy`,s({definition:o,implementation:JSON.parse(JSON.stringify(t.implementation)),category:t.category})}function N(e){const t=n.value[e];t&&(n.value[e]={...t,enabled:!t.enabled},i())}function J(){for(const e of Object.keys(n.value))n.value[e]={...n.value[e],enabled:!1};i()}function h(e){a.value=e}function E(e){return n.value[e]}function I(e){return c.value.find(t=>t.definition.function.name===e)}return{tools:n,selectedToolId:a,allTools:c,enabledTools:r,enabledDefinitions:y,toolsByCategory:b,selectedTool:S,addTool:s,updateTool:O,removeTool:T,clearAll:A,duplicateTool:w,toggleEnabled:N,disableAll:J,selectTool:h,getById:E,findByFunctionName:I}});export{_ as u};
1
+ import{d as k,r as f,a as u,n as x}from"./index-534TcCbY.js";function m(){return{mode:"code",blocks:[],code:""}}const v="llmxray-workshop-tools",D="llmxray-tool-definitions",_=k("tool-workshop",()=>{const n=f({}),a=f(null);function p(){try{const e=localStorage.getItem(v);if(e){const t=JSON.parse(e),o={};for(const l of t)o[l.id]=l;n.value=o;return}g()}catch{}}function g(){try{const e=localStorage.getItem(D);if(!e)return;const t=JSON.parse(e),o={};for(const l of t){const d={id:l.id,definition:l.definition,implementation:m(),enabled:l.enabled,category:"custom",createdAt:l.createdAt,updatedAt:l.updatedAt,lastTestedAt:null,testResult:null};o[d.id]=d}n.value=o,i()}catch{}}function i(){const e=Object.values(n.value);localStorage.setItem(v,JSON.stringify(e))}p();const c=u(()=>Object.values(n.value)),r=u(()=>c.value.filter(e=>e.enabled)),y=u(()=>r.value.map(e=>e.definition)),b=u(()=>{const e={};for(const t of c.value){const o=t.category||"custom";e[o]||(e[o]=[]),e[o].push(t)}return e}),S=u(()=>a.value?n.value[a.value]??null:null);function s(e){const t=x(),o=Date.now(),l={id:t,definition:e.definition,implementation:e.implementation??m(),enabled:e.enabled??!1,category:e.category??"custom",createdAt:o,updatedAt:o,lastTestedAt:null,testResult:null};return n.value[t]=l,i(),t}function O(e,t){const o=n.value[e];o&&(n.value[e]={...o,...t,updatedAt:Date.now()},i())}function T(e){delete n.value[e],a.value===e&&(a.value=null),i()}function A(){n.value={},a.value=null,i()}function w(e){const t=n.value[e];if(!t)return null;const o=JSON.parse(JSON.stringify(t.definition));return o.function.name=`${o.function.name}_copy`,s({definition:o,implementation:JSON.parse(JSON.stringify(t.implementation)),category:t.category})}function N(e){const t=n.value[e];t&&(n.value[e]={...t,enabled:!t.enabled},i())}function J(){for(const e of Object.keys(n.value))n.value[e]={...n.value[e],enabled:!1};i()}function h(e){a.value=e}function E(e){return n.value[e]}function I(e){return c.value.find(t=>t.definition.function.name===e)}return{tools:n,selectedToolId:a,allTools:c,enabledTools:r,enabledDefinitions:y,toolsByCategory:b,selectedTool:S,addTool:s,updateTool:O,removeTool:T,clearAll:A,duplicateTool:w,toggleEnabled:N,disableAll:J,selectTool:h,getById:E,findByFunctionName:I}});export{_ as u};
@@ -0,0 +1 @@
1
+ import{d as f,r as d}from"./index-534TcCbY.js";const p=f("toolcalls",()=>{const l=d(new Map);function o(t){return l.value.get(t)??[]}function r(t){return o(t).filter(n=>n.status==="pending")}function u(t,n){let e=l.value.get(t);e||(e=[],l.value.set(t,e)),e.push(n)}function i(t,n,e){const a=l.value.get(t);if(!a)return;const s=a.find(c=>c.id===n);s&&Object.assign(s,e)}return{callsBySession:l,getToolCalls:o,getPendingCalls:r,addToolCall:u,updateToolCall:i}});export{p as u};
@@ -1 +1 @@
1
- import{c as a}from"./index-DYHBy1xj.js";const e=a("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);export{e as T};
1
+ import{c as a}from"./index-534TcCbY.js";const e=a("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);export{e as T};
package/dist/index.html CHANGED
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>LLMxRay — Local LLM Observatory</title>
8
- <script type="module" crossorigin src="/assets/index-DYHBy1xj.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-Bawj8X2v.css">
8
+ <script type="module" crossorigin src="/assets/index-534TcCbY.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-B72Sw9uL.css">
10
10
  </head>
11
11
  <body>
12
12
  <script>
package/package.json CHANGED
@@ -1,88 +1,88 @@
1
- {
2
- "name": "llmxray",
3
- "version": "0.4.1",
4
- "description": "Local LLM Observatory — See what your AI is actually doing, token by token.",
5
- "license": "Apache-2.0",
6
- "type": "module",
7
- "bin": {
8
- "llmxray": "./bin/cli.mjs"
9
- },
10
- "files": [
11
- "dist/",
12
- "server/",
13
- "bin/",
14
- "LICENSE",
15
- "NOTICE",
16
- "README.md"
17
- ],
18
- "scripts": {
19
- "dev": "vite",
20
- "build": "vue-tsc -b && vite build",
21
- "preview": "vite preview",
22
- "start": "node server/index.mjs",
23
- "prepublishOnly": "npm run build",
24
- "test": "vitest run",
25
- "test:watch": "vitest",
26
- "test:coverage": "vitest run --coverage",
27
- "test:e2e": "playwright test --project=chromium",
28
- "test:e2e:headed": "playwright test --project=chromium --headed",
29
- "test:e2e:ui": "playwright test --project=chromium --ui",
30
- "test:e2e:live": "playwright test --project=live-ollama",
31
- "test:e2e:live:headed": "playwright test --project=live-ollama --headed",
32
- "test:e2e:all": "playwright test",
33
- "docs:dev": "vitepress dev docs",
34
- "docs:build": "vitepress build docs",
35
- "docs:preview": "vitepress preview docs",
36
- "deploy": "bash scripts/deploy-site.sh"
37
- },
38
- "dependencies": {
39
- "dexie": "^4.3.0",
40
- "express": "^5.1.0",
41
- "franc-min": "^6.2.0",
42
- "http-proxy-middleware": "^3.0.3",
43
- "lucide-vue-next": "^0.577.0",
44
- "vue-i18n": "^10.0.8"
45
- },
46
- "devDependencies": {
47
- "@babel/parser": "^7.29.0",
48
- "@codemirror/lang-javascript": "^6.2.5",
49
- "@codemirror/lang-json": "^6.0.2",
50
- "@codemirror/theme-one-dark": "^6.1.3",
51
- "@fontsource/fira-code": "^5.2.7",
52
- "@fontsource/inter": "^5.2.8",
53
- "@intlify/unplugin-vue-i18n": "^11.0.7",
54
- "@playwright/test": "^1.58.2",
55
- "@tailwindcss/vite": "^4.2.1",
56
- "@types/d3": "^7.4.3",
57
- "@types/papaparse": "^5.5.2",
58
- "@vitejs/plugin-vue": "^6.0.4",
59
- "@vue-flow/background": "^1.3.2",
60
- "@vue-flow/controls": "^1.1.3",
61
- "@vue-flow/core": "^1.48.2",
62
- "@vue-flow/minimap": "^1.5.4",
63
- "@vue/test-utils": "^2.4.6",
64
- "chart.js": "^4.5.1",
65
- "codemirror": "^6.0.2",
66
- "d3": "^7.9.0",
67
- "diff": "^8.0.3",
68
- "gh-pages": "^6.3.0",
69
- "happy-dom": "^20.8.3",
70
- "mammoth": "^1.11.0",
71
- "marked": "^17.0.4",
72
- "nanoid": "^5.1.6",
73
- "papaparse": "^5.5.3",
74
- "pdfjs-dist": "^5.5.207",
75
- "pinia": "^3.0.4",
76
- "recast": "^0.23.11",
77
- "tailwindcss": "^4.2.1",
78
- "typescript": "~5.9.3",
79
- "vite": "^7.3.1",
80
- "vitepress": "^1.6.4",
81
- "vitest": "^4.0.18",
82
- "vue": "^3.5.30",
83
- "vue-chartjs": "^5.3.3",
84
- "vue-codemirror": "^6.1.1",
85
- "vue-router": "^5.0.3",
86
- "vue-tsc": "^3.2.5"
87
- }
88
- }
1
+ {
2
+ "name": "llmxray",
3
+ "version": "0.4.3",
4
+ "description": "Local LLM Observatory — See what your AI is actually doing, token by token.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "bin": {
8
+ "llmxray": "./bin/cli.mjs"
9
+ },
10
+ "files": [
11
+ "dist/",
12
+ "server/",
13
+ "bin/",
14
+ "LICENSE",
15
+ "NOTICE",
16
+ "README.md"
17
+ ],
18
+ "scripts": {
19
+ "dev": "vite",
20
+ "build": "vue-tsc -b && vite build",
21
+ "preview": "vite preview",
22
+ "start": "node server/index.mjs",
23
+ "prepublishOnly": "npm run build",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest",
26
+ "test:coverage": "vitest run --coverage",
27
+ "test:e2e": "playwright test --project=chromium",
28
+ "test:e2e:headed": "playwright test --project=chromium --headed",
29
+ "test:e2e:ui": "playwright test --project=chromium --ui",
30
+ "test:e2e:live": "playwright test --project=live-ollama",
31
+ "test:e2e:live:headed": "playwright test --project=live-ollama --headed",
32
+ "test:e2e:all": "playwright test",
33
+ "docs:dev": "vitepress dev docs",
34
+ "docs:build": "vitepress build docs",
35
+ "docs:preview": "vitepress preview docs",
36
+ "deploy": "bash scripts/deploy-site.sh"
37
+ },
38
+ "dependencies": {
39
+ "dexie": "^4.3.0",
40
+ "express": "^5.1.0",
41
+ "franc-min": "^6.2.0",
42
+ "http-proxy-middleware": "^3.0.3",
43
+ "lucide-vue-next": "^0.577.0",
44
+ "vue-i18n": "^10.0.8"
45
+ },
46
+ "devDependencies": {
47
+ "@babel/parser": "^7.29.0",
48
+ "@codemirror/lang-javascript": "^6.2.5",
49
+ "@codemirror/lang-json": "^6.0.2",
50
+ "@codemirror/theme-one-dark": "^6.1.3",
51
+ "@fontsource/fira-code": "^5.2.7",
52
+ "@fontsource/inter": "^5.2.8",
53
+ "@intlify/unplugin-vue-i18n": "^11.0.7",
54
+ "@playwright/test": "^1.58.2",
55
+ "@tailwindcss/vite": "^4.2.1",
56
+ "@types/d3": "^7.4.3",
57
+ "@types/papaparse": "^5.5.2",
58
+ "@vitejs/plugin-vue": "^6.0.4",
59
+ "@vue-flow/background": "^1.3.2",
60
+ "@vue-flow/controls": "^1.1.3",
61
+ "@vue-flow/core": "^1.48.2",
62
+ "@vue-flow/minimap": "^1.5.4",
63
+ "@vue/test-utils": "^2.4.6",
64
+ "chart.js": "^4.5.1",
65
+ "codemirror": "^6.0.2",
66
+ "d3": "^7.9.0",
67
+ "diff": "^8.0.3",
68
+ "gh-pages": "^6.3.0",
69
+ "happy-dom": "^20.8.3",
70
+ "mammoth": "^1.11.0",
71
+ "marked": "^17.0.4",
72
+ "nanoid": "^5.1.6",
73
+ "papaparse": "^5.5.3",
74
+ "pdfjs-dist": "^5.5.207",
75
+ "pinia": "^3.0.4",
76
+ "recast": "^0.23.11",
77
+ "tailwindcss": "^4.2.1",
78
+ "typescript": "~5.9.3",
79
+ "vite": "^7.3.1",
80
+ "vitepress": "^1.6.4",
81
+ "vitest": "^4.0.18",
82
+ "vue": "^3.5.30",
83
+ "vue-chartjs": "^5.3.3",
84
+ "vue-codemirror": "^6.1.1",
85
+ "vue-router": "^5.0.3",
86
+ "vue-tsc": "^3.2.5"
87
+ }
88
+ }
@@ -1 +0,0 @@
1
- import{d as L,a as b,b as g,e as p,f as t,t as a,j as f,l as z,p as x,u,F as M,k as A}from"./index-DYHBy1xj.js";import{u as B}from"./metrics-store-DRErjO4D.js";import{C as P,a as T,L as v,B as w,p as S,c as D,d as E,f as F,P as I,b as U,i as G,e as q}from"./index-CUNpOQX9.js";import{I as N}from"./info-D-oZIv7P.js";const k=[{family:"llama3.2",inputPer1M:.04,outputPer1M:.04,source:"Together AI"},{family:"llama3.1",inputPer1M:.05,outputPer1M:.08,source:"Groq"},{family:"llama3",inputPer1M:.05,outputPer1M:.08,source:"Groq"},{family:"gemma3",inputPer1M:.1,outputPer1M:.1,source:"Google"},{family:"gemma2",inputPer1M:.07,outputPer1M:.07,source:"Google"},{family:"gemma",inputPer1M:.07,outputPer1M:.07,source:"Google"},{family:"mistral",inputPer1M:.25,outputPer1M:.25,source:"Mistral"},{family:"mixtral",inputPer1M:.6,outputPer1M:.6,source:"Mistral"},{family:"phi4",inputPer1M:.07,outputPer1M:.14,source:"Azure"},{family:"phi3",inputPer1M:.07,outputPer1M:.14,source:"Azure"},{family:"qwen2.5",inputPer1M:.15,outputPer1M:.15,source:"Alibaba"},{family:"qwen2",inputPer1M:.15,outputPer1M:.15,source:"Alibaba"},{family:"deepseek-r1",inputPer1M:.55,outputPer1M:2.19,source:"DeepSeek"},{family:"deepseek-coder",inputPer1M:.14,outputPer1M:.28,source:"DeepSeek"},{family:"codellama",inputPer1M:.05,outputPer1M:.08,source:"Estimated"},{family:"qwen2.5-coder",inputPer1M:.15,outputPer1M:.15,source:"Estimated"},{family:"command-r",inputPer1M:.5,outputPer1M:1.5,source:"Cohere"},{family:"starcoder",inputPer1M:.1,outputPer1M:.1,source:"Estimated"}],O={family:"unknown",inputPer1M:.1,outputPer1M:.1,source:"Estimated"};function $(l){const o=l.toLowerCase().split(":")[0],s=k.find(e=>o===e.family);if(s)return s;const n=k.find(e=>o.startsWith(e.family));return n||{...O,family:o}}function C(l,o,s){return(l*s.inputPer1M+o*s.outputPer1M)/1e6}const R=L("cost",()=>{const l=B(),o=b(()=>{const c=new Map;for(const r of l.metricsBySession.values()){const d=c.get(r.model);if(d)d.promptTokens+=r.promptTokenCount,d.completionTokens+=r.completionTokenCount,d.totalTokens+=r.totalTokenCount,d.sessionCount++;else{const h=$(r.model);c.set(r.model,{model:r.model,promptTokens:r.promptTokenCount,completionTokens:r.completionTokenCount,totalTokens:r.totalTokenCount,sessionCount:1,estimatedCost:0,pricing:h})}}const i=[...c.values()];for(const r of i)r.estimatedCost=C(r.promptTokens,r.completionTokens,r.pricing);return i.sort((r,d)=>d.totalTokens-r.totalTokens)}),s=b(()=>{const c=new Map;for(const i of l.metricsBySession.values()){const r=new Date(i.startedAt).toISOString().slice(0,10),d=c.get(r),h=$(i.model),y=C(i.promptTokenCount,i.completionTokenCount,h);d?(d.promptTokens+=i.promptTokenCount,d.completionTokens+=i.completionTokenCount,d.totalTokens+=i.totalTokenCount,d.sessionCount++,d.estimatedCost+=y):c.set(r,{date:r,promptTokens:i.promptTokenCount,completionTokens:i.completionTokenCount,totalTokens:i.totalTokenCount,sessionCount:1,estimatedCost:y})}return[...c.values()].sort((i,r)=>i.date.localeCompare(r.date))}),n=b(()=>o.value.reduce((c,i)=>c+i.estimatedCost,0)),e=b(()=>o.value.reduce((c,i)=>c+i.totalTokens,0)),m=b(()=>o.value.reduce((c,i)=>c+i.sessionCount,0)),_=b(()=>m.value>0?n.value/m.value:0);return{modelUsage:o,dailyUsage:s,totalEstimatedCost:n,totalTokens:e,totalSessions:m,avgCostPerSession:_}}),j={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},V={class:"rounded-lg border border-border-default bg-surface-raised p-4"},K={class:"text-[10px] font-medium uppercase tracking-wide text-text-muted"},W={class:"mt-1 text-2xl font-semibold text-text-primary"},H={class:"rounded-lg border border-border-default bg-surface-raised p-4"},J={class:"text-[10px] font-medium uppercase tracking-wide text-text-muted"},Q={class:"mt-1 text-2xl font-semibold text-text-primary"},X={class:"rounded-lg border border-border-default bg-surface-raised p-4"},Y={class:"text-[10px] font-medium uppercase tracking-wide text-text-muted"},Z={class:"mt-1 text-2xl font-semibold text-accent"},tt={class:"rounded-lg border border-border-default bg-surface-raised p-4"},et={class:"text-[10px] font-medium uppercase tracking-wide text-text-muted"},ot={class:"mt-1 text-2xl font-semibold text-text-primary"},st=g({__name:"CostSummaryCards",props:{totalTokens:{},totalSessions:{},estimatedCost:{},avgCostPerSession:{}},setup(l){function o(n){return n<.01?"< $0.01":`$${n.toFixed(2)}`}function s(n){return n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}K`:n.toString()}return(n,e)=>(f(),p("div",j,[t("div",V,[t("p",K,a(n.$t("cost.summary.totalTokens")),1),t("p",W,a(s(l.totalTokens)),1)]),t("div",H,[t("p",J,a(n.$t("cost.summary.totalSessions")),1),t("p",Q,a(l.totalSessions),1)]),t("div",X,[t("p",Y,a(n.$t("cost.summary.estimatedCost")),1),t("p",Z,a(o(l.estimatedCost)),1)]),t("div",tt,[t("p",et,a(n.$t("cost.summary.avgCostPerSession")),1),t("p",ot,a(o(l.avgCostPerSession)),1)])]))}}),at={class:"rounded-lg border border-border-default bg-surface-raised p-4"},nt={class:"mb-3 text-sm font-medium text-text-secondary"},rt=g({__name:"TokenUsageByModelChart",props:{data:{}},setup(l){P.register(T,v,w,S,D,E);const o=l,s=b(()=>({labels:o.data.map(e=>e.model),datasets:[{label:"Prompt",data:o.data.map(e=>e.promptTokens),backgroundColor:"#818cf8"},{label:"Completion",data:o.data.map(e=>e.completionTokens),backgroundColor:"#a855f7"}]})),n={indexAxis:"y",responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{color:"#94a3b8",font:{size:11}}},tooltip:{callbacks:{label:e=>`${e.dataset.label??""}: ${(e.parsed.x??0).toLocaleString()} tokens`}}},scales:{x:{stacked:!0,ticks:{color:"#94a3b8",font:{size:10}},grid:{color:"rgba(71, 85, 105, 0.3)"}},y:{stacked:!0,ticks:{color:"#94a3b8",font:{size:11}},grid:{display:!1}}}};return(e,m)=>(f(),p("div",at,[t("h3",nt,a(e.$t("cost.charts.tokensByModel")),1),t("div",{style:z({height:Math.max(120,l.data.length*40)+"px"})},[x(u(F),{data:s.value,options:n},null,8,["data"])],4)]))}}),it={class:"rounded-lg border border-border-default bg-surface-raised p-4"},lt={class:"mb-3 text-sm font-medium text-text-secondary"},dt={class:"h-64"},ct=g({__name:"DailyUsageChart",props:{data:{}},setup(l){P.register(T,v,I,U,S,D,E,G);const o=l,s=b(()=>({labels:o.data.map(e=>e.date),datasets:[{label:"Tokens",data:o.data.map(e=>e.totalTokens),borderColor:"#818cf8",backgroundColor:"rgba(129, 140, 248, 0.1)",fill:!0,tension:.3,yAxisID:"y"},{label:"Est. Cost ($)",data:o.data.map(e=>e.estimatedCost),borderColor:"#a855f7",backgroundColor:"transparent",borderDash:[4,4],tension:.3,yAxisID:"y1"}]})),n={responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"bottom",labels:{color:"#94a3b8",font:{size:11}}},tooltip:{callbacks:{label:e=>{const m=e.dataset.label??"",_=e.parsed.y??0;return m==="Est. Cost ($)"?`${m}: $${_.toFixed(4)}`:`${m}: ${_.toLocaleString()}`}}}},scales:{x:{ticks:{color:"#94a3b8",font:{size:10}},grid:{color:"rgba(71, 85, 105, 0.3)"}},y:{type:"linear",position:"left",ticks:{color:"#94a3b8",font:{size:10}},grid:{color:"rgba(71, 85, 105, 0.3)"},title:{display:!0,text:"Tokens",color:"#94a3b8",font:{size:10}}},y1:{type:"linear",position:"right",ticks:{color:"#94a3b8",font:{size:10},callback:e=>`$${Number(e).toFixed(4)}`},grid:{display:!1},title:{display:!0,text:"Cost ($)",color:"#94a3b8",font:{size:10}}}}};return(e,m)=>(f(),p("div",it,[t("h3",lt,a(e.$t("cost.charts.dailyUsage")),1),t("div",dt,[x(u(q),{data:s.value,options:n},null,8,["data"])])]))}}),ut={class:"rounded-lg border border-border-default bg-surface-raised p-4"},mt={class:"mb-3 text-sm font-medium text-text-secondary"},pt={class:"overflow-x-auto"},ft={class:"w-full text-xs"},bt={class:"border-b border-border-default text-text-muted"},xt={class:"px-2 py-2 text-start font-medium"},gt={class:"px-2 py-2 text-end font-medium"},_t={class:"px-2 py-2 text-end font-medium"},ht={class:"px-2 py-2 text-end font-medium"},yt={class:"px-2 py-2 text-end font-medium"},kt={class:"px-2 py-2 text-end font-medium"},$t={class:"px-2 py-2 text-end font-medium"},Ct={class:"px-2 py-2 font-medium text-text-primary"},Mt={class:"px-2 py-2 text-end"},Pt={class:"px-2 py-2 text-end"},Tt={class:"px-2 py-2 text-end"},vt={class:"px-2 py-2 text-end"},St={class:"px-2 py-2 text-end text-accent"},Dt={class:"px-2 py-2 text-end text-text-muted"},Et=g({__name:"ModelBreakdownTable",props:{data:{}},setup(l){function o(s){return s<1e-4?"< $0.0001":s<.01?`$${s.toFixed(4)}`:`$${s.toFixed(2)}`}return(s,n)=>(f(),p("div",ut,[t("h3",mt,a(s.$t("cost.table.model")),1),t("div",pt,[t("table",ft,[t("thead",null,[t("tr",bt,[t("th",xt,a(s.$t("cost.table.model")),1),t("th",gt,a(s.$t("cost.table.sessions")),1),t("th",_t,a(s.$t("cost.table.promptTokens")),1),t("th",ht,a(s.$t("cost.table.completionTokens")),1),t("th",yt,a(s.$t("cost.table.totalTokens")),1),t("th",kt,a(s.$t("cost.table.estimatedCost")),1),t("th",$t,a(s.$t("cost.table.pricingSource")),1)])]),t("tbody",null,[(f(!0),p(M,null,A(l.data,e=>(f(),p("tr",{key:e.model,class:"border-b border-border-default/50 text-text-secondary hover:bg-surface-overlay transition-colors"},[t("td",Ct,a(e.model),1),t("td",Mt,a(e.sessionCount),1),t("td",Pt,a(e.promptTokens.toLocaleString()),1),t("td",Tt,a(e.completionTokens.toLocaleString()),1),t("td",vt,a(e.totalTokens.toLocaleString()),1),t("td",St,a(o(e.estimatedCost)),1),t("td",Dt,a(e.pricing.source),1)]))),128))])])])]))}}),Lt={class:"h-full overflow-y-auto p-6"},zt={class:"mb-6 text-lg font-semibold text-text-primary"},At={class:"mt-6 grid gap-6 lg:grid-cols-2"},Bt={class:"mt-6"},wt={class:"mt-6 flex items-start gap-2 rounded-lg border border-border-default bg-surface-raised p-4 text-xs text-text-muted"},Ft={key:1,class:"flex h-64 items-center justify-center"},It={class:"text-sm text-text-muted"},Ot=g({__name:"CostDashboardPage",setup(l){const o=R();return(s,n)=>(f(),p("div",Lt,[t("h1",zt,a(s.$t("cost.title")),1),u(o).totalSessions>0?(f(),p(M,{key:0},[x(st,{"total-tokens":u(o).totalTokens,"total-sessions":u(o).totalSessions,"estimated-cost":u(o).totalEstimatedCost,"avg-cost-per-session":u(o).avgCostPerSession},null,8,["total-tokens","total-sessions","estimated-cost","avg-cost-per-session"]),t("div",At,[x(rt,{data:u(o).modelUsage},null,8,["data"]),x(ct,{data:u(o).dailyUsage},null,8,["data"])]),t("div",Bt,[x(Et,{data:u(o).modelUsage},null,8,["data"])]),t("div",wt,[x(u(N),{class:"mt-0.5 h-3.5 w-3.5 shrink-0"}),t("p",null,a(s.$t("cost.disclaimer")),1)])],64)):(f(),p("div",Ft,[t("p",It,a(s.$t("cost.noData")),1)]))]))}});export{Ot as default};