@agent-receipts/dashboard 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -5
- package/standalone/apps/web/.next/BUILD_ID +1 -1
- package/standalone/apps/web/.next/app-build-manifest.json +46 -46
- package/standalone/apps/web/.next/app-path-routes-manifest.json +11 -11
- package/standalone/apps/web/.next/build-manifest.json +2 -2
- package/standalone/apps/web/.next/prerender-manifest.json +27 -27
- package/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/_not-found.html +2 -2
- package/standalone/apps/web/.next/server/app/_not-found.rsc +1 -1
- package/standalone/apps/web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/agents.html +2 -2
- package/standalone/apps/web/.next/server/app/agents.rsc +1 -1
- package/standalone/apps/web/.next/server/app/api/agents/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/agents/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/chains/[id]/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/chains/[id]/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/chains/[id]/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/cleanup/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/config/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/config/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/invoices/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/invoices/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/invoices/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/judgments/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/judgments/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/judgments/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/[id]/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/[id]/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/[id]/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/search/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/search/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/stats/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/stats/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/verify/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/verify/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/verify/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/chains/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/chains/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/chains.html +2 -2
- package/standalone/apps/web/.next/server/app/chains.rsc +2 -2
- package/standalone/apps/web/.next/server/app/constraints/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/constraints.html +2 -2
- package/standalone/apps/web/.next/server/app/constraints.rsc +2 -2
- package/standalone/apps/web/.next/server/app/index.html +2 -2
- package/standalone/apps/web/.next/server/app/index.rsc +1 -1
- package/standalone/apps/web/.next/server/app/invoices/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/invoices.html +2 -2
- package/standalone/apps/web/.next/server/app/invoices.rsc +1 -1
- package/standalone/apps/web/.next/server/app/judgments/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/judgments.html +2 -2
- package/standalone/apps/web/.next/server/app/judgments.rsc +2 -2
- package/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts/page.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts.html +2 -2
- package/standalone/apps/web/.next/server/app/receipts.rsc +2 -2
- package/standalone/apps/web/.next/server/app/settings/page.js +1 -1
- package/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/settings.html +2 -2
- package/standalone/apps/web/.next/server/app/settings.rsc +2 -2
- package/standalone/apps/web/.next/server/app/verify/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/verify.html +2 -2
- package/standalone/apps/web/.next/server/app/verify.rsc +1 -1
- package/standalone/apps/web/.next/server/app-paths-manifest.json +11 -11
- package/standalone/apps/web/.next/server/chunks/196.js +1 -0
- package/standalone/apps/web/.next/server/chunks/615.js +189 -0
- package/standalone/apps/web/.next/server/pages/404.html +2 -2
- package/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/standalone/apps/web/.next/server/pages-manifest.json +1 -1
- package/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/standalone/apps/web/.next/static/chunks/app/agents/[id]/{page-6072c54c4f907f32.js → page-c0e1718cad311434.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/chains/{page-69ef1e730d961039.js → page-d0b634ca7d0aa92d.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/constraints/{page-05d35b57f9c424db.js → page-6baf6f176d4a9e3d.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/judgments/{page-9715df3ce30f24c0.js → page-22c741e87fc41908.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/receipts/{page-a788cdbaf3879d37.js → page-ef79c1140a9c42e6.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/settings/{page-154ca65062c2628d.js → page-8f1d3f326821cc04.js} +1 -1
- package/standalone/node_modules/.pnpm/postcss@8.4.31/node_modules/postcss/package.json +0 -0
- package/standalone/packages/crypto/package.json +1 -1
- package/standalone/packages/mcp-server/package.json +4 -2
- package/standalone/apps/web/.next/server/chunks/350.js +0 -134
- package/standalone/apps/web/.next/server/chunks/998.js +0 -1
- /package/standalone/apps/web/.next/static/{anoAsXJqSpjkXJL9E9cZM → PR01YFr8r3jMbfS8pPz1u}/_buildManifest.js +0 -0
- /package/standalone/apps/web/.next/static/{anoAsXJqSpjkXJL9E9cZM → PR01YFr8r3jMbfS8pPz1u}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[886],{734:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Receipt",[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 17.5v-11",key:"1jc1ny"}]])},1082:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]])},4627:(e,t,s)=>{"use strict";s.d(t,{b:()=>o});var a=s(88111),n=s(96741),r=s(11063);let i=(0,r.A)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]),l=(0,r.A)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),c=(0,r.A)("ArrowUpDown",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);function o(e){let{columns:t,data:s,sortField:r,sortDir:o,onSort:d,onRowClick:u,rowKey:x,className:p}=e;return(0,a.jsx)("div",{className:(0,n.cn)("card overflow-hidden",p),children:(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full text-sm",children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{className:"border-b border-border bg-bg-secondary",children:t.map(e=>(0,a.jsx)("th",{className:(0,n.cn)("px-4 py-3 text-left text-xs font-medium text-text-muted uppercase tracking-wider whitespace-nowrap",e.sortable&&"cursor-pointer select-none hover:text-text-secondary",e.className),onClick:e.sortable&&d?()=>d(e.key):void 0,children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[e.label,e.sortable&&(r===e.key?"asc"===o?(0,a.jsx)(i,{className:"w-3 h-3"}):(0,a.jsx)(l,{className:"w-3 h-3"}):(0,a.jsx)(c,{className:"w-3 h-3 opacity-30"}))]})},e.key))})}),(0,a.jsx)("tbody",{className:"divide-y divide-border-subtle",children:s.map(e=>(0,a.jsx)("tr",{className:(0,n.cn)("transition-colors",u&&"cursor-pointer hover:bg-bg-secondary"),onClick:u?()=>u(e):void 0,children:t.map(t=>(0,a.jsx)("td",{className:(0,n.cn)("px-4 py-3 whitespace-nowrap",t.className),children:t.render(e)},t.key))},x(e)))})]})})})}},4736:(e,t,s)=>{"use strict";var a=s(11504);s.o(a,"usePathname")&&s.d(t,{usePathname:function(){return a.usePathname}}),s.o(a,"useRouter")&&s.d(t,{useRouter:function(){return a.useRouter}}),s.o(a,"useSearchParams")&&s.d(t,{useSearchParams:function(){return a.useSearchParams}})},6678:(e,t,s)=>{"use strict";s.d(t,{p:()=>i});var a=s(95388),n=s(23176),r=s(89654);function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{refreshInterval:t}=(0,r.c)(),s="receipts".concat((0,n.Go)(e));return(0,a.Ay)(s,()=>(0,n.qb)(e),{refreshInterval:t,revalidateOnFocus:!0})}},19593:(e,t,s)=>{"use strict";s.d(t,{d:()=>l});var a=s(88111),n=s(30417),r=s(28826),i=s(96741);function l(e){let{page:t,totalPages:s,onPageChange:l,className:c}=e;if(s<=1)return null;let o=[];if(s<=7)for(let e=1;e<=s;e++)o.push(e);else{o.push(1),t>3&&o.push("ellipsis");for(let e=Math.max(2,t-1);e<=Math.min(s-1,t+1);e++)o.push(e);t<s-2&&o.push("ellipsis"),o.push(s)}return(0,a.jsxs)("div",{className:(0,i.cn)("flex items-center justify-center gap-1",c),children:[(0,a.jsx)("button",{onClick:()=>l(t-1),disabled:t<=1,className:"p-2 rounded-md text-text-muted hover:bg-bg-tertiary disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:(0,a.jsx)(n.A,{className:"w-4 h-4"})}),o.map((e,s)=>"ellipsis"===e?(0,a.jsx)("span",{className:"px-2 text-text-muted",children:"..."},"e".concat(s)):(0,a.jsx)("button",{onClick:()=>l(e),className:(0,i.cn)("px-3 py-1 rounded-md text-sm transition-colors",e===t?"bg-primary text-white font-medium":"text-text-secondary hover:bg-bg-tertiary"),children:e},e)),(0,a.jsx)("button",{onClick:()=>l(t+1),disabled:t>=s,className:"p-2 rounded-md text-text-muted hover:bg-bg-tertiary disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:(0,a.jsx)(r.A,{className:"w-4 h-4"})})]})}},23176:(e,t,s)=>{"use strict";async function a(e,t){let s=await fetch(e,t);if(!s.ok){let e=await s.text().catch(()=>"Unknown error");throw Error("API error ".concat(s.status,": ").concat(e))}return s.json()}function n(e){let t=new URLSearchParams;for(let[s,a]of Object.entries(e))void 0!==a&&""!==a&&t.set(s,String(a));let s=t.toString();return s?"?".concat(s):""}async function r(){return a("/api/stats")}async function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/receipts".concat(n(e)))}async function l(e){return a("/api/receipts/".concat(e))}async function c(e){return a("/api/chains/".concat(e))}async function o(){return a("/api/agents")}async function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/judgments".concat(n(e)))}async function u(e,t){return a("/api/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({receipt:e,public_key:t})})}async function x(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return a("/api/cleanup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dry_run:e})})}async function p(){return a("/api/config")}async function m(e){return a("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function h(e){return a("/api/search".concat(n({q:e})))}async function g(e){return a("/api/invoices",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}s.d(t,{$Q:()=>h,Dz:()=>p,Go:()=>n,Jq:()=>g,Kt:()=>x,Lx:()=>l,MJ:()=>d,YK:()=>r,_R:()=>m,o3:()=>u,oN:()=>c,pQ:()=>o,qb:()=>i})},28826:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},30417:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},37326:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},44632:(e,t,s)=>{"use strict";s.d(t,{p:()=>i});var a=s(88111),n=s(96741),r=s(1082);function i(e){let{icon:t=r.A,title:s,description:i,action:l,className:c}=e;return(0,a.jsxs)("div",{className:(0,n.cn)("flex flex-col items-center justify-center py-16 text-center",c),children:[(0,a.jsx)(t,{className:"w-12 h-12 text-text-muted mb-4"}),(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary mb-1",children:s}),i&&(0,a.jsx)("p",{className:"text-sm text-text-muted max-w-sm",children:i}),l&&(0,a.jsx)("div",{className:"mt-4",children:l})]})}},46233:(e,t,s)=>{"use strict";s.d(t,{W:()=>i});var a=s(88111),n=s(94745),r=s(96741);function i(e){let{message:t="Something went wrong",onRetry:s,className:i}=e;return(0,a.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center justify-center py-16 text-center",i),children:[(0,a.jsx)(n.A,{className:"w-12 h-12 text-danger mb-4"}),(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary mb-1",children:"Error"}),(0,a.jsx)("p",{className:"text-sm text-text-muted max-w-sm mb-4",children:t}),s&&(0,a.jsx)("button",{onClick:s,className:"px-4 py-2 text-sm font-medium bg-primary text-white rounded-md hover:bg-primary-hover transition-colors",children:"Retry"})]})}},47126:(e,t,s)=>{"use strict";s.d(t,{f:()=>i});var a=s(88111),n=s(62455),r=s(96741);function i(e){let{date:t,className:s}=e;return(0,a.jsx)("time",{dateTime:t,title:(0,n.Yq)(t),className:(0,r.cn)("text-text-secondary",s),children:(0,n.fF)(t)})}},58904:(e,t,s)=>{Promise.resolve().then(s.bind(s,98177))},59434:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},62455:(e,t,s)=>{"use strict";function a(e){let t="string"==typeof e?new Date(e):e,s=new Date().getTime()-t.getTime();if(s<0)return"just now";let a=Math.floor(s/1e3);if(a<60)return"".concat(a,"s ago");let n=Math.floor(a/60);if(n<60)return"".concat(n," min ago");let r=Math.floor(n/60);if(r<24)return"".concat(r," hr ago");let i=Math.floor(r/24);if(i<30)return"".concat(i,"d ago");let l=Math.floor(i/30);return"".concat(l,"mo ago")}function n(e){return null==e?"—":e<1e3?"".concat(e,"ms"):"".concat((e/1e3).toFixed(1),"s")}function r(e){return null==e?"—":0===e?"$0.00":e<.01?"$".concat(e.toFixed(4)):"$".concat(e.toFixed(2))}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function c(e){return e.toLocaleString("en-US")}function o(e){return"".concat((100*e).toFixed(1),"%")}function d(e){return("string"==typeof e?new Date(e):e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}s.d(t,{Ct:()=>i,Yq:()=>d,ZV:()=>c,a3:()=>n,fF:()=>a,l9:()=>o,lV:()=>l,vv:()=>r})},66187:(e,t,s)=>{"use strict";s.d(t,{AV:()=>c,Eg:()=>i,F6:()=>l,O0:()=>r});var a=s(88111),n=s(96741);function r(e){let{className:t}=e;return(0,a.jsx)("div",{className:(0,n.cn)("animate-pulse bg-bg-tertiary rounded",t)})}function i(e){let{count:t=6}=e;return(0,a.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"card p-4",children:[(0,a.jsx)(r,{className:"h-3 w-16 mb-3"}),(0,a.jsx)(r,{className:"h-7 w-20"})]},t))})}function l(e){let{rows:t=5}=e;return(0,a.jsxs)("div",{className:"card overflow-hidden",children:[(0,a.jsx)("div",{className:"border-b border-border p-3",children:(0,a.jsx)(r,{className:"h-4 w-48"})}),Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-4 p-3 border-b border-border-subtle last:border-0",children:[(0,a.jsx)(r,{className:"h-4 w-24"}),(0,a.jsx)(r,{className:"h-4 w-32"}),(0,a.jsx)(r,{className:"h-4 w-20"}),(0,a.jsx)(r,{className:"h-4 w-16 ml-auto"})]},t))]})}function c(){return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(r,{className:"h-8 w-48"}),(0,a.jsx)(i,{}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,a.jsx)(l,{}),(0,a.jsx)(l,{})]})]})}},68498:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},84109:(e,t,s)=>{"use strict";s.d(t,{Ez:()=>a,ZT:()=>r,av:()=>i,cZ:()=>n});let a={completed:{bg:"bg-success-subtle",text:"text-success",dot:"bg-success"},failed:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"},pending:{bg:"bg-warning-subtle",text:"text-warning",dot:"bg-warning"},timeout:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"}},n={max_latency_ms:"Max Latency",max_cost_usd:"Max Cost",min_confidence:"Min Confidence",required_fields:"Required Fields",status_must_be:"Status Must Be",output_schema:"Output Schema"},r={pass:{bg:"bg-success-subtle",text:"text-success"},fail:{bg:"bg-danger-subtle",text:"text-danger"},partial:{bg:"bg-warning-subtle",text:"text-warning"}},i=1e4},85605:(e,t,s)=>{"use strict";s.d(t,{W:()=>i});var a=s(88111),n=s(96741),r=s(84109);function i(e){var t;let{status:s,className:i}=e,l=null!=(t=r.Ez[s])?t:{bg:"bg-warning-subtle",text:"text-warning",dot:"bg-warning"};return(0,a.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium",l.bg,l.text,i),children:[(0,a.jsx)("span",{className:(0,n.cn)("w-1.5 h-1.5 rounded-full",l.dot)}),s]})}},89654:(e,t,s)=>{"use strict";s.d(t,{c:()=>l});var a=s(55271),n=s(84109);let r="agent-receipts-auto-refresh",i="agent-receipts-refresh-interval";function l(){let[e,t]=(0,a.useState)(!0),[s,l]=(0,a.useState)(n.av);return(0,a.useEffect)(()=>{let e=function(){try{var e;let t="false"!==localStorage.getItem(r),s=parseInt(null!=(e=localStorage.getItem(i))?e:"",10);return{enabled:t,interval:isNaN(s)?n.av:s}}catch(e){return{enabled:!0,interval:n.av}}}();t(e.enabled),l(e.interval)},[]),{enabled:e,interval:s,toggle:(0,a.useCallback)(()=>{t(e=>{let t=!e;try{localStorage.setItem(r,String(t))}catch(e){}return t})},[]),setInterval:(0,a.useCallback)(e=>{l(e);try{localStorage.setItem(i,String(e))}catch(e){}},[]),refreshInterval:e?s:0}}},94745:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},96450:(e,t,s)=>{"use strict";s.d(t,{L:()=>r});var a=s(88111),n=s(96741);function r(e){let{passed:t,total:s,className:r}=e;if(0===s)return(0,a.jsx)("span",{className:"text-text-muted text-xs",children:"—"});let i=t===s;return(0,a.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium",i?"bg-success-subtle text-success":"bg-danger-subtle text-danger",r),children:[t,"/",s," ",i?"✓":"✗"]})}},96741:(e,t,s)=>{"use strict";s.d(t,{cn:()=>r});var a=s(55242),n=s(13065);function r(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,n.QP)((0,a.$)(t))}},98177:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>w});var a=s(88111),n=s(4736),r=s(55271),i=s(6678),l=s(4627),c=s(19593),o=s(85605),d=s(96450),u=s(47126),x=s(44632),p=s(46233),m=s(66187),h=s(62455),g=s(68498),b=s(59434),y=s(37326),f=s(734),v=s(55935),j=s.n(v);function N(){var e,t,s,v,N,w,k,A,C,_,S,M,P,R,O,T;let L=(0,n.useSearchParams)(),q=(0,n.useRouter)(),[F,I]=(0,r.useState)(null!=(e=L.get("search"))?e:""),E={page:parseInt(null!=(t=L.get("page"))?t:"1",10),limit:parseInt(null!=(s=L.get("limit"))?s:"50",10),sort:null!=(v=L.get("sort"))?v:"timestamp:desc",agent_id:null!=(N=L.get("agent_id"))?N:void 0,action:null!=(w=L.get("action"))?w:void 0,status:null!=(k=L.get("status"))?k:void 0,constraint_passed:null!=(A=L.get("constraint_passed"))?A:void 0,receipt_type:null!=(C=L.get("receipt_type"))?C:void 0,environment:null!=(_=L.get("environment"))?_:void 0,search:null!=(S=L.get("search"))?S:void 0},{data:D,error:U,isLoading:J,mutate:z}=(0,i.p)(E),V=(0,r.useCallback)(e=>{let t=new URLSearchParams(L.toString());for(let[s,a]of Object.entries(e))a?t.set(s,a):t.delete(s);e.page||t.set("page","1"),q.push("/receipts?".concat(t.toString()))},[L,q]),K=(0,r.useCallback)(()=>{V({search:F||void 0})},[F,V]),$=(0,r.useCallback)(e=>{var t;let[s,a]=(null!=(t=L.get("sort"))?t:"timestamp:desc").split(":");V({sort:"".concat(e,":").concat(s===e&&"desc"===a?"asc":"desc")})},[L,V]),H=(0,r.useCallback)(()=>{q.push("/receipts"),I("")},[q]),W=L.get("agent_id")||L.get("action")||L.get("status")||L.get("constraint_passed")||L.get("receipt_type")||L.get("environment")||L.get("search"),[Z,Q]=(null!=(M=L.get("sort"))?M:"timestamp:desc").split(":"),Y=[{key:"timestamp",label:"Time",sortable:!0,render:e=>(0,a.jsx)(u.f,{date:e.timestamp,className:"text-xs"})},{key:"receipt_id",label:"Receipt ID",render:e=>(0,a.jsx)("code",{className:"font-mono text-xs text-primary",children:(0,h.Ct)(e.receipt_id)})},{key:"agent_id",label:"Agent",sortable:!0,render:e=>(0,a.jsx)(j(),{href:"/agents/".concat(e.agent_id),className:"text-xs text-text-secondary hover:text-primary",onClick:e=>e.stopPropagation(),children:e.agent_id})},{key:"action",label:"Action",sortable:!0,render:e=>(0,a.jsx)("span",{className:"text-sm",children:e.action})},{key:"status",label:"Status",sortable:!0,render:e=>(0,a.jsx)(o.W,{status:e.status})},{key:"constraints",label:"Constraints",render:e=>{let t=e.constraint_result;if(!t||!Array.isArray(t.results))return(0,a.jsx)("span",{className:"text-text-muted text-xs",children:"—"});let s=t.results.filter(e=>e.passed).length;return(0,a.jsx)(d.L,{passed:s,total:t.results.length})}},{key:"latency_ms",label:"Latency",sortable:!0,render:e=>(0,a.jsx)("span",{className:"text-xs text-text-secondary",children:(0,h.a3)(e.latency_ms)})},{key:"cost_usd",label:"Cost",sortable:!0,render:e=>(0,a.jsx)("span",{className:"text-xs text-text-secondary",children:(0,h.vv)(e.cost_usd)})},{key:"chain_id",label:"Chain",render:e=>e.chain_id?(0,a.jsx)(j(),{href:"/chains/".concat(e.chain_id),className:"font-mono text-xs text-primary hover:underline",onClick:e=>e.stopPropagation(),children:(0,h.Ct)(e.chain_id,10)}):(0,a.jsx)("span",{className:"text-text-muted text-xs",children:"—"})}],B=(0,r.useCallback)(()=>{if(!D)return;let e=new Blob([JSON.stringify(D.data,null,2)],{type:"application/json"}),t=URL.createObjectURL(e),s=document.createElement("a");s.href=t,s.download="receipts-".concat(new Date().toISOString().slice(0,10),".json"),s.click(),URL.revokeObjectURL(t)},[D]);return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsx)("h1",{className:"text-lg font-semibold text-text-primary",children:"Receipts"})}),(0,a.jsx)("div",{className:"card p-4 space-y-3",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("select",{value:null!=(P=L.get("status"))?P:"",onChange:e=>V({status:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Status"}),(0,a.jsx)("option",{value:"completed",children:"Completed"}),(0,a.jsx)("option",{value:"failed",children:"Failed"}),(0,a.jsx)("option",{value:"pending",children:"Pending"}),(0,a.jsx)("option",{value:"timeout",children:"Timeout"})]}),(0,a.jsxs)("select",{value:null!=(R=L.get("constraint_passed"))?R:"",onChange:e=>V({constraint_passed:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Constraints"}),(0,a.jsx)("option",{value:"true",children:"Passed"}),(0,a.jsx)("option",{value:"false",children:"Failed"})]}),(0,a.jsxs)("select",{value:null!=(O=L.get("receipt_type"))?O:"",onChange:e=>V({receipt_type:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Types"}),(0,a.jsx)("option",{value:"action",children:"Action"}),(0,a.jsx)("option",{value:"judgment",children:"Judgment"}),(0,a.jsx)("option",{value:"arbitration",children:"Arbitration"})]}),(0,a.jsxs)("select",{value:null!=(T=L.get("environment"))?T:"",onChange:e=>V({environment:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Environments"}),(0,a.jsx)("option",{value:"production",children:"Production"}),(0,a.jsx)("option",{value:"staging",children:"Staging"}),(0,a.jsx)("option",{value:"test",children:"Test"})]}),(0,a.jsx)("div",{className:"flex-1 flex items-center gap-2 min-w-[200px]",children:(0,a.jsx)("input",{type:"text",placeholder:"Search...",value:F,onChange:e=>I(e.target.value),onKeyDown:e=>"Enter"===e.key&&K(),className:"flex-1 px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary placeholder:text-text-muted"})}),W&&(0,a.jsxs)("button",{onClick:H,className:"flex items-center gap-1 px-3 py-1.5 text-xs text-text-muted hover:text-text-secondary transition-colors",children:[(0,a.jsx)(g.A,{className:"w-3 h-3"})," Clear"]})]})}),D&&(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsxs)("span",{className:"text-text-muted",children:["Showing ",(D.pagination.page-1)*D.pagination.limit+1,"–",Math.min(D.pagination.page*D.pagination.limit,D.pagination.total)," of ",D.pagination.total," receipts"]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("button",{onClick:B,className:"flex items-center gap-1 px-3 py-1.5 text-xs border border-border rounded-md text-text-secondary hover:bg-bg-secondary transition-colors",children:[(0,a.jsx)(b.A,{className:"w-3 h-3"})," Export"]}),(0,a.jsxs)("button",{onClick:()=>z(),className:"flex items-center gap-1 px-3 py-1.5 text-xs border border-border rounded-md text-text-secondary hover:bg-bg-secondary transition-colors",children:[(0,a.jsx)(y.A,{className:"w-3 h-3"})," Refresh"]})]})]}),U?(0,a.jsx)(p.W,{message:U.message,onRetry:()=>z()}):J?(0,a.jsx)(m.F6,{rows:10}):D&&0!==D.data.length?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.b,{columns:Y,data:D.data,sortField:Z,sortDir:Q,onSort:$,onRowClick:e=>q.push("/receipts/".concat(e.receipt_id)),rowKey:e=>e.receipt_id}),(0,a.jsx)(c.d,{page:D.pagination.page,totalPages:D.pagination.total_pages,onPageChange:e=>V({page:String(e)})})]}):(0,a.jsx)(x.p,{icon:f.A,title:"No receipts found",description:W?"Try adjusting your filters":"Create receipts using the MCP server, SDK, or CLI"})]})}function w(){return(0,a.jsx)(r.Suspense,{fallback:(0,a.jsx)(m.F6,{rows:10}),children:(0,a.jsx)(N,{})})}}},e=>{e.O(0,[702,935,388,814,743,358],()=>e(e.s=58904)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[886],{734:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Receipt",[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 17.5v-11",key:"1jc1ny"}]])},1082:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]])},4627:(e,t,s)=>{"use strict";s.d(t,{b:()=>o});var a=s(88111),n=s(96741),r=s(11063);let i=(0,r.A)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]),l=(0,r.A)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),c=(0,r.A)("ArrowUpDown",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);function o(e){let{columns:t,data:s,sortField:r,sortDir:o,onSort:d,onRowClick:u,rowKey:x,className:p}=e;return(0,a.jsx)("div",{className:(0,n.cn)("card overflow-hidden",p),children:(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full text-sm",children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{className:"border-b border-border bg-bg-secondary",children:t.map(e=>(0,a.jsx)("th",{className:(0,n.cn)("px-4 py-3 text-left text-xs font-medium text-text-muted uppercase tracking-wider whitespace-nowrap",e.sortable&&"cursor-pointer select-none hover:text-text-secondary",e.className),onClick:e.sortable&&d?()=>d(e.key):void 0,children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[e.label,e.sortable&&(r===e.key?"asc"===o?(0,a.jsx)(i,{className:"w-3 h-3"}):(0,a.jsx)(l,{className:"w-3 h-3"}):(0,a.jsx)(c,{className:"w-3 h-3 opacity-30"}))]})},e.key))})}),(0,a.jsx)("tbody",{className:"divide-y divide-border-subtle",children:s.map(e=>(0,a.jsx)("tr",{className:(0,n.cn)("transition-colors",u&&"cursor-pointer hover:bg-bg-secondary"),onClick:u?()=>u(e):void 0,children:t.map(t=>(0,a.jsx)("td",{className:(0,n.cn)("px-4 py-3 whitespace-nowrap",t.className),children:t.render(e)},t.key))},x(e)))})]})})})}},4736:(e,t,s)=>{"use strict";var a=s(11504);s.o(a,"usePathname")&&s.d(t,{usePathname:function(){return a.usePathname}}),s.o(a,"useRouter")&&s.d(t,{useRouter:function(){return a.useRouter}}),s.o(a,"useSearchParams")&&s.d(t,{useSearchParams:function(){return a.useSearchParams}})},6678:(e,t,s)=>{"use strict";s.d(t,{p:()=>i});var a=s(95388),n=s(23176),r=s(89654);function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{refreshInterval:t}=(0,r.c)(),s="receipts".concat((0,n.Go)(e));return(0,a.Ay)(s,()=>(0,n.qb)(e),{refreshInterval:t,revalidateOnFocus:!0})}},19593:(e,t,s)=>{"use strict";s.d(t,{d:()=>l});var a=s(88111),n=s(30417),r=s(28826),i=s(96741);function l(e){let{page:t,totalPages:s,onPageChange:l,className:c}=e;if(s<=1)return null;let o=[];if(s<=7)for(let e=1;e<=s;e++)o.push(e);else{o.push(1),t>3&&o.push("ellipsis");for(let e=Math.max(2,t-1);e<=Math.min(s-1,t+1);e++)o.push(e);t<s-2&&o.push("ellipsis"),o.push(s)}return(0,a.jsxs)("div",{className:(0,i.cn)("flex items-center justify-center gap-1",c),children:[(0,a.jsx)("button",{onClick:()=>l(t-1),disabled:t<=1,className:"p-2 rounded-md text-text-muted hover:bg-bg-tertiary disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:(0,a.jsx)(n.A,{className:"w-4 h-4"})}),o.map((e,s)=>"ellipsis"===e?(0,a.jsx)("span",{className:"px-2 text-text-muted",children:"..."},"e".concat(s)):(0,a.jsx)("button",{onClick:()=>l(e),className:(0,i.cn)("px-3 py-1 rounded-md text-sm transition-colors",e===t?"bg-primary text-white font-medium":"text-text-secondary hover:bg-bg-tertiary"),children:e},e)),(0,a.jsx)("button",{onClick:()=>l(t+1),disabled:t>=s,className:"p-2 rounded-md text-text-muted hover:bg-bg-tertiary disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:(0,a.jsx)(r.A,{className:"w-4 h-4"})})]})}},23176:(e,t,s)=>{"use strict";async function a(e,t){let s=await fetch(e,t);if(!s.ok){let e=await s.text().catch(()=>"Unknown error");throw Error("API error ".concat(s.status,": ").concat(e))}return s.json()}function n(e){let t=new URLSearchParams;for(let[s,a]of Object.entries(e))void 0!==a&&""!==a&&t.set(s,String(a));let s=t.toString();return s?"?".concat(s):""}async function r(){return a("/api/stats")}async function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/receipts".concat(n(e)))}async function l(e){return a("/api/receipts/".concat(e))}async function c(e){return a("/api/chains/".concat(e))}async function o(){return a("/api/agents")}async function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/judgments".concat(n(e)))}async function u(e,t){return a("/api/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({receipt:e,public_key:t})})}async function x(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return a("/api/cleanup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dry_run:e})})}async function p(){return a("/api/config")}async function m(e){return a("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function h(e){return a("/api/search".concat(n({q:e})))}async function g(e){return a("/api/invoices",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}s.d(t,{$Q:()=>h,Dz:()=>p,Go:()=>n,Jq:()=>g,Kt:()=>x,Lx:()=>l,MJ:()=>d,YK:()=>r,_R:()=>m,o3:()=>u,oN:()=>c,pQ:()=>o,qb:()=>i})},28826:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},30417:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},37326:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},44632:(e,t,s)=>{"use strict";s.d(t,{p:()=>i});var a=s(88111),n=s(96741),r=s(1082);function i(e){let{icon:t=r.A,title:s,description:i,action:l,className:c}=e;return(0,a.jsxs)("div",{className:(0,n.cn)("flex flex-col items-center justify-center py-16 text-center",c),children:[(0,a.jsx)(t,{className:"w-12 h-12 text-text-muted mb-4"}),(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary mb-1",children:s}),i&&(0,a.jsx)("p",{className:"text-sm text-text-muted max-w-sm",children:i}),l&&(0,a.jsx)("div",{className:"mt-4",children:l})]})}},46233:(e,t,s)=>{"use strict";s.d(t,{W:()=>i});var a=s(88111),n=s(94745),r=s(96741);function i(e){let{message:t="Something went wrong",onRetry:s,className:i}=e;return(0,a.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center justify-center py-16 text-center",i),children:[(0,a.jsx)(n.A,{className:"w-12 h-12 text-danger mb-4"}),(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary mb-1",children:"Error"}),(0,a.jsx)("p",{className:"text-sm text-text-muted max-w-sm mb-4",children:t}),s&&(0,a.jsx)("button",{onClick:s,className:"px-4 py-2 text-sm font-medium bg-primary text-white rounded-md hover:bg-primary-hover transition-colors",children:"Retry"})]})}},47126:(e,t,s)=>{"use strict";s.d(t,{f:()=>i});var a=s(88111),n=s(62455),r=s(96741);function i(e){let{date:t,className:s}=e;return(0,a.jsx)("time",{dateTime:t,title:(0,n.Yq)(t),className:(0,r.cn)("text-text-secondary",s),children:(0,n.fF)(t)})}},58904:(e,t,s)=>{Promise.resolve().then(s.bind(s,98177))},59434:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},62455:(e,t,s)=>{"use strict";function a(e){let t="string"==typeof e?new Date(e):e,s=new Date().getTime()-t.getTime();if(s<0)return"just now";let a=Math.floor(s/1e3);if(a<60)return"".concat(a,"s ago");let n=Math.floor(a/60);if(n<60)return"".concat(n," min ago");let r=Math.floor(n/60);if(r<24)return"".concat(r," hr ago");let i=Math.floor(r/24);if(i<30)return"".concat(i,"d ago");let l=Math.floor(i/30);return"".concat(l,"mo ago")}function n(e){return null==e?"—":e<1e3?"".concat(e,"ms"):"".concat((e/1e3).toFixed(1),"s")}function r(e){return null==e?"—":0===e?"$0.00":e<.01?"$".concat(e.toFixed(4)):"$".concat(e.toFixed(2))}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function c(e){return e.toLocaleString("en-US")}function o(e){return"".concat((100*e).toFixed(1),"%")}function d(e){return("string"==typeof e?new Date(e):e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}s.d(t,{Ct:()=>i,Yq:()=>d,ZV:()=>c,a3:()=>n,fF:()=>a,l9:()=>o,lV:()=>l,vv:()=>r})},66187:(e,t,s)=>{"use strict";s.d(t,{AV:()=>c,Eg:()=>i,F6:()=>l,O0:()=>r});var a=s(88111),n=s(96741);function r(e){let{className:t}=e;return(0,a.jsx)("div",{className:(0,n.cn)("animate-pulse bg-bg-tertiary rounded",t)})}function i(e){let{count:t=6}=e;return(0,a.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"card p-4",children:[(0,a.jsx)(r,{className:"h-3 w-16 mb-3"}),(0,a.jsx)(r,{className:"h-7 w-20"})]},t))})}function l(e){let{rows:t=5}=e;return(0,a.jsxs)("div",{className:"card overflow-hidden",children:[(0,a.jsx)("div",{className:"border-b border-border p-3",children:(0,a.jsx)(r,{className:"h-4 w-48"})}),Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-4 p-3 border-b border-border-subtle last:border-0",children:[(0,a.jsx)(r,{className:"h-4 w-24"}),(0,a.jsx)(r,{className:"h-4 w-32"}),(0,a.jsx)(r,{className:"h-4 w-20"}),(0,a.jsx)(r,{className:"h-4 w-16 ml-auto"})]},t))]})}function c(){return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(r,{className:"h-8 w-48"}),(0,a.jsx)(i,{}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,a.jsx)(l,{}),(0,a.jsx)(l,{})]})]})}},68498:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},84109:(e,t,s)=>{"use strict";s.d(t,{Ez:()=>a,ZT:()=>r,av:()=>i,cZ:()=>n});let a={completed:{bg:"bg-success-subtle",text:"text-success",dot:"bg-success"},failed:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"},pending:{bg:"bg-warning-subtle",text:"text-warning",dot:"bg-warning"},timeout:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"}},n={max_latency_ms:"Max Latency",max_cost_usd:"Max Cost",min_confidence:"Min Confidence",required_fields:"Required Fields",status_must_be:"Status Must Be",output_schema:"Output Schema"},r={pass:{bg:"bg-success-subtle",text:"text-success"},fail:{bg:"bg-danger-subtle",text:"text-danger"},partial:{bg:"bg-warning-subtle",text:"text-warning"}},i=1e4},85605:(e,t,s)=>{"use strict";s.d(t,{W:()=>i});var a=s(88111),n=s(96741),r=s(84109);function i(e){var t;let{status:s,className:i}=e,l=null!=(t=r.Ez[s])?t:{bg:"bg-warning-subtle",text:"text-warning",dot:"bg-warning"};return(0,a.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium",l.bg,l.text,i),children:[(0,a.jsx)("span",{className:(0,n.cn)("w-1.5 h-1.5 rounded-full",l.dot)}),s]})}},89654:(e,t,s)=>{"use strict";s.d(t,{c:()=>l});var a=s(55271),n=s(84109);let r="agent-receipts-auto-refresh",i="agent-receipts-refresh-interval";function l(){let[e,t]=(0,a.useState)(!0),[s,l]=(0,a.useState)(n.av);return(0,a.useEffect)(()=>{let e=function(){try{var e;let t="false"!==localStorage.getItem(r),s=parseInt(null!=(e=localStorage.getItem(i))?e:"",10);return{enabled:t,interval:isNaN(s)?n.av:s}}catch(e){return{enabled:!0,interval:n.av}}}();t(e.enabled),l(e.interval)},[]),{enabled:e,interval:s,toggle:(0,a.useCallback)(()=>{t(e=>{let t=!e;try{localStorage.setItem(r,String(t))}catch(e){}return t})},[]),setInterval:(0,a.useCallback)(e=>{l(e);try{localStorage.setItem(i,String(e))}catch(e){}},[]),refreshInterval:e?s:0}}},94745:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},96450:(e,t,s)=>{"use strict";s.d(t,{L:()=>r});var a=s(88111),n=s(96741);function r(e){let{passed:t,total:s,className:r}=e;if(0===s)return(0,a.jsx)("span",{className:"text-text-muted text-xs",children:"—"});let i=t===s;return(0,a.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium",i?"bg-success-subtle text-success":"bg-danger-subtle text-danger",r),children:[t,"/",s," ",i?"✓":"✗"]})}},96741:(e,t,s)=>{"use strict";s.d(t,{cn:()=>r});var a=s(55242),n=s(13065);function r(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,n.QP)((0,a.$)(t))}},98177:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>w});var a=s(88111),n=s(4736),r=s(55271),i=s(6678),l=s(4627),c=s(19593),o=s(85605),d=s(96450),u=s(47126),x=s(44632),p=s(46233),m=s(66187),h=s(62455),g=s(68498),b=s(59434),y=s(37326),f=s(734),v=s(55935),j=s.n(v);function N(){var e,t,s,v,N,w,k,A,C,_,S,M,P,R,O,T;let L=(0,n.useSearchParams)(),q=(0,n.useRouter)(),[F,I]=(0,r.useState)(null!=(e=L.get("search"))?e:""),D={page:parseInt(null!=(t=L.get("page"))?t:"1",10),limit:parseInt(null!=(s=L.get("limit"))?s:"50",10),sort:null!=(v=L.get("sort"))?v:"timestamp:desc",agent_id:null!=(N=L.get("agent_id"))?N:void 0,action:null!=(w=L.get("action"))?w:void 0,status:null!=(k=L.get("status"))?k:void 0,constraint_passed:null!=(A=L.get("constraint_passed"))?A:void 0,receipt_type:null!=(C=L.get("receipt_type"))?C:void 0,environment:null!=(_=L.get("environment"))?_:void 0,search:null!=(S=L.get("search"))?S:void 0},{data:E,error:U,isLoading:J,mutate:z}=(0,i.p)(D),V=(0,r.useCallback)(e=>{let t=new URLSearchParams(L.toString());for(let[s,a]of Object.entries(e))a?t.set(s,a):t.delete(s);e.page||t.set("page","1"),q.push("/receipts?".concat(t.toString()))},[L,q]),K=(0,r.useCallback)(()=>{V({search:F||void 0})},[F,V]),$=(0,r.useCallback)(e=>{var t;let[s,a]=(null!=(t=L.get("sort"))?t:"timestamp:desc").split(":");V({sort:"".concat(e,":").concat(s===e&&"desc"===a?"asc":"desc")})},[L,V]),H=(0,r.useCallback)(()=>{q.push("/receipts"),I("")},[q]),W=L.get("agent_id")||L.get("action")||L.get("status")||L.get("constraint_passed")||L.get("receipt_type")||L.get("environment")||L.get("search"),[Z,Q]=(null!=(M=L.get("sort"))?M:"timestamp:desc").split(":"),Y=[{key:"timestamp",label:"Time",sortable:!0,render:e=>(0,a.jsx)(u.f,{date:e.timestamp,className:"text-xs"})},{key:"receipt_id",label:"Receipt ID",render:e=>(0,a.jsx)("code",{className:"font-mono text-xs text-primary",children:(0,h.Ct)(e.receipt_id)})},{key:"agent_id",label:"Agent",sortable:!0,render:e=>(0,a.jsx)(j(),{href:"/agents/".concat(e.agent_id),className:"text-xs text-text-secondary hover:text-primary",onClick:e=>e.stopPropagation(),children:e.agent_id})},{key:"action",label:"Action",sortable:!0,render:e=>(0,a.jsx)("span",{className:"text-sm",children:e.action})},{key:"status",label:"Status",sortable:!0,render:e=>(0,a.jsx)(o.W,{status:e.status})},{key:"constraints",label:"Constraints",render:e=>{let t=e.constraint_result;if(!t||!Array.isArray(t.results))return(0,a.jsx)("span",{className:"text-text-muted text-xs",children:"—"});let s=t.results.filter(e=>e.passed).length;return(0,a.jsx)(d.L,{passed:s,total:t.results.length})}},{key:"latency_ms",label:"Latency",sortable:!0,render:e=>(0,a.jsx)("span",{className:"text-xs text-text-secondary",children:(0,h.a3)(e.latency_ms)})},{key:"cost_usd",label:"Cost",sortable:!0,render:e=>(0,a.jsx)("span",{className:"text-xs text-text-secondary",children:(0,h.vv)(e.cost_usd)})},{key:"chain_id",label:"Chain",render:e=>e.chain_id?(0,a.jsx)(j(),{href:"/chains/".concat(e.chain_id),className:"font-mono text-xs text-primary hover:underline",onClick:e=>e.stopPropagation(),children:(0,h.Ct)(e.chain_id,10)}):(0,a.jsx)("span",{className:"text-text-muted text-xs",children:"—"})}],B=(0,r.useCallback)(()=>{if(!E)return;let e=new Blob([JSON.stringify(E.data,null,2)],{type:"application/json"}),t=URL.createObjectURL(e),s=document.createElement("a");s.href=t,s.download="receipts-".concat(new Date().toISOString().slice(0,10),".json"),s.click(),URL.revokeObjectURL(t)},[E]);return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsx)("h1",{className:"text-lg font-semibold text-text-primary",children:"Receipts"})}),(0,a.jsx)("div",{className:"card p-4 space-y-3",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("select",{value:null!=(P=L.get("status"))?P:"",onChange:e=>V({status:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Status"}),(0,a.jsx)("option",{value:"completed",children:"Completed"}),(0,a.jsx)("option",{value:"failed",children:"Failed"}),(0,a.jsx)("option",{value:"pending",children:"Pending"}),(0,a.jsx)("option",{value:"timeout",children:"Timeout"})]}),(0,a.jsxs)("select",{value:null!=(R=L.get("constraint_passed"))?R:"",onChange:e=>V({constraint_passed:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Constraints"}),(0,a.jsx)("option",{value:"true",children:"Passed"}),(0,a.jsx)("option",{value:"false",children:"Failed"})]}),(0,a.jsxs)("select",{value:null!=(O=L.get("receipt_type"))?O:"",onChange:e=>V({receipt_type:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Types"}),(0,a.jsx)("option",{value:"action",children:"Action"}),(0,a.jsx)("option",{value:"judgment",children:"Judgment"}),(0,a.jsx)("option",{value:"arbitration",children:"Arbitration"})]}),(0,a.jsxs)("select",{value:null!=(T=L.get("environment"))?T:"",onChange:e=>V({environment:e.target.value||void 0}),className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"",children:"All Environments"}),(0,a.jsx)("option",{value:"development",children:"Development"}),(0,a.jsx)("option",{value:"production",children:"Production"}),(0,a.jsx)("option",{value:"staging",children:"Staging"}),(0,a.jsx)("option",{value:"test",children:"Test"})]}),(0,a.jsx)("div",{className:"flex-1 flex items-center gap-2 min-w-[200px]",children:(0,a.jsx)("input",{type:"text",placeholder:"Search...",value:F,onChange:e=>I(e.target.value),onKeyDown:e=>"Enter"===e.key&&K(),className:"flex-1 px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary placeholder:text-text-muted"})}),W&&(0,a.jsxs)("button",{onClick:H,className:"flex items-center gap-1 px-3 py-1.5 text-xs text-text-muted hover:text-text-secondary transition-colors",children:[(0,a.jsx)(g.A,{className:"w-3 h-3"})," Clear"]})]})}),E&&(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsxs)("span",{className:"text-text-muted",children:["Showing ",(E.pagination.page-1)*E.pagination.limit+1,"–",Math.min(E.pagination.page*E.pagination.limit,E.pagination.total)," of ",E.pagination.total," receipts"]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("button",{onClick:B,className:"flex items-center gap-1 px-3 py-1.5 text-xs border border-border rounded-md text-text-secondary hover:bg-bg-secondary transition-colors",children:[(0,a.jsx)(b.A,{className:"w-3 h-3"})," Export"]}),(0,a.jsxs)("button",{onClick:()=>z(),className:"flex items-center gap-1 px-3 py-1.5 text-xs border border-border rounded-md text-text-secondary hover:bg-bg-secondary transition-colors",children:[(0,a.jsx)(y.A,{className:"w-3 h-3"})," Refresh"]})]})]}),U?(0,a.jsx)(p.W,{message:U.message,onRetry:()=>z()}):J?(0,a.jsx)(m.F6,{rows:10}):E&&0!==E.data.length?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.b,{columns:Y,data:E.data,sortField:Z,sortDir:Q,onSort:$,onRowClick:e=>q.push("/receipts/".concat(e.receipt_id)),rowKey:e=>e.receipt_id}),(0,a.jsx)(c.d,{page:E.pagination.page,totalPages:E.pagination.total_pages,onPageChange:e=>V({page:String(e)})})]}):(0,a.jsx)(x.p,{icon:f.A,title:"No receipts found",description:W?"Try adjusting your filters":"Create receipts using the MCP server, SDK, or CLI"})]})}function w(){return(0,a.jsx)(r.Suspense,{fallback:(0,a.jsx)(m.F6,{rows:10}),children:(0,a.jsx)(N,{})})}}},e=>{e.O(0,[702,935,388,814,743,358],()=>e(e.s=58904)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[662],{4461:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>b});var a=s(88111),r=s(55271),n=s(23176),c=s(89654),i=s(24158),l=s(71699),d=s(46233),o=s(66187),x=s(62455),m=s(96741),u=s(57979),h=s(11063);let p=(0,h.A)("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]),g=(0,h.A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);var y=s(59434);function b(){var e,t;let[s,h]=(0,r.useState)(null),[b,f]=(0,r.useState)(!0),[j,v]=(0,r.useState)(null),[N,w]=(0,r.useState)(!1),[k,S]=(0,r.useState)(null),[C,A]=(0,r.useState)(!1),{enabled:_,interval:M,toggle:O,setInterval:I}=(0,c.c)(),[T,E]=(0,r.useState)("system");(0,r.useEffect)(()=>{let e=localStorage.getItem("theme");"dark"===e?E("dark"):"light"===e?E("light"):E("system")},[]);let D=(0,r.useCallback)(e=>{if(E(e),"system"===e){localStorage.removeItem("theme");let e=window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.classList.toggle("dark",e)}else localStorage.setItem("theme",e),document.documentElement.classList.toggle("dark","dark"===e)},[]);(0,r.useEffect)(()=>{!async function(){try{let e=await (0,n.Dz)();h(e)}catch(e){v(e instanceof Error?e.message:"Failed to load config")}finally{f(!1)}}()},[]);let L=(0,r.useCallback)(async(e,t)=>{if(s){w(!0);try{let s=await (0,n._R)({[e]:t});h(e=>({...e,...s}))}catch(e){}finally{w(!1)}}},[s]),P=(0,r.useCallback)(async e=>{A(!0);try{let t=await (0,n.Kt)(e);if(S(t),!e){let e=await (0,n.Dz)();h(e)}}catch(e){}finally{A(!1)}},[]),R=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/receipts?limit=100000"),t=await e.json(),s=JSON.stringify(t.data,null,2),a=new Blob([s],{type:"application/json"}),r=URL.createObjectURL(a),n=document.createElement("a");n.href=r,n.download="all-receipts-".concat(new Date().toISOString().slice(0,10),".json"),n.click(),URL.revokeObjectURL(r)}catch(e){}},[]);if(j)return(0,a.jsx)(d.W,{message:j});if(b||!s)return(0,a.jsx)(o.AV,{});let U=null!=(e=s.public_key)?e:"";return(0,a.jsxs)("div",{className:"space-y-6 max-w-2xl",children:[(0,a.jsx)("h1",{className:"text-lg font-semibold text-text-primary",children:"Settings"}),(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Configuration"})}),(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Data Directory"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:s.data_dir})]})}),(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Public Key"}),(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-0.5",children:[(0,a.jsx)("code",{className:"text-xs font-mono text-text-secondary break-all",children:U||"Not available"}),U&&(0,a.jsx)(l.i,{value:U})]})]})}),(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Agent ID"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:s.agentId})]})}),(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Org ID"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:s.orgId})]})}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{children:(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Environment"})}),(0,a.jsxs)("select",{value:s.environment,onChange:e=>L("environment",e.target.value),disabled:N,className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"production",children:"Production"}),(0,a.jsx)("option",{value:"staging",children:"Staging"}),(0,a.jsx)("option",{value:"test",children:"Test"})]})]})]})]}),(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Storage"})}),(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsx)(i.h,{label:"Total Receipts",value:(0,x.ZV)(null!=(t=s.receipt_count)?t:0),icon:u.A}),(0,a.jsx)(i.h,{label:"Public Key",value:U?"Available":"None",icon:p})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 pt-2",children:[(0,a.jsxs)("button",{onClick:()=>P(!1),disabled:C,className:"flex items-center gap-1 px-4 py-2 text-sm font-medium border border-danger/30 text-danger rounded-md hover:bg-danger-subtle transition-colors disabled:opacity-50",children:[(0,a.jsx)(g,{className:"w-4 h-4"}),C?"Cleaning...":"Cleanup Expired"]}),(0,a.jsxs)("button",{onClick:R,className:"flex items-center gap-1 px-4 py-2 text-sm font-medium border border-border text-text-secondary rounded-md hover:bg-bg-secondary transition-colors",children:[(0,a.jsx)(y.A,{className:"w-4 h-4"}),"Export All"]})]}),k&&(0,a.jsx)("div",{className:"p-3 rounded-md bg-bg-secondary text-sm text-text-secondary",children:k.deleted>0?"Cleaned up ".concat(k.deleted," expired receipt").concat(1!==k.deleted?"s":"",". ").concat(k.remaining," remaining."):"No expired receipts to clean up."})]})]}),(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Display"})}),(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Theme"}),(0,a.jsx)("div",{className:"flex items-center gap-1 border border-border rounded-md overflow-hidden",children:["light","dark","system"].map(e=>(0,a.jsx)("button",{onClick:()=>D(e),className:(0,m.cn)("px-3 py-1.5 text-xs transition-colors",T===e?"bg-primary text-white":"text-text-secondary hover:bg-bg-secondary"),children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Auto-refresh"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:O,className:(0,m.cn)("px-3 py-1.5 text-xs rounded-md border transition-colors",_?"bg-success-subtle text-success border-success/30":"text-text-secondary border-border"),children:_?"On":"Off"}),_&&(0,a.jsxs)("select",{value:M,onChange:e=>I(parseInt(e.target.value,10)),className:"px-2 py-1.5 text-xs border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"5000",children:"5s"}),(0,a.jsx)("option",{value:"10000",children:"10s"}),(0,a.jsx)("option",{value:"30000",children:"30s"}),(0,a.jsx)("option",{value:"60000",children:"60s"})]})]})]})]})]}),U&&(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Public Key Sharing"})}),(0,a.jsxs)("div",{className:"p-4 space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Share this key so others can verify your receipts:"}),(0,a.jsx)("div",{className:"p-3 bg-bg-secondary rounded-md font-mono text-xs text-text-secondary break-all",children:U}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(l.i,{value:U}),(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"Copy Key"})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Host at: ",(0,a.jsx)("code",{className:"bg-bg-tertiary px-1 rounded",children:"yourdomain.com/.well-known/receipt-public-key.json"})]})]})]})]})}},14874:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},23176:(e,t,s)=>{"use strict";async function a(e,t){let s=await fetch(e,t);if(!s.ok){let e=await s.text().catch(()=>"Unknown error");throw Error("API error ".concat(s.status,": ").concat(e))}return s.json()}function r(e){let t=new URLSearchParams;for(let[s,a]of Object.entries(e))void 0!==a&&""!==a&&t.set(s,String(a));let s=t.toString();return s?"?".concat(s):""}async function n(){return a("/api/stats")}async function c(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/receipts".concat(r(e)))}async function i(e){return a("/api/receipts/".concat(e))}async function l(e){return a("/api/chains/".concat(e))}async function d(){return a("/api/agents")}async function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/judgments".concat(r(e)))}async function x(e,t){return a("/api/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({receipt:e,public_key:t})})}async function m(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return a("/api/cleanup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dry_run:e})})}async function u(){return a("/api/config")}async function h(e){return a("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function p(e){return a("/api/search".concat(r({q:e})))}async function g(e){return a("/api/invoices",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}s.d(t,{$Q:()=>p,Dz:()=>u,Go:()=>r,Jq:()=>g,Kt:()=>m,Lx:()=>i,MJ:()=>o,YK:()=>n,_R:()=>h,o3:()=>x,oN:()=>l,pQ:()=>d,qb:()=>c})},24158:(e,t,s)=>{"use strict";s.d(t,{h:()=>n});var a=s(88111),r=s(96741);function n(e){let{label:t,value:s,icon:n,trend:c,className:i}=e;return(0,a.jsxs)("div",{className:(0,r.cn)("card p-4",i),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-text-muted uppercase tracking-wider",children:t}),n&&(0,a.jsx)(n,{className:"w-4 h-4 text-text-muted"})]}),(0,a.jsx)("div",{className:"text-2xl font-semibold text-text-primary",children:s}),c&&(0,a.jsxs)("div",{className:"mt-1 text-xs",children:[(0,a.jsxs)("span",{className:(0,r.cn)(c.value>=0?"text-success":"text-danger"),children:[c.value>=0?"+":"",c.value,"%"]}),(0,a.jsx)("span",{className:"text-text-muted ml-1",children:c.label})]})]})}},29920:(e,t,s)=>{Promise.resolve().then(s.bind(s,4461))},46233:(e,t,s)=>{"use strict";s.d(t,{W:()=>c});var a=s(88111),r=s(94745),n=s(96741);function c(e){let{message:t="Something went wrong",onRetry:s,className:c}=e;return(0,a.jsxs)("div",{className:(0,n.cn)("flex flex-col items-center justify-center py-16 text-center",c),children:[(0,a.jsx)(r.A,{className:"w-12 h-12 text-danger mb-4"}),(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary mb-1",children:"Error"}),(0,a.jsx)("p",{className:"text-sm text-text-muted max-w-sm mb-4",children:t}),s&&(0,a.jsx)("button",{onClick:s,className:"px-4 py-2 text-sm font-medium bg-primary text-white rounded-md hover:bg-primary-hover transition-colors",children:"Retry"})]})}},57979:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]])},59434:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},62455:(e,t,s)=>{"use strict";function a(e){let t="string"==typeof e?new Date(e):e,s=new Date().getTime()-t.getTime();if(s<0)return"just now";let a=Math.floor(s/1e3);if(a<60)return"".concat(a,"s ago");let r=Math.floor(a/60);if(r<60)return"".concat(r," min ago");let n=Math.floor(r/60);if(n<24)return"".concat(n," hr ago");let c=Math.floor(n/24);if(c<30)return"".concat(c,"d ago");let i=Math.floor(c/30);return"".concat(i,"mo ago")}function r(e){return null==e?"—":e<1e3?"".concat(e,"ms"):"".concat((e/1e3).toFixed(1),"s")}function n(e){return null==e?"—":0===e?"$0.00":e<.01?"$".concat(e.toFixed(4)):"$".concat(e.toFixed(2))}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function l(e){return e.toLocaleString("en-US")}function d(e){return"".concat((100*e).toFixed(1),"%")}function o(e){return("string"==typeof e?new Date(e):e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}s.d(t,{Ct:()=>c,Yq:()=>o,ZV:()=>l,a3:()=>r,fF:()=>a,l9:()=>d,lV:()=>i,vv:()=>n})},66187:(e,t,s)=>{"use strict";s.d(t,{AV:()=>l,Eg:()=>c,F6:()=>i,O0:()=>n});var a=s(88111),r=s(96741);function n(e){let{className:t}=e;return(0,a.jsx)("div",{className:(0,r.cn)("animate-pulse bg-bg-tertiary rounded",t)})}function c(e){let{count:t=6}=e;return(0,a.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"card p-4",children:[(0,a.jsx)(n,{className:"h-3 w-16 mb-3"}),(0,a.jsx)(n,{className:"h-7 w-20"})]},t))})}function i(e){let{rows:t=5}=e;return(0,a.jsxs)("div",{className:"card overflow-hidden",children:[(0,a.jsx)("div",{className:"border-b border-border p-3",children:(0,a.jsx)(n,{className:"h-4 w-48"})}),Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-4 p-3 border-b border-border-subtle last:border-0",children:[(0,a.jsx)(n,{className:"h-4 w-24"}),(0,a.jsx)(n,{className:"h-4 w-32"}),(0,a.jsx)(n,{className:"h-4 w-20"}),(0,a.jsx)(n,{className:"h-4 w-16 ml-auto"})]},t))]})}function l(){return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(n,{className:"h-8 w-48"}),(0,a.jsx)(c,{}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,a.jsx)(i,{}),(0,a.jsx)(i,{})]})]})}},71699:(e,t,s)=>{"use strict";s.d(t,{i:()=>l});var a=s(88111),r=s(55271),n=s(14874);let c=(0,s(11063).A)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var i=s(96741);function l(e){let{value:t,className:s}=e,[l,d]=(0,r.useState)(!1),o=(0,r.useCallback)(async()=>{try{await navigator.clipboard.writeText(t),d(!0),setTimeout(()=>d(!1),2e3)}catch(e){}},[t]);return(0,a.jsx)("button",{onClick:o,className:(0,i.cn)("p-1 rounded hover:bg-bg-tertiary text-text-muted hover:text-text-secondary transition-colors",s),title:l?"Copied!":"Copy",children:l?(0,a.jsx)(n.A,{className:"w-3.5 h-3.5 text-success"}):(0,a.jsx)(c,{className:"w-3.5 h-3.5"})})}},84109:(e,t,s)=>{"use strict";s.d(t,{Ez:()=>a,ZT:()=>n,av:()=>c,cZ:()=>r});let a={completed:{bg:"bg-success-subtle",text:"text-success",dot:"bg-success"},failed:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"},pending:{bg:"bg-warning-subtle",text:"text-warning",dot:"bg-warning"},timeout:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"}},r={max_latency_ms:"Max Latency",max_cost_usd:"Max Cost",min_confidence:"Min Confidence",required_fields:"Required Fields",status_must_be:"Status Must Be",output_schema:"Output Schema"},n={pass:{bg:"bg-success-subtle",text:"text-success"},fail:{bg:"bg-danger-subtle",text:"text-danger"},partial:{bg:"bg-warning-subtle",text:"text-warning"}},c=1e4},89654:(e,t,s)=>{"use strict";s.d(t,{c:()=>i});var a=s(55271),r=s(84109);let n="agent-receipts-auto-refresh",c="agent-receipts-refresh-interval";function i(){let[e,t]=(0,a.useState)(!0),[s,i]=(0,a.useState)(r.av);return(0,a.useEffect)(()=>{let e=function(){try{var e;let t="false"!==localStorage.getItem(n),s=parseInt(null!=(e=localStorage.getItem(c))?e:"",10);return{enabled:t,interval:isNaN(s)?r.av:s}}catch(e){return{enabled:!0,interval:r.av}}}();t(e.enabled),i(e.interval)},[]),{enabled:e,interval:s,toggle:(0,a.useCallback)(()=>{t(e=>{let t=!e;try{localStorage.setItem(n,String(t))}catch(e){}return t})},[]),setInterval:(0,a.useCallback)(e=>{i(e);try{localStorage.setItem(c,String(e))}catch(e){}},[]),refreshInterval:e?s:0}}},94745:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},96741:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var a=s(55242),r=s(13065);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.QP)((0,a.$)(t))}}},e=>{e.O(0,[702,814,743,358],()=>e(e.s=29920)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[662],{4461:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>b});var a=s(88111),r=s(55271),n=s(23176),c=s(89654),i=s(24158),l=s(71699),d=s(46233),o=s(66187),x=s(62455),m=s(96741),u=s(57979),h=s(11063);let p=(0,h.A)("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]),g=(0,h.A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);var y=s(59434);function b(){var e,t;let[s,h]=(0,r.useState)(null),[b,f]=(0,r.useState)(!0),[j,v]=(0,r.useState)(null),[N,w]=(0,r.useState)(!1),[k,S]=(0,r.useState)(null),[C,A]=(0,r.useState)(!1),{enabled:_,interval:M,toggle:O,setInterval:I}=(0,c.c)(),[T,E]=(0,r.useState)("system");(0,r.useEffect)(()=>{let e=localStorage.getItem("theme");"dark"===e?E("dark"):"light"===e?E("light"):E("system")},[]);let D=(0,r.useCallback)(e=>{if(E(e),"system"===e){localStorage.removeItem("theme");let e=window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.classList.toggle("dark",e)}else localStorage.setItem("theme",e),document.documentElement.classList.toggle("dark","dark"===e)},[]);(0,r.useEffect)(()=>{!async function(){try{let e=await (0,n.Dz)();h(e)}catch(e){v(e instanceof Error?e.message:"Failed to load config")}finally{f(!1)}}()},[]);let L=(0,r.useCallback)(async(e,t)=>{if(s){w(!0);try{let s=await (0,n._R)({[e]:t});h(e=>({...e,...s}))}catch(e){}finally{w(!1)}}},[s]),P=(0,r.useCallback)(async e=>{A(!0);try{let t=await (0,n.Kt)(e);if(S(t),!e){let e=await (0,n.Dz)();h(e)}}catch(e){}finally{A(!1)}},[]),R=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/receipts?limit=10000"),t=await e.json(),s=JSON.stringify(t.data,null,2),a=new Blob([s],{type:"application/json"}),r=URL.createObjectURL(a),n=document.createElement("a");n.href=r,n.download="all-receipts-".concat(new Date().toISOString().slice(0,10),".json"),n.click(),URL.revokeObjectURL(r)}catch(e){}},[]);if(j)return(0,a.jsx)(d.W,{message:j});if(b||!s)return(0,a.jsx)(o.AV,{});let U=null!=(e=s.public_key)?e:"";return(0,a.jsxs)("div",{className:"space-y-6 max-w-2xl",children:[(0,a.jsx)("h1",{className:"text-lg font-semibold text-text-primary",children:"Settings"}),(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Configuration"})}),(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Data Directory"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:s.data_dir})]})}),(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Public Key"}),(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-0.5",children:[(0,a.jsx)("code",{className:"text-xs font-mono text-text-secondary break-all",children:U||"Not available"}),U&&(0,a.jsx)(l.i,{value:U})]})]})}),(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Agent ID"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:s.agentId})]})}),(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Org ID"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:s.orgId})]})}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{children:(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Environment"})}),(0,a.jsxs)("select",{value:s.environment,onChange:e=>L("environment",e.target.value),disabled:N,className:"px-3 py-1.5 text-sm border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"development",children:"Development"}),(0,a.jsx)("option",{value:"production",children:"Production"}),(0,a.jsx)("option",{value:"staging",children:"Staging"}),(0,a.jsx)("option",{value:"test",children:"Test"})]})]})]})]}),(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Storage"})}),(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsx)(i.h,{label:"Total Receipts",value:(0,x.ZV)(null!=(t=s.receipt_count)?t:0),icon:u.A}),(0,a.jsx)(i.h,{label:"Public Key",value:U?"Available":"None",icon:p})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 pt-2",children:[(0,a.jsxs)("button",{onClick:()=>P(!1),disabled:C,className:"flex items-center gap-1 px-4 py-2 text-sm font-medium border border-danger/30 text-danger rounded-md hover:bg-danger-subtle transition-colors disabled:opacity-50",children:[(0,a.jsx)(g,{className:"w-4 h-4"}),C?"Cleaning...":"Cleanup Expired"]}),(0,a.jsxs)("button",{onClick:R,className:"flex items-center gap-1 px-4 py-2 text-sm font-medium border border-border text-text-secondary rounded-md hover:bg-bg-secondary transition-colors",children:[(0,a.jsx)(y.A,{className:"w-4 h-4"}),"Export All"]})]}),k&&(0,a.jsx)("div",{className:"p-3 rounded-md bg-bg-secondary text-sm text-text-secondary",children:k.deleted>0?"Cleaned up ".concat(k.deleted," expired receipt").concat(1!==k.deleted?"s":"",". ").concat(k.remaining," remaining."):"No expired receipts to clean up."})]})]}),(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Display"})}),(0,a.jsxs)("div",{className:"p-4 space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Theme"}),(0,a.jsx)("div",{className:"flex items-center gap-1 border border-border rounded-md overflow-hidden",children:["light","dark","system"].map(e=>(0,a.jsx)("button",{onClick:()=>D(e),className:(0,m.cn)("px-3 py-1.5 text-xs transition-colors",T===e?"bg-primary text-white":"text-text-secondary hover:bg-bg-secondary"),children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-primary",children:"Auto-refresh"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:O,className:(0,m.cn)("px-3 py-1.5 text-xs rounded-md border transition-colors",_?"bg-success-subtle text-success border-success/30":"text-text-secondary border-border"),children:_?"On":"Off"}),_&&(0,a.jsxs)("select",{value:M,onChange:e=>I(parseInt(e.target.value,10)),className:"px-2 py-1.5 text-xs border border-border rounded-md bg-bg-primary text-text-primary",children:[(0,a.jsx)("option",{value:"5000",children:"5s"}),(0,a.jsx)("option",{value:"10000",children:"10s"}),(0,a.jsx)("option",{value:"30000",children:"30s"}),(0,a.jsx)("option",{value:"60000",children:"60s"})]})]})]})]})]}),U&&(0,a.jsxs)("div",{className:"card",children:[(0,a.jsx)("div",{className:"px-4 py-3 border-b border-border",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary",children:"Public Key Sharing"})}),(0,a.jsxs)("div",{className:"p-4 space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Share this key so others can verify your receipts:"}),(0,a.jsx)("div",{className:"p-3 bg-bg-secondary rounded-md font-mono text-xs text-text-secondary break-all",children:U}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(l.i,{value:U}),(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"Copy Key"})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Host at: ",(0,a.jsx)("code",{className:"bg-bg-tertiary px-1 rounded",children:"yourdomain.com/.well-known/receipt-public-key.json"})]})]})]})]})}},14874:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},23176:(e,t,s)=>{"use strict";async function a(e,t){let s=await fetch(e,t);if(!s.ok){let e=await s.text().catch(()=>"Unknown error");throw Error("API error ".concat(s.status,": ").concat(e))}return s.json()}function r(e){let t=new URLSearchParams;for(let[s,a]of Object.entries(e))void 0!==a&&""!==a&&t.set(s,String(a));let s=t.toString();return s?"?".concat(s):""}async function n(){return a("/api/stats")}async function c(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/receipts".concat(r(e)))}async function i(e){return a("/api/receipts/".concat(e))}async function l(e){return a("/api/chains/".concat(e))}async function d(){return a("/api/agents")}async function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a("/api/judgments".concat(r(e)))}async function x(e,t){return a("/api/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({receipt:e,public_key:t})})}async function m(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return a("/api/cleanup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dry_run:e})})}async function u(){return a("/api/config")}async function h(e){return a("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function p(e){return a("/api/search".concat(r({q:e})))}async function g(e){return a("/api/invoices",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}s.d(t,{$Q:()=>p,Dz:()=>u,Go:()=>r,Jq:()=>g,Kt:()=>m,Lx:()=>i,MJ:()=>o,YK:()=>n,_R:()=>h,o3:()=>x,oN:()=>l,pQ:()=>d,qb:()=>c})},24158:(e,t,s)=>{"use strict";s.d(t,{h:()=>n});var a=s(88111),r=s(96741);function n(e){let{label:t,value:s,icon:n,trend:c,className:i}=e;return(0,a.jsxs)("div",{className:(0,r.cn)("card p-4",i),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-text-muted uppercase tracking-wider",children:t}),n&&(0,a.jsx)(n,{className:"w-4 h-4 text-text-muted"})]}),(0,a.jsx)("div",{className:"text-2xl font-semibold text-text-primary",children:s}),c&&(0,a.jsxs)("div",{className:"mt-1 text-xs",children:[(0,a.jsxs)("span",{className:(0,r.cn)(c.value>=0?"text-success":"text-danger"),children:[c.value>=0?"+":"",c.value,"%"]}),(0,a.jsx)("span",{className:"text-text-muted ml-1",children:c.label})]})]})}},29920:(e,t,s)=>{Promise.resolve().then(s.bind(s,4461))},46233:(e,t,s)=>{"use strict";s.d(t,{W:()=>c});var a=s(88111),r=s(94745),n=s(96741);function c(e){let{message:t="Something went wrong",onRetry:s,className:c}=e;return(0,a.jsxs)("div",{className:(0,n.cn)("flex flex-col items-center justify-center py-16 text-center",c),children:[(0,a.jsx)(r.A,{className:"w-12 h-12 text-danger mb-4"}),(0,a.jsx)("h3",{className:"text-sm font-medium text-text-primary mb-1",children:"Error"}),(0,a.jsx)("p",{className:"text-sm text-text-muted max-w-sm mb-4",children:t}),s&&(0,a.jsx)("button",{onClick:s,className:"px-4 py-2 text-sm font-medium bg-primary text-white rounded-md hover:bg-primary-hover transition-colors",children:"Retry"})]})}},57979:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]])},59434:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},62455:(e,t,s)=>{"use strict";function a(e){let t="string"==typeof e?new Date(e):e,s=new Date().getTime()-t.getTime();if(s<0)return"just now";let a=Math.floor(s/1e3);if(a<60)return"".concat(a,"s ago");let r=Math.floor(a/60);if(r<60)return"".concat(r," min ago");let n=Math.floor(r/60);if(n<24)return"".concat(n," hr ago");let c=Math.floor(n/24);if(c<30)return"".concat(c,"d ago");let i=Math.floor(c/30);return"".concat(i,"mo ago")}function r(e){return null==e?"—":e<1e3?"".concat(e,"ms"):"".concat((e/1e3).toFixed(1),"s")}function n(e){return null==e?"—":0===e?"$0.00":e<.01?"$".concat(e.toFixed(4)):"$".concat(e.toFixed(2))}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:12;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16;return e.length<=t?e:"".concat(e.slice(0,t),"...")}function l(e){return e.toLocaleString("en-US")}function d(e){return"".concat((100*e).toFixed(1),"%")}function o(e){return("string"==typeof e?new Date(e):e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}s.d(t,{Ct:()=>c,Yq:()=>o,ZV:()=>l,a3:()=>r,fF:()=>a,l9:()=>d,lV:()=>i,vv:()=>n})},66187:(e,t,s)=>{"use strict";s.d(t,{AV:()=>l,Eg:()=>c,F6:()=>i,O0:()=>n});var a=s(88111),r=s(96741);function n(e){let{className:t}=e;return(0,a.jsx)("div",{className:(0,r.cn)("animate-pulse bg-bg-tertiary rounded",t)})}function c(e){let{count:t=6}=e;return(0,a.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"card p-4",children:[(0,a.jsx)(n,{className:"h-3 w-16 mb-3"}),(0,a.jsx)(n,{className:"h-7 w-20"})]},t))})}function i(e){let{rows:t=5}=e;return(0,a.jsxs)("div",{className:"card overflow-hidden",children:[(0,a.jsx)("div",{className:"border-b border-border p-3",children:(0,a.jsx)(n,{className:"h-4 w-48"})}),Array.from({length:t}).map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-4 p-3 border-b border-border-subtle last:border-0",children:[(0,a.jsx)(n,{className:"h-4 w-24"}),(0,a.jsx)(n,{className:"h-4 w-32"}),(0,a.jsx)(n,{className:"h-4 w-20"}),(0,a.jsx)(n,{className:"h-4 w-16 ml-auto"})]},t))]})}function l(){return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(n,{className:"h-8 w-48"}),(0,a.jsx)(c,{}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,a.jsx)(i,{}),(0,a.jsx)(i,{})]})]})}},71699:(e,t,s)=>{"use strict";s.d(t,{i:()=>l});var a=s(88111),r=s(55271),n=s(14874);let c=(0,s(11063).A)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var i=s(96741);function l(e){let{value:t,className:s}=e,[l,d]=(0,r.useState)(!1),o=(0,r.useCallback)(async()=>{try{await navigator.clipboard.writeText(t),d(!0),setTimeout(()=>d(!1),2e3)}catch(e){}},[t]);return(0,a.jsx)("button",{onClick:o,className:(0,i.cn)("p-1 rounded hover:bg-bg-tertiary text-text-muted hover:text-text-secondary transition-colors",s),title:l?"Copied!":"Copy",children:l?(0,a.jsx)(n.A,{className:"w-3.5 h-3.5 text-success"}):(0,a.jsx)(c,{className:"w-3.5 h-3.5"})})}},84109:(e,t,s)=>{"use strict";s.d(t,{Ez:()=>a,ZT:()=>n,av:()=>c,cZ:()=>r});let a={completed:{bg:"bg-success-subtle",text:"text-success",dot:"bg-success"},failed:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"},pending:{bg:"bg-warning-subtle",text:"text-warning",dot:"bg-warning"},timeout:{bg:"bg-danger-subtle",text:"text-danger",dot:"bg-danger"}},r={max_latency_ms:"Max Latency",max_cost_usd:"Max Cost",min_confidence:"Min Confidence",required_fields:"Required Fields",status_must_be:"Status Must Be",output_schema:"Output Schema"},n={pass:{bg:"bg-success-subtle",text:"text-success"},fail:{bg:"bg-danger-subtle",text:"text-danger"},partial:{bg:"bg-warning-subtle",text:"text-warning"}},c=1e4},89654:(e,t,s)=>{"use strict";s.d(t,{c:()=>i});var a=s(55271),r=s(84109);let n="agent-receipts-auto-refresh",c="agent-receipts-refresh-interval";function i(){let[e,t]=(0,a.useState)(!0),[s,i]=(0,a.useState)(r.av);return(0,a.useEffect)(()=>{let e=function(){try{var e;let t="false"!==localStorage.getItem(n),s=parseInt(null!=(e=localStorage.getItem(c))?e:"",10);return{enabled:t,interval:isNaN(s)?r.av:s}}catch(e){return{enabled:!0,interval:r.av}}}();t(e.enabled),i(e.interval)},[]),{enabled:e,interval:s,toggle:(0,a.useCallback)(()=>{t(e=>{let t=!e;try{localStorage.setItem(n,String(t))}catch(e){}return t})},[]),setInterval:(0,a.useCallback)(e=>{i(e);try{localStorage.setItem(c,String(e))}catch(e){}},[]),refreshInterval:e?s:0}}},94745:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(11063).A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},96741:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var a=s(55242),r=s(13065);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.QP)((0,a.$)(t))}}},e=>{e.O(0,[702,814,743,358],()=>e(e.s=29920)),_N_E=e.O()}]);
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-receipts/mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local-first MCP server for Agent Receipts — storage, engine, and protocol",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,13 +52,15 @@
|
|
|
52
52
|
"typecheck": "tsc --noEmit"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@agent-receipts/schema": "workspace:*",
|
|
56
55
|
"@agent-receipts/crypto": "workspace:*",
|
|
56
|
+
"@agent-receipts/schema": "workspace:*",
|
|
57
57
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
58
|
+
"better-sqlite3": "^12.8.0",
|
|
58
59
|
"nanoid": "^5.1.2",
|
|
59
60
|
"zod": "^3.23.0"
|
|
60
61
|
},
|
|
61
62
|
"devDependencies": {
|
|
63
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
62
64
|
"@types/node": "^20.0.0",
|
|
63
65
|
"tsup": "^8.2.0",
|
|
64
66
|
"typescript": "^5.4.0",
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
exports.id=350,exports.ids=[350],exports.modules={6170:(a,b,c)=>{"use strict";c.d(b,{TZ:()=>h,W_:()=>f,XF:()=>g,sP:()=>i});var d=c(23993),e=c(38884);function f(a){return{receipt_id:a.receipt_id,chain_id:a.chain_id,receipt_type:a.receipt_type,agent_id:a.agent_id,org_id:a.org_id,action:a.action,input_hash:a.input_hash,output_hash:a.output_hash,status:a.status,timestamp:a.timestamp,completed_at:a.completed_at,environment:a.environment}}function g(a,b,c){try{var e;if(!b.startsWith("ed25519:"))return!1;let f=function(a){let b=Object.keys(a).sort();return JSON.stringify(a,b)}(a),g=new TextEncoder().encode(f),h=(e=b.slice(8),new Uint8Array(Buffer.from(e,"base64"))),i=d.jn.hexToBytes(c);return(0,d.MX)(h,g,i)}catch{return!1}}function h(){let a=d.Wp.randomPrivateKey(),b=(0,d.lG)(a);return{privateKey:d.jn.bytesToHex(a),publicKey:d.jn.bytesToHex(b)}}function i(a){let b=d.jn.hexToBytes(a),c=(0,d.lG)(b);return d.jn.bytesToHex(c)}d.jn.sha512Sync=(...a)=>(0,e.Zf)(d.jn.concatBytes(...a))},50578:(a,b,c)=>{"use strict";c.d(b,{WU:()=>k,ok:()=>h,Dh:()=>j,KA:()=>i});var d=c(96803);let e=null,f=null,g=null;function h(){return process.env.AGENT_RECEIPTS_DATA_DIR??d.mf.getDefaultDataDir()}async function i(){return e||(e=new d.Ap(h()),await e.init()),e}async function j(){return f||(f=new d.t5(h()),await f.init()),f}async function k(){return g||(g=new d.mf(h()),await g.init()),g}},53139:()=>{},90091:()=>{},96803:(a,b,c)=>{"use strict";c.d(b,{mf:()=>u,t5:()=>s,Ap:()=>r,vk:()=>y,sV:()=>B,pf:()=>x,O8:()=>A,Jq:()=>w});var d=c(79748),e=c(33873),f=c(55511),g=c(6170),h=c(21820),i=c(68798),j=i.k5(["pending","completed","failed","timeout"]),k=i.k5(["action","verification","judgment","arbitration"]),l=i.k5(["production","staging","test"]),m=i.k5(["UNAUTHORIZED","KEY_REVOKED","FORBIDDEN","RECEIPT_NOT_FOUND","CHAIN_NOT_FOUND","AGENT_NOT_FOUND","RECEIPT_NOT_PENDING","RECEIPT_IMMUTABLE","RATE_LIMIT_EXCEEDED","VALIDATION_ERROR","INTERNAL_ERROR"]);i.Ik({receipt_id:i.Yj(),chain_id:i.Yj(),receipt_type:k,agent_id:i.Yj(),org_id:i.Yj(),action:i.Yj(),input_hash:i.Yj(),output_hash:i.Yj().nullable(),status:j,timestamp:i.Yj().datetime(),completed_at:i.Yj().datetime().nullable(),environment:l}),i.Ik({receipt_id:i.Yj(),parent_receipt_id:i.Yj().nullable(),chain_id:i.Yj(),receipt_type:k,agent_id:i.Yj(),org_id:i.Yj(),action:i.Yj(),input_hash:i.Yj(),output_hash:i.Yj().nullable(),output_summary:i.Yj().nullable(),model:i.Yj().nullable(),tokens_in:i.ai().int().nonnegative().nullable(),tokens_out:i.ai().int().nonnegative().nullable(),cost_usd:i.ai().nonnegative().nullable(),latency_ms:i.ai().int().nonnegative().nullable(),tool_calls:i.YO(i.Yj()).nullable(),timestamp:i.Yj().datetime(),completed_at:i.Yj().datetime().nullable(),status:j,error:i.g1(i.L5()).nullable(),environment:l,tags:i.YO(i.Yj()).nullable(),constraints:i.g1(i.L5()).nullable(),constraint_result:i.g1(i.L5()).nullable(),signature:i.Yj(),verify_url:i.Yj().url(),callback_verified:i.zM().nullable(),confidence:i.ai().min(0).max(1).nullable(),metadata:i.g1(i.L5())});var n=i.Ik({type:i.Yj().min(1),value:i.L5(),message:i.Yj().optional()}),o=i.Ik({type:i.Yj(),passed:i.zM(),expected:i.L5(),actual:i.L5(),message:i.Yj().optional()});i.Ik({passed:i.zM(),results:i.YO(o),evaluated_at:i.Yj().datetime()}),i.YO(n);var p=i.Ik({name:i.Yj().min(1),description:i.Yj().min(1),weight:i.ai().min(0).max(1),passing_threshold:i.ai().min(0).max(1).optional(),examples:i.Ik({good:i.YO(i.Yj()).optional(),bad:i.YO(i.Yj()).optional()}).optional()});i.Ik({version:i.Yj().default("1.0"),criteria:i.YO(p).min(1),passing_threshold:i.ai().min(0).max(1).default(.7),require_all:i.zM().default(!1)});var q=i.Ik({criterion:i.Yj(),score:i.ai().min(0).max(1),passed:i.zM(),reasoning:i.Yj()});i.Ik({verdict:i.k5(["pass","fail","partial"]),score:i.ai().min(0).max(1),criteria_results:i.YO(q),overall_reasoning:i.Yj(),rubric_version:i.Yj()}),i.Ik({agent_id:i.Yj().min(1),action:i.Yj().min(1),input_hash:i.Yj().min(1),receipt_type:k.default("action"),status:j.default("pending"),environment:l.default("production"),parent_receipt_id:i.Yj().nullable().optional(),output_hash:i.Yj().nullable().optional(),output_summary:i.Yj().nullable().optional(),model:i.Yj().nullable().optional(),tokens_in:i.ai().int().nonnegative().nullable().optional(),tokens_out:i.ai().int().nonnegative().nullable().optional(),cost_usd:i.ai().nonnegative().nullable().optional(),latency_ms:i.ai().int().nonnegative().nullable().optional(),tool_calls:i.YO(i.Yj()).nullable().optional(),tags:i.YO(i.Yj()).nullable().optional(),confidence:i.ai().min(0).max(1).nullable().optional(),callback_verified:i.zM().nullable().optional(),metadata:i.g1(i.L5()).optional()}),i.Ik({status:i.k5(["completed","failed","timeout"]),output_hash:i.Yj().nullable().optional(),output_summary:i.Yj().nullable().optional(),model:i.Yj().nullable().optional(),tokens_in:i.ai().int().nonnegative().nullable().optional(),tokens_out:i.ai().int().nonnegative().nullable().optional(),cost_usd:i.ai().nonnegative().nullable().optional(),latency_ms:i.ai().int().nonnegative().nullable().optional(),tool_calls:i.YO(i.Yj()).nullable().optional(),confidence:i.ai().min(0).max(1).nullable().optional(),callback_verified:i.zM().nullable().optional(),error:i.g1(i.L5()).nullable().optional()}),i.Ik({verified:i.zM(),receipt:i.Ik({receipt_id:i.Yj(),chain_id:i.Yj(),receipt_type:k,agent_id:i.Yj(),action:i.Yj(),status:j,input_hash:i.Yj(),output_hash:i.Yj().nullable(),signature:i.Yj(),timestamp:i.Yj().datetime(),completed_at:i.Yj().datetime().nullable(),environment:l,latency_ms:i.ai().int().nonnegative().nullable()}),signature_valid:i.zM(),chain_length:i.ai().int().nonnegative(),public_key_url:i.Yj().url()}),i.Ik({page:i.au.number().int().positive().default(1),limit:i.au.number().int().positive().max(100).default(50),agent_id:i.Yj().optional(),action:i.Yj().optional(),status:j.optional(),environment:l.optional(),receipt_type:k.optional(),chain_id:i.Yj().optional(),tag:i.Yj().optional(),from:i.Yj().datetime().optional(),to:i.Yj().datetime().optional(),sort:i.Yj().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default("created_at:desc")}),i.Ik({page:i.ai().int().positive(),limit:i.ai().int().positive(),total:i.ai().int().nonnegative(),total_pages:i.ai().int().nonnegative(),has_next:i.zM(),has_prev:i.zM()}),i.Ik({error:i.Ik({code:m,message:i.Yj(),status:i.ai().int()})});var r=class{constructor(a){this.receiptsDir=(0,e.join)(a,"receipts")}async init(){await (0,d.mkdir)(this.receiptsDir,{recursive:!0})}async save(a){await this.init();let b=(0,e.join)(this.receiptsDir,`${a.receipt_id}.json`),c=(0,e.join)(this.receiptsDir,`.tmp_${(0,f.randomBytes)(8).toString("hex")}.json`),g=JSON.stringify(a,null,2);await (0,d.writeFile)(c,g,"utf-8"),await (0,d.rename)(c,b)}async get(a){try{let b=(0,e.join)(this.receiptsDir,`${a}.json`),c=await (0,d.readFile)(b,"utf-8");return JSON.parse(c)}catch{return null}}async exists(a){return null!==await this.get(a)}async list(a,b=1,c=50,f="timestamp:desc"){await this.init();let g=(await (0,d.readdir)(this.receiptsDir)).filter(a=>a.endsWith(".json")&&!a.startsWith(".")),h=[];for(let a of g)try{let b=await (0,d.readFile)((0,e.join)(this.receiptsDir,a),"utf-8");h.push(JSON.parse(b))}catch{}a&&(h=h.filter(b=>(!a.agent_id||b.agent_id===a.agent_id)&&(!a.action||b.action===a.action)&&(!a.status||b.status===a.status)&&(!a.environment||b.environment===a.environment)&&(!a.receipt_type||b.receipt_type===a.receipt_type)&&(!a.chain_id||b.chain_id===a.chain_id)&&(!a.parent_receipt_id||b.parent_receipt_id===a.parent_receipt_id)&&(!a.tag||!!b.tags&&!!b.tags.includes(a.tag))&&(!a.from||!(b.timestamp<a.from))&&(!a.to||!(b.timestamp>a.to))&&!0));let[i,j]=f.split(":");h.sort((a,b)=>{let c=a["created_at"===i?"timestamp":i],d=b["created_at"===i?"timestamp":i];if(null==c)return 1;if(null==d)return -1;let e=String(c).localeCompare(String(d));return"desc"===j?-e:e});let k=h.length,l=Math.max(1,Math.ceil(k/c)),m=(b-1)*c;return{data:h.slice(m,m+c),pagination:{page:b,limit:c,total:k,total_pages:l,has_next:b<l,has_prev:b>1}}}async getChain(a){return(await this.list({chain_id:a},1,1e3,"timestamp:asc")).data}async count(a){return(await this.list(a,1,1)).pagination.total}async delete(a){try{let b=(0,e.join)(this.receiptsDir,`${a}.json`);return await (0,d.unlink)(b),!0}catch{return!1}}async cleanup(){let a=new Date().toISOString(),b=await this.list(void 0,1,1e5),c=0;for(let d of b.data){let b=d.metadata?.expires_at;b&&b<a&&(await this.delete(d.receipt_id),c++)}return{deleted:c,total:b.data.length}}},s=class{constructor(a){this.privateKey=null,this.publicKey=null,this.keysDir=(0,e.join)(a,"keys")}async init(){await (0,d.mkdir)(this.keysDir,{recursive:!0}),await this.loadKeys()}async loadKeys(){let a=process.env.RECEIPT_SIGNING_PRIVATE_KEY;if(a){this.privateKey=a,this.publicKey=(0,g.sP)(a);return}let b=(0,e.join)(this.keysDir,"private.key");try{this.privateKey=(await (0,d.readFile)(b,"utf-8")).trim(),this.publicKey=(0,g.sP)(this.privateKey);return}catch{}let c=(0,g.TZ)();this.privateKey=c.privateKey,this.publicKey=c.publicKey,await (0,d.writeFile)(b,this.privateKey,{encoding:"utf-8",mode:384}),await (0,d.chmod)(b,384);let f=(0,e.join)(this.keysDir,"public.key");await (0,d.writeFile)(f,this.publicKey,"utf-8")}getPrivateKey(){if(!this.privateKey)throw Error("KeyManager not initialized — call init() first");return this.privateKey}getPublicKey(){if(!this.publicKey)throw Error("KeyManager not initialized — call init() first");return this.publicKey}},t={agentId:"local-agent",orgId:"local-org",environment:"production"},u=class{constructor(a){this.config={...t},this.configPath=(0,e.join)(a,"config.json")}async init(){await (0,d.mkdir)((0,e.dirname)(this.configPath),{recursive:!0}),await this.load()}async load(){try{let a=await (0,d.readFile)(this.configPath,"utf-8"),b=JSON.parse(a);this.config={...t,...b}}catch{}let a=process.env.AGENT_RECEIPTS_AGENT_ID;a&&(this.config.agentId=a);let b=process.env.AGENT_RECEIPTS_ORG_ID;b&&(this.config.orgId=b);let c=process.env.AGENT_RECEIPTS_ENVIRONMENT;("production"===c||"staging"===c||"test"===c)&&(this.config.environment=c)}async save(){await (0,d.mkdir)((0,e.dirname)(this.configPath),{recursive:!0}),await (0,d.writeFile)(this.configPath,JSON.stringify(this.config,null,2),"utf-8")}getConfig(){return{...this.config}}async update(a){this.config={...this.config,...a},await this.save()}static getDefaultDataDir(){return process.env.AGENT_RECEIPTS_DATA_DIR??(0,e.join)((0,h.homedir)(),".agent-receipts")}};function v(a){let b=a.constraint_result;return{receipt_id:a.receipt_id,action:a.action,agent_id:a.agent_id,timestamp:a.timestamp,description:a.output_summary??`${a.action} by ${a.agent_id}`,cost_usd:a.cost_usd,latency_ms:a.latency_ms,model:a.model,tokens_in:a.tokens_in,tokens_out:a.tokens_out,constraints_passed:b&&"boolean"==typeof b.passed?b.passed:null,receipt:a}}async function w(a,b,c){let d=(await a.list({from:c.from,to:c.to,status:"completed"},1,1e5,"timestamp:asc")).data;if(c.agent_ids&&c.agent_ids.length>0){let a=new Set(c.agent_ids);d=d.filter(b=>a.has(b.agent_id))}if(c.actions&&c.actions.length>0){let a=new Set(c.actions);d=d.filter(b=>a.has(b.action))}c.constraints_passed_only&&(d=d.filter(a=>{let b=a.constraint_result;return!b||!1!==b.passed}));let e=d.map(v),f=function(a,b){if("none"===b){let b=a.reduce((a,b)=>a+(b.cost_usd??0),0);return[{label:"All Items",items:a,subtotal_usd:b,count:a.length}]}let c=new Map;for(let d of a){let a;a="action"===b?d.action:"agent"===b?d.agent_id:d.timestamp.slice(0,10);let e=c.get(a)??[];e.push(d),c.set(a,e)}let d=[];for(let[a,b]of c){let c=b.reduce((a,b)=>a+(b.cost_usd??0),0);d.push({label:a,items:b,subtotal_usd:c,count:b.length})}return d.sort((a,b)=>a.label.localeCompare(b.label))}(e,c.group_by??"none"),g=function(a){let b=0,c=0,d=0,e=0,f=0,g=0,h=0;for(let i of a)b+=i.cost_usd??0,c+=i.tokens_in??0,d+=i.tokens_out??0,e+=i.latency_ms??0,null!==i.constraints_passed&&(f++,i.constraints_passed?g++:h++);return{total_receipts:a.length,total_cost_usd:b,avg_cost_usd:a.length>0?b/a.length:0,total_tokens_in:c,total_tokens_out:d,total_latency_ms:e,avg_latency_ms:a.length>0?e/a.length:0,constraints_evaluated:f,constraints_passed:g,constraints_failed:h}}(e),h=b.getPublicKey();return{invoice_number:function(){let a=new Date,b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0"),e="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",f="";for(let a=0;a<4;a++)f+=e[Math.floor(Math.random()*e.length)];return`AR-${b}${c}${d}-${f}`}(),generated_at:new Date().toISOString(),period:{from:c.from,to:c.to},client:c.client,provider:c.provider,groups:f,summary:g,public_key:h,notes:c.notes,payment_terms:c.payment_terms}}function x(a,b=!1){return b?JSON.stringify(a,null,2):JSON.stringify({...a,groups:a.groups.map(a=>({...a,items:a.items.map(({receipt:a,...b})=>b)}))},null,2)}function y(a){let b=[];for(let c of(b.push("receipt_id,action,agent_id,timestamp,description,cost_usd,latency_ms,model,tokens_in,tokens_out,constraints_passed,group"),a.groups))for(let a of c.items)b.push([z(a.receipt_id),z(a.action),z(a.agent_id),z(a.timestamp),z(a.description),a.cost_usd??"",a.latency_ms??"",z(a.model??""),a.tokens_in??"",a.tokens_out??"",a.constraints_passed??"",z(c.label)].join(","));return b.push(""),b.push(`# Invoice: ${a.invoice_number}`),b.push(`# Period: ${a.period.from} to ${a.period.to}`),b.push(`# Total Receipts: ${a.summary.total_receipts}`),b.push(`# Total Cost: $${a.summary.total_cost_usd.toFixed(4)}`),b.join("\n")}function z(a){return a.includes(",")||a.includes('"')||a.includes("\n")?`"${a.replace(/"/g,'""')}"`:a}function A(a){let b=[];for(let c of(b.push(`# Invoice ${a.invoice_number}`),b.push(""),b.push(`**Generated:** ${a.generated_at}`),b.push(`**Period:** ${a.period.from} to ${a.period.to}`),b.push(""),a.provider&&(b.push("## Provider"),b.push(`**${a.provider.name}**`),a.provider.email&&b.push(`Email: ${a.provider.email}`),a.provider.address&&b.push(`Address: ${a.provider.address}`),b.push("")),a.client&&(b.push("## Bill To"),b.push(`**${a.client.name}**`),a.client.email&&b.push(`Email: ${a.client.email}`),a.client.address&&b.push(`Address: ${a.client.address}`),b.push("")),b.push("---"),b.push(""),a.groups)){for(let a of(b.push(`### ${c.label}`),b.push(""),b.push("| Receipt ID | Action | Agent | Description | Cost |"),b.push("|------------|--------|-------|-------------|------|"),c.items)){let c=null!==a.cost_usd?`$${a.cost_usd.toFixed(4)}`:"-",d=a.description.length>50?a.description.slice(0,47)+"...":a.description;b.push(`| \`${a.receipt_id}\` | ${a.action} | ${a.agent_id} | ${d} | ${c} |`)}b.push(""),b.push(`**Subtotal:** $${c.subtotal_usd.toFixed(4)} (${c.count} items)`),b.push("")}return b.push("---"),b.push(""),b.push("## Summary"),b.push(""),b.push("| Metric | Value |"),b.push("|--------|-------|"),b.push(`| Total Receipts | ${a.summary.total_receipts} |`),b.push(`| Total Cost | $${a.summary.total_cost_usd.toFixed(4)} |`),b.push(`| Avg Cost | $${a.summary.avg_cost_usd.toFixed(4)} |`),b.push(`| Total Tokens (in) | ${a.summary.total_tokens_in} |`),b.push(`| Total Tokens (out) | ${a.summary.total_tokens_out} |`),b.push(`| Avg Latency | ${Math.round(a.summary.avg_latency_ms)}ms |`),a.summary.constraints_evaluated>0&&b.push(`| Constraints Passed | ${a.summary.constraints_passed}/${a.summary.constraints_evaluated} |`),b.push(""),a.notes&&(b.push("## Notes"),b.push(""),b.push(a.notes),b.push("")),a.payment_terms&&(b.push("## Payment Terms"),b.push(""),b.push(a.payment_terms),b.push("")),b.push("---"),b.push(""),b.push("## Verification"),b.push(""),b.push("Every line item is a cryptographically signed receipt that can be independently verified."),b.push(""),b.push(`**Public Key:** \`${a.public_key}\``),b.push(""),b.join("\n")}function B(a){let b=a.provider?`
|
|
2
|
-
<div class="party">
|
|
3
|
-
<h3>From</h3>
|
|
4
|
-
<p class="party-name">${C(a.provider.name)}</p>
|
|
5
|
-
${a.provider.email?`<p>${C(a.provider.email)}</p>`:""}
|
|
6
|
-
${a.provider.address?`<p>${C(a.provider.address)}</p>`:""}
|
|
7
|
-
</div>`:"",c=a.client?`
|
|
8
|
-
<div class="party">
|
|
9
|
-
<h3>Bill To</h3>
|
|
10
|
-
<p class="party-name">${C(a.client.name)}</p>
|
|
11
|
-
${a.client.email?`<p>${C(a.client.email)}</p>`:""}
|
|
12
|
-
${a.client.address?`<p>${C(a.client.address)}</p>`:""}
|
|
13
|
-
</div>`:"",d=a.groups.map(a=>`
|
|
14
|
-
<div class="group">
|
|
15
|
-
<h3>${C(a.label)}</h3>
|
|
16
|
-
<table>
|
|
17
|
-
<thead>
|
|
18
|
-
<tr>
|
|
19
|
-
<th>Receipt ID</th>
|
|
20
|
-
<th>Action</th>
|
|
21
|
-
<th>Agent</th>
|
|
22
|
-
<th>Description</th>
|
|
23
|
-
<th>Timestamp</th>
|
|
24
|
-
<th class="num">Cost</th>
|
|
25
|
-
</tr>
|
|
26
|
-
</thead>
|
|
27
|
-
<tbody>
|
|
28
|
-
${a.items.map(a=>(function(a){let b=null!==a.cost_usd?`$${a.cost_usd.toFixed(4)}`:"-",c=a.description.length>60?a.description.slice(0,57)+"...":a.description,d=D(a.timestamp);return` <tr>
|
|
29
|
-
<td class="receipt-id">${C(a.receipt_id)}</td>
|
|
30
|
-
<td>${C(a.action)}</td>
|
|
31
|
-
<td>${C(a.agent_id)}</td>
|
|
32
|
-
<td>${C(c)}</td>
|
|
33
|
-
<td>${C(d)}</td>
|
|
34
|
-
<td class="num">${b}</td>
|
|
35
|
-
</tr>`})(a)).join("\n")}
|
|
36
|
-
</tbody>
|
|
37
|
-
<tfoot>
|
|
38
|
-
<tr>
|
|
39
|
-
<td colspan="5" class="subtotal-label">Subtotal (${a.count} items)</td>
|
|
40
|
-
<td class="num subtotal-value">$${a.subtotal_usd.toFixed(4)}</td>
|
|
41
|
-
</tr>
|
|
42
|
-
</tfoot>
|
|
43
|
-
</table>
|
|
44
|
-
</div>`).join("\n"),e=a.summary.constraints_evaluated>0?`<tr><td>Constraints Passed</td><td>${a.summary.constraints_passed}/${a.summary.constraints_evaluated}</td></tr>`:"",f=a.notes?`<div class="section"><h3>Notes</h3><p>${C(a.notes)}</p></div>`:"",g=a.payment_terms?`<div class="section"><h3>Payment Terms</h3><p>${C(a.payment_terms)}</p></div>`:"";return`<!DOCTYPE html>
|
|
45
|
-
<html lang="en">
|
|
46
|
-
<head>
|
|
47
|
-
<meta charset="UTF-8">
|
|
48
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
49
|
-
<title>Invoice ${C(a.invoice_number)}</title>
|
|
50
|
-
<style>
|
|
51
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
52
|
-
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #1a1a1a; line-height: 1.5; padding: 40px; max-width: 1000px; margin: 0 auto; }
|
|
53
|
-
.header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 32px; padding-bottom: 24px; border-bottom: 2px solid #e5e7eb; }
|
|
54
|
-
.header h1 { font-size: 28px; font-weight: 700; color: #111; }
|
|
55
|
-
.header .invoice-number { font-size: 14px; color: #6b7280; margin-top: 4px; }
|
|
56
|
-
.header .meta { text-align: right; font-size: 13px; color: #6b7280; }
|
|
57
|
-
.parties { display: flex; gap: 48px; margin-bottom: 32px; }
|
|
58
|
-
.party h3 { font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #9ca3af; margin-bottom: 4px; }
|
|
59
|
-
.party-name { font-weight: 600; font-size: 15px; }
|
|
60
|
-
.party p { font-size: 13px; color: #4b5563; }
|
|
61
|
-
.group { margin-bottom: 24px; }
|
|
62
|
-
.group h3 { font-size: 15px; font-weight: 600; margin-bottom: 8px; color: #374151; }
|
|
63
|
-
table { width: 100%; border-collapse: collapse; font-size: 12px; }
|
|
64
|
-
th { text-align: left; padding: 8px 10px; background: #f9fafb; border-bottom: 1px solid #e5e7eb; font-weight: 600; color: #374151; font-size: 11px; text-transform: uppercase; letter-spacing: 0.03em; }
|
|
65
|
-
td { padding: 7px 10px; border-bottom: 1px solid #f3f4f6; color: #4b5563; }
|
|
66
|
-
.num { text-align: right; font-variant-numeric: tabular-nums; }
|
|
67
|
-
.receipt-id { font-family: ui-monospace, monospace; font-size: 11px; color: #6b7280; }
|
|
68
|
-
.subtotal-label { text-align: right; font-weight: 600; color: #374151; }
|
|
69
|
-
.subtotal-value { font-weight: 600; color: #111; }
|
|
70
|
-
.summary { margin-top: 32px; padding-top: 24px; border-top: 2px solid #e5e7eb; }
|
|
71
|
-
.summary h3 { font-size: 15px; font-weight: 600; margin-bottom: 12px; }
|
|
72
|
-
.summary table { max-width: 360px; }
|
|
73
|
-
.summary td { padding: 5px 10px; }
|
|
74
|
-
.summary td:first-child { font-weight: 500; color: #374151; }
|
|
75
|
-
.summary td:last-child { text-align: right; font-variant-numeric: tabular-nums; }
|
|
76
|
-
.total-row td { font-size: 16px; font-weight: 700; color: #111; border-top: 2px solid #e5e7eb; padding-top: 10px; }
|
|
77
|
-
.section { margin-top: 24px; }
|
|
78
|
-
.section h3 { font-size: 13px; font-weight: 600; margin-bottom: 6px; color: #374151; }
|
|
79
|
-
.section p { font-size: 13px; color: #4b5563; }
|
|
80
|
-
.verification { margin-top: 32px; padding: 16px; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 8px; }
|
|
81
|
-
.verification h3 { font-size: 13px; font-weight: 600; color: #166534; margin-bottom: 6px; }
|
|
82
|
-
.verification p { font-size: 12px; color: #15803d; }
|
|
83
|
-
.verification code { font-family: ui-monospace, monospace; font-size: 11px; background: #dcfce7; padding: 2px 6px; border-radius: 3px; word-break: break-all; }
|
|
84
|
-
.footer { margin-top: 40px; padding-top: 16px; border-top: 1px solid #e5e7eb; text-align: center; font-size: 11px; color: #9ca3af; }
|
|
85
|
-
@media print {
|
|
86
|
-
body { padding: 20px; }
|
|
87
|
-
.verification { break-inside: avoid; }
|
|
88
|
-
table { page-break-inside: auto; }
|
|
89
|
-
tr { page-break-inside: avoid; }
|
|
90
|
-
}
|
|
91
|
-
</style>
|
|
92
|
-
</head>
|
|
93
|
-
<body>
|
|
94
|
-
<div class="header">
|
|
95
|
-
<div>
|
|
96
|
-
<h1>Invoice</h1>
|
|
97
|
-
<div class="invoice-number">${C(a.invoice_number)}</div>
|
|
98
|
-
</div>
|
|
99
|
-
<div class="meta">
|
|
100
|
-
<div>Generated: ${C(D(a.generated_at))}</div>
|
|
101
|
-
<div>Period: ${C(D(a.period.from))} — ${C(D(a.period.to))}</div>
|
|
102
|
-
</div>
|
|
103
|
-
</div>
|
|
104
|
-
|
|
105
|
-
${b||c?`<div class="parties">${b}${c}</div>`:""}
|
|
106
|
-
|
|
107
|
-
${d}
|
|
108
|
-
|
|
109
|
-
<div class="summary">
|
|
110
|
-
<h3>Summary</h3>
|
|
111
|
-
<table>
|
|
112
|
-
<tr class="total-row"><td>Total Cost</td><td>$${a.summary.total_cost_usd.toFixed(4)}</td></tr>
|
|
113
|
-
<tr><td>Total Receipts</td><td>${a.summary.total_receipts}</td></tr>
|
|
114
|
-
<tr><td>Avg Cost per Receipt</td><td>$${a.summary.avg_cost_usd.toFixed(4)}</td></tr>
|
|
115
|
-
<tr><td>Total Tokens (in/out)</td><td>${a.summary.total_tokens_in} / ${a.summary.total_tokens_out}</td></tr>
|
|
116
|
-
<tr><td>Avg Latency</td><td>${Math.round(a.summary.avg_latency_ms)}ms</td></tr>
|
|
117
|
-
${e}
|
|
118
|
-
</table>
|
|
119
|
-
</div>
|
|
120
|
-
|
|
121
|
-
${f}
|
|
122
|
-
${g}
|
|
123
|
-
|
|
124
|
-
<div class="verification">
|
|
125
|
-
<h3>Verification</h3>
|
|
126
|
-
<p>Every line item is a cryptographically signed receipt that can be independently verified.</p>
|
|
127
|
-
<p style="margin-top: 6px;">Public Key: <code>${C(a.public_key)}</code></p>
|
|
128
|
-
</div>
|
|
129
|
-
|
|
130
|
-
<div class="footer">
|
|
131
|
-
Generated by Agent Receipts — ${C(a.invoice_number)}
|
|
132
|
-
</div>
|
|
133
|
-
</body>
|
|
134
|
-
</html>`}function C(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function D(a){try{return new Date(a).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}catch{return a}}}};
|