openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
3 lines • 4.91 kB
JavaScript
import{n as e}from"./rolldown-runtime-8BhlS34s.js";import{ao as t,so as n,wo as r}from"./ui-DuRgK6kL.js";import{n as i}from"./usage-BQd4o5lO.js";import{n as a,t as o}from"./provider-usage-request-DaxVEnIY.js";function s(e=new Date){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function c(e=new Date){let t=new Date(e);return t.setDate(t.getDate()-29),{startDate:s(t),endDate:s(e)}}function l(e,t,n,r,i){if(r&&e.length>0)for(let r of e.slice(-1)){let i=n.indexOf(r),a=n.indexOf(t);if(i!==-1&&a!==-1){let[t,r]=i<a?[i,a]:[a,i];return[...new Set([...e,...n.slice(t,r+1)])]}}return e.includes(t)?e.filter(e=>e!==t):i?[...e,t]:[t]}function u(e,t,n,r){if(r&&e.length>0){let r=n.indexOf(e.at(-1)??``),i=n.indexOf(t);if(r!==-1&&i!==-1){let[t,a]=r<i?[r,i]:[i,r];return[...new Set([...e,...n.slice(t,a+1)])]}}return e.length===1&&e[0]===t?[]:[t]}function d(e){let t=e.split(`
`),n=new Map,r=[];for(let e of t){let t=/^\[Tool:\s*([^\]]+)\]/.exec(e.trim())?.[1];if(t){n.set(t,(n.get(t)??0)+1);continue}e.trim().startsWith(`[Tool Result]`)||r.push(e)}let i=Array.from(n.entries()).toSorted((e,t)=>t[1]-e[1]),a=i.reduce((e,[,t])=>e+t,0);return{tools:i,summary:i.length>0?`Tools: ${i.map(([e,t])=>`${e}×${t}`).join(`, `)} (${a} calls)`:``,cleanContent:r.join(`
`).trim()}}var f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O;function k(){return(k=e((()=>{f=e=>{let t=e.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`).replace(/\?/g,`.`);return RegExp(`^${t}$`,`i`)},p=e=>{let t=r(e);if(!t)return null;t.startsWith(`$`)&&(t=t.slice(1));let n=1;if(t.endsWith(`k`)?(n=1e3,t=t.slice(0,-1)):t.endsWith(`m`)&&(n=1e6,t=t.slice(0,-1)),!/^\d+(?:\.\d+)?$/.test(t))return null;let i=Number(t)*n;return!Number.isFinite(i)||!Number.isSafeInteger(Math.round(i))?null:i},m=e=>(e.match(/(?:[^\s"]|"[^"]*")+/g)??[]).map(e=>{let t=e.replace(/^"(.*)"$/u,`$1`),n=t.indexOf(`:`);return n>0?{key:t.slice(0,n),value:t.slice(n+1).replace(/^"(.*)"$/u,`$1`),raw:t}:{value:t,raw:e}}),h=e=>e.filter(e=>!!e).map(e=>r(e)),g=e=>h([e.label,e.key,e.sessionId]),_=e=>h([e.modelProvider,e.providerOverride,e.origin?.provider,...(e.usage?.modelUsage??[]).map(e=>e.provider)]),v=e=>h([e.model,...(e.usage?.modelUsage??[]).map(e=>e.model)]),y=e=>(e.usage?.toolUsage?.tools??[]).map(e=>r(e.name)),b={tools:e=>(e.usage?.toolUsage?.totalCalls??0)>0,errors:e=>(e.usage?.messageCounts?.errors??0)>0,context:e=>e.hasContextWeight===!0,usage:e=>!!e.usage,model:e=>v(e).length>0,provider:e=>_(e).length>0},x=(e,t)=>e>=t,S=(e,t)=>e<=t,C={mintokens:[e=>e.usage?.totalTokens??0,x],maxtokens:[e=>e.usage?.totalTokens??0,S],mincost:[e=>e.usage?.totalCost??0,x],maxcost:[e=>e.usage?.totalCost??0,S],minmessages:[e=>e.usage?.messageCounts?.total??0,x],maxmessages:[e=>e.usage?.messageCounts?.total??0,S]},w=new Set([`agent`,`channel`,`chat`,`provider`,`model`,`tool`,`label`,`key`,`session`,`id`,`has`,...Object.keys(C)]),T=new Set([`channel`,`provider`,`model`,`tool`]),E=()=>!0,D=(e,t,n)=>{if(e.key&&!w.has(t))return n.push(`Unknown filter: ${e.key}`),E;e.key&&e.value===``&&n.push(`Missing value for ${e.key}`);let i=r(e.value??``),a=Object.hasOwn(C,t)?C[t]:void 0,o=a&&e.value?p(e.value):null;if(a&&e.value&&o===null&&n.push(`Invalid number for ${e.key}`),t===`has`){let t=Object.hasOwn(b,i)?b[i]:void 0;return e.value&&!t&&n.push(`Unknown has:${e.value}`),t??E}if(!i)return E;if(!e.key)return e=>g(e).some(e=>e.includes(i));switch(t){case`agent`:return e=>r(e.agentId).includes(i);case`channel`:return e=>r(e.channel).includes(i);case`chat`:return e=>r(e.chatType).includes(i);case`provider`:return e=>_(e).some(e=>e.includes(i));case`model`:return e=>v(e).some(e=>e.includes(i));case`tool`:return e=>y(e).some(e=>e.includes(i));case`label`:return e=>r(e.label).includes(i);case`key`:case`session`:case`id`:if(i.includes(`*`)||i.includes(`?`)){let e;return t=>(e??=f(i),e.test(t.key)||(t.sessionId?e.test(t.sessionId):!1))}return e=>r(e.key).includes(i)||r(e.sessionId).includes(i)}if(!a||o===null)return E;let[s,c]=a;return e=>c(s(e),o)},O=(e,t)=>{let n=m(t);if(n.length===0)return{sessions:e,warnings:[]};let i=[],a=new Map,o=n.map(e=>{let t=r(e.key??``),n=D(e,t,i);if(!T.has(t))return n;let o=a.get(t)??[];return e.value&&o.push(n),a.set(t,o),e=>o.length===0||o.some(t=>t(e))});return{sessions:e.filter(e=>o.every(t=>t(e))),warnings:i}}})))()}async function A(e,r,o){let s,c=a(e,o?{signal:o}:void 0).then(e=>s={state:`settled`,result:e});try{let[t,a]=await Promise.all([i(e,r,{signal:o}),c]),s={updatedAt:t.updatedAt,days:(Date.parse(t.endDate)-Date.parse(t.startDate))/864e5+1,daily:t.aggregates.costDaily??[],totals:t.totals,cacheStatus:t.cacheStatus};return n({result:t,costSummary:s,providerUsage:a})}catch(e){if(o?.aborted)throw e;return t({cause:e,providerUsage:s??{state:`pending`}})}}function j(){return(j=e((()=>{o()})))()}export{m as a,d as c,s as i,u as l,A as n,O as o,c as r,k as s,j as t,l as u};