@agent-receipts/dashboard 0.2.10 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -5
- package/standalone/apps/web/.next/BUILD_ID +1 -1
- package/standalone/apps/web/.next/app-build-manifest.json +237 -160
- package/standalone/apps/web/.next/app-path-routes-manifest.json +24 -14
- package/standalone/apps/web/.next/build-manifest.json +13 -13
- package/standalone/apps/web/.next/prerender-manifest.json +75 -27
- package/standalone/apps/web/.next/routes-manifest.json +36 -0
- package/standalone/apps/web/.next/server/app/_not-found/page.js +2 -2
- package/standalone/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- 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 +3 -3
- package/standalone/apps/web/.next/server/app/agents/[id]/page.js +2 -2
- package/standalone/apps/web/.next/server/app/agents/[id]/page.js.nft.json +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.js +2 -2
- package/standalone/apps/web/.next/server/app/agents/page.js.nft.json +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 +4 -4
- 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/memory/audit/route.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/audit/route.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/audit/route_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/entities/[id]/route.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/entities/[id]/route.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/entities/[id]/route_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/entities/route.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/entities/route.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/entities/route_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/forget/route.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/forget/route.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/forget/route_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/observe/route.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/observe/route.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/observe/route_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/provenance/[obsId]/route.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/provenance/[obsId]/route.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/provenance/[obsId]/route_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/recall/route.js +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/recall/route.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/api/memory/recall/route_client-reference-manifest.js +1 -0
- 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.js +2 -2
- package/standalone/apps/web/.next/server/app/chains/[id]/page.js.nft.json +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.js +2 -2
- package/standalone/apps/web/.next/server/app/chains/page.js.nft.json +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 +4 -4
- package/standalone/apps/web/.next/server/app/constraints/page.js +2 -2
- package/standalone/apps/web/.next/server/app/constraints/page.js.nft.json +1 -1
- 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 +4 -4
- package/standalone/apps/web/.next/server/app/get-started/page.js +2 -2
- package/standalone/apps/web/.next/server/app/get-started/page.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/get-started/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/get-started.html +3 -3
- package/standalone/apps/web/.next/server/app/get-started.rsc +4 -4
- package/standalone/apps/web/.next/server/app/how-it-works/page.js +2 -2
- package/standalone/apps/web/.next/server/app/how-it-works/page.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/how-it-works/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/how-it-works.html +3 -3
- package/standalone/apps/web/.next/server/app/how-it-works.rsc +4 -4
- package/standalone/apps/web/.next/server/app/icon.svg/route.js +1 -1
- package/standalone/apps/web/.next/server/app/icon.svg/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/index.html +2 -2
- package/standalone/apps/web/.next/server/app/index.rsc +4 -4
- package/standalone/apps/web/.next/server/app/invoices/page.js +2 -2
- package/standalone/apps/web/.next/server/app/invoices/page.js.nft.json +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 +3 -3
- package/standalone/apps/web/.next/server/app/invoices.rsc +4 -4
- package/standalone/apps/web/.next/server/app/judgments/page.js +2 -2
- package/standalone/apps/web/.next/server/app/judgments/page.js.nft.json +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 +4 -4
- package/standalone/apps/web/.next/server/app/memory/[entityId]/page.js +2 -0
- package/standalone/apps/web/.next/server/app/memory/[entityId]/page.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/memory/[entityId]/page_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/memory/audit/page.js +2 -0
- package/standalone/apps/web/.next/server/app/memory/audit/page.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/memory/audit/page_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/memory/audit.html +9 -0
- package/standalone/apps/web/.next/server/app/memory/audit.meta +7 -0
- package/standalone/apps/web/.next/server/app/memory/audit.rsc +21 -0
- package/standalone/apps/web/.next/server/app/memory/page.js +2 -0
- package/standalone/apps/web/.next/server/app/memory/page.js.nft.json +1 -0
- package/standalone/apps/web/.next/server/app/memory/page_client-reference-manifest.js +1 -0
- package/standalone/apps/web/.next/server/app/memory.html +9 -0
- package/standalone/apps/web/.next/server/app/memory.meta +7 -0
- package/standalone/apps/web/.next/server/app/memory.rsc +21 -0
- package/standalone/apps/web/.next/server/app/page.js +2 -2
- package/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts/[id]/page.js +2 -2
- package/standalone/apps/web/.next/server/app/receipts/[id]/page.js.nft.json +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 +2 -2
- package/standalone/apps/web/.next/server/app/receipts/page.js.nft.json +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 +4 -4
- package/standalone/apps/web/.next/server/app/settings/page.js +2 -2
- package/standalone/apps/web/.next/server/app/settings/page.js.nft.json +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 +4 -4
- package/standalone/apps/web/.next/server/app/verify/page.js +2 -2
- package/standalone/apps/web/.next/server/app/verify/page.js.nft.json +1 -1
- 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 +4 -4
- package/standalone/apps/web/.next/server/app-paths-manifest.json +24 -14
- package/standalone/apps/web/.next/server/chunks/4099.js +1 -0
- package/standalone/apps/web/.next/server/chunks/4236.js +1 -0
- package/standalone/apps/web/.next/server/chunks/4319.js +1 -0
- package/standalone/apps/web/.next/server/chunks/4640.js +8 -0
- package/standalone/apps/web/.next/server/chunks/578.js +1 -1
- package/standalone/apps/web/.next/server/chunks/5783.js +6 -0
- package/standalone/apps/web/.next/server/chunks/6568.js +1 -0
- package/standalone/apps/web/.next/server/chunks/6803.js +307 -0
- package/standalone/apps/web/.next/server/chunks/6872.js +1 -0
- package/standalone/apps/web/.next/server/chunks/{955.js → 7955.js} +1 -1
- package/standalone/apps/web/.next/server/chunks/808.js +1 -0
- package/standalone/apps/web/.next/server/chunks/9295.js +9 -0
- package/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
- 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/_document.js +1 -1
- package/standalone/apps/web/.next/server/pages/_document.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/pages/_error.js +3 -3
- package/standalone/apps/web/.next/server/pages/_error.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/pages-manifest.json +1 -1
- package/standalone/apps/web/.next/server/webpack-runtime.js +1 -1
- package/standalone/apps/web/.next/static/BZdBWaTjiqh8Heg1_5h6o/_buildManifest.js +1 -0
- package/standalone/apps/web/.next/static/chunks/1577-52a37d87918977e4.js +1 -0
- package/standalone/apps/web/.next/static/chunks/2702-4afe85cf1319178b.js +1 -0
- package/standalone/apps/web/.next/static/chunks/5388-497db038071971af.js +1 -0
- package/standalone/apps/web/.next/static/chunks/5935-25e4517f9bfb3e54.js +1 -0
- package/standalone/apps/web/.next/static/chunks/7493-21c65d3cf41d96fa.js +1 -0
- package/standalone/apps/web/.next/static/chunks/9743-b93c9a67bf15f28e.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/_not-found/page-dfe859f15ff21004.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/agents/[id]/page-bd27daddc88ea13c.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/agents/page-67d8a1e928ffad08.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/agents/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/chains/[id]/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/cleanup/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/config/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/invoices/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/judgments/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/memory/audit/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/memory/entities/[id]/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/memory/entities/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/memory/forget/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/memory/observe/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/memory/provenance/[obsId]/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/memory/recall/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/receipts/[id]/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/receipts/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/search/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/stats/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/api/verify/route-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/chains/[id]/page-45d744cdd6495e6b.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/chains/page-bd595389b36e9ec3.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/constraints/page-d814c6768a5ac3cd.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/get-started/layout-08c70580b96dfffc.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/get-started/page-3f1e33bbce2134ae.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/how-it-works/page-fd39b30017b3bb8f.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/invoices/page-9923d5bbee5a89c9.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/judgments/page-dd290557c6948b22.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/layout-34e5620f9fbf2601.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/memory/[entityId]/page-6faf1a99bcc27c06.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/memory/audit/page-276a1a1a5423380f.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/memory/page-e20ae73fade64e1c.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/page-b758df33c161f189.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/receipts/[id]/page-779f2c6fdc359351.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/receipts/page-f3df6ceecaff7cce.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/settings/page-a775a2f3752a1cdd.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/verify/page-7a654fc6b29b44a8.js +1 -0
- package/standalone/apps/web/.next/static/chunks/framework-6c19635498a17075.js +1 -0
- package/standalone/apps/web/.next/static/chunks/main-07cb75c461ef6926.js +1 -0
- package/standalone/apps/web/.next/static/chunks/main-app-5ae62731e5401157.js +1 -0
- package/standalone/apps/web/.next/static/chunks/pages/{_app-0277c84f8b0dbf6c.js → _app-b8da3f21cdb968e8.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/pages/_error-797d67047bd0e506.js +1 -0
- package/standalone/apps/web/.next/static/chunks/{webpack-acfef48110e09a0e.js → webpack-631fa6a7d974b7cd.js} +1 -1
- package/standalone/apps/web/.next/static/css/415fd9a8d5823143.css +5 -0
- package/standalone/apps/web/src/lib/sdk-server.ts +24 -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/dist/index.js +695 -0
- package/standalone/packages/mcp-server/package.json +2 -1
- package/standalone/apps/web/.next/server/chunks/236.js +0 -1
- package/standalone/apps/web/.next/server/chunks/319.js +0 -1
- package/standalone/apps/web/.next/server/chunks/568.js +0 -1
- package/standalone/apps/web/.next/server/chunks/640.js +0 -8
- package/standalone/apps/web/.next/server/chunks/718.js +0 -9
- package/standalone/apps/web/.next/server/chunks/783.js +0 -6
- package/standalone/apps/web/.next/server/chunks/798.js +0 -1
- package/standalone/apps/web/.next/server/chunks/803.js +0 -189
- package/standalone/apps/web/.next/server/chunks/872.js +0 -1
- package/standalone/apps/web/.next/server/chunks/99.js +0 -1
- package/standalone/apps/web/.next/static/chunks/388-350fe7358149b937.js +0 -1
- package/standalone/apps/web/.next/static/chunks/493-829b6213ada29da8.js +0 -1
- package/standalone/apps/web/.next/static/chunks/577-d18d2ca2465d6f72.js +0 -1
- package/standalone/apps/web/.next/static/chunks/702-fda62c486b5bb5f8.js +0 -1
- package/standalone/apps/web/.next/static/chunks/743-1f01386e3a1c3b1c.js +0 -1
- package/standalone/apps/web/.next/static/chunks/935-f80c248ba99512e2.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/_not-found/page-d6caa906bf90ce7d.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/agents/[id]/page-fe1560a72adbddc7.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/agents/page-ab0dfc5113e3ab45.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/agents/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/chains/[id]/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/cleanup/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/config/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/invoices/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/judgments/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/receipts/[id]/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/receipts/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/search/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/stats/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/api/verify/route-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/chains/[id]/page-ba935d4fadcbc557.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/chains/page-a3f21d8d62ffa174.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/constraints/page-ebfd1721530940c7.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/get-started/layout-3752a720184a6696.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/get-started/page-72febd5ba59689bb.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/how-it-works/page-46a028e3d817a15f.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/invoices/page-71a064dd2e94a214.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/judgments/page-5062f4bb5a918305.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/layout-43fe6d25823e2373.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/page-deece9e5e4e6c9dc.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/receipts/[id]/page-024badaf0b4aa9db.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/receipts/page-dfc039aadf7a6869.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/settings/page-1f33c77dcca141ce.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/verify/page-1631d147709caa76.js +0 -1
- package/standalone/apps/web/.next/static/chunks/framework-b712132b711b77b2.js +0 -1
- package/standalone/apps/web/.next/static/chunks/main-3cf37cd4e8f17e4b.js +0 -1
- package/standalone/apps/web/.next/static/chunks/main-app-d3c171e7aef05d2f.js +0 -1
- package/standalone/apps/web/.next/static/chunks/pages/_error-5420f4ec91760914.js +0 -1
- package/standalone/apps/web/.next/static/css/b5d5599054174bf1.css +0 -5
- package/standalone/apps/web/.next/static/pkASOzaisH7Pm796xebp0/_buildManifest.js +0 -1
- /package/standalone/apps/web/.next/static/{pkASOzaisH7Pm796xebp0 → BZdBWaTjiqh8Heg1_5h6o}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";exports.id=6803,exports.ids=[6803],exports.modules={6170:(a,b,c)=>{c.d(b,{TZ:()=>j,W_:()=>g,XF:()=>i,o3:()=>h,sP:()=>k});var d=c(23993),e=c(38884);function f(a){let b=Object.keys(a).sort();return JSON.stringify(a,b)}function g(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 h(a,b){var c;let e=f(a),g=new TextEncoder().encode(e),h=d.jn.hexToBytes(b),i=(0,d._S)(g,h);return`ed25519:${c=i,Buffer.from(c).toString("base64")}`}function i(a,b,c){try{var e;if(!b.startsWith("ed25519:"))return!1;let g=f(a),h=new TextEncoder().encode(g),i=(e=b.slice(8),new Uint8Array(Buffer.from(e,"base64"))),j=d.jn.hexToBytes(c);return(0,d.MX)(i,h,j)}catch{return!1}}function j(){let a=d.Wp.randomPrivateKey(),b=(0,d.lG)(a);return{privateKey:d.jn.bytesToHex(a),publicKey:d.jn.bytesToHex(b)}}function k(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))},96803:(a,b,c)=>{c.d(b,{mf:()=>D,t5:()=>B,wT:()=>M,ny:()=>F,x:()=>L,Ap:()=>A,formatInvoiceCSV:()=>O,formatInvoiceHTML:()=>R,formatInvoiceJSON:()=>N,formatInvoiceMarkdown:()=>Q,generateInvoice:()=>K});var d=c(79748),e=c(33873),f=c(31940),g=c(55511),h=c(6170),i=c(21820),j=c(18103),k=c(68798),l=k.k5(["pending","completed","failed","timeout"]),m=k.k5(["action","verification","judgment","arbitration","memory"]),n=k.k5(["development","production","staging","test"]),o=k.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"]);k.Ik({receipt_id:k.Yj(),chain_id:k.Yj(),receipt_type:m,agent_id:k.Yj(),org_id:k.Yj(),action:k.Yj(),input_hash:k.Yj(),output_hash:k.Yj().nullable(),status:l,timestamp:k.Yj().datetime(),completed_at:k.Yj().datetime().nullable(),environment:n});var p=k.Ik({receipt_id:k.Yj(),parent_receipt_id:k.Yj().nullable(),chain_id:k.Yj(),receipt_type:m,agent_id:k.Yj(),org_id:k.Yj(),action:k.Yj(),input_hash:k.Yj(),output_hash:k.Yj().nullable(),output_summary:k.Yj().nullable(),model:k.Yj().nullable(),tokens_in:k.ai().int().nonnegative().nullable(),tokens_out:k.ai().int().nonnegative().nullable(),cost_usd:k.ai().nonnegative().nullable(),latency_ms:k.ai().int().nonnegative().nullable(),tool_calls:k.YO(k.Yj()).nullable(),timestamp:k.Yj().datetime(),completed_at:k.Yj().datetime().nullable(),status:l,error:k.g1(k.L5()).nullable(),environment:n,tags:k.YO(k.Yj()).nullable(),constraints:k.g1(k.L5()).nullable(),constraint_result:k.g1(k.L5()).nullable(),signature:k.Yj(),verify_url:k.Yj().url(),callback_verified:k.zM().nullable(),confidence:k.ai().min(0).max(1).nullable(),metadata:k.g1(k.L5())}),q=k.Ik({type:k.Yj().min(1),value:k.L5(),message:k.Yj().optional()}),r=k.Ik({type:k.Yj(),passed:k.zM(),expected:k.L5(),actual:k.L5(),message:k.Yj().optional()});k.Ik({passed:k.zM(),results:k.YO(r),evaluated_at:k.Yj().datetime()}),k.YO(q);var s=k.Ik({name:k.Yj().min(1),description:k.Yj().min(1),weight:k.ai().min(0).max(1),passing_threshold:k.ai().min(0).max(1).optional(),examples:k.Ik({good:k.YO(k.Yj()).optional(),bad:k.YO(k.Yj()).optional()}).optional()});k.Ik({version:k.Yj().default("1.0"),criteria:k.YO(s).min(1),passing_threshold:k.ai().min(0).max(1).default(.7),require_all:k.zM().default(!1)});var t=k.Ik({criterion:k.Yj(),score:k.ai().min(0).max(1),passed:k.zM(),reasoning:k.Yj()});k.Ik({verdict:k.k5(["pass","fail","partial"]),score:k.ai().min(0).max(1),criteria_results:k.YO(t),overall_reasoning:k.Yj(),rubric_version:k.Yj()}),k.Ik({agent_id:k.Yj().min(1),action:k.Yj().min(1),input_hash:k.Yj().min(1),receipt_type:m.default("action"),status:l.default("pending"),environment:n.default("production"),parent_receipt_id:k.Yj().nullable().optional(),output_hash:k.Yj().nullable().optional(),output_summary:k.Yj().nullable().optional(),model:k.Yj().nullable().optional(),tokens_in:k.ai().int().nonnegative().nullable().optional(),tokens_out:k.ai().int().nonnegative().nullable().optional(),cost_usd:k.ai().nonnegative().nullable().optional(),latency_ms:k.ai().int().nonnegative().nullable().optional(),tool_calls:k.YO(k.Yj()).nullable().optional(),tags:k.YO(k.Yj()).nullable().optional(),confidence:k.ai().min(0).max(1).nullable().optional(),callback_verified:k.zM().nullable().optional(),metadata:k.g1(k.L5()).optional()}),k.Ik({status:k.k5(["completed","failed","timeout"]),output_hash:k.Yj().nullable().optional(),output_summary:k.Yj().nullable().optional(),model:k.Yj().nullable().optional(),tokens_in:k.ai().int().nonnegative().nullable().optional(),tokens_out:k.ai().int().nonnegative().nullable().optional(),cost_usd:k.ai().nonnegative().nullable().optional(),latency_ms:k.ai().int().nonnegative().nullable().optional(),tool_calls:k.YO(k.Yj()).nullable().optional(),confidence:k.ai().min(0).max(1).nullable().optional(),callback_verified:k.zM().nullable().optional(),error:k.g1(k.L5()).nullable().optional()}),k.Ik({verified:k.zM(),receipt:k.Ik({receipt_id:k.Yj(),chain_id:k.Yj(),receipt_type:m,agent_id:k.Yj(),action:k.Yj(),status:l,input_hash:k.Yj(),output_hash:k.Yj().nullable(),signature:k.Yj(),timestamp:k.Yj().datetime(),completed_at:k.Yj().datetime().nullable(),environment:n,latency_ms:k.ai().int().nonnegative().nullable()}),signature_valid:k.zM(),chain_length:k.ai().int().nonnegative(),public_key_url:k.Yj().url()}),k.Ik({page:k.au.number().int().positive().default(1),limit:k.au.number().int().positive().max(100).default(50),agent_id:k.Yj().optional(),action:k.Yj().optional(),status:l.optional(),environment:n.optional(),receipt_type:m.optional(),chain_id:k.Yj().optional(),tag:k.Yj().optional(),from:k.Yj().datetime().optional(),to:k.Yj().datetime().optional(),sort:k.Yj().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default("created_at:desc")}),k.Ik({page:k.ai().int().positive(),limit:k.ai().int().positive(),total:k.ai().int().nonnegative(),total_pages:k.ai().int().nonnegative(),has_next:k.zM(),has_prev:k.zM()}),k.Ik({error:k.Ik({code:o,message:k.Yj(),status:k.ai().int()})});var u=k.k5(["person","project","organization","preference","fact","context","tool","custom"]),v=k.k5(["observe","create","merge","forget","forget_entity","recall","update"]),w=k.k5(["agent","user","team","global"]),x=k.k5(["certain","high","medium","low","deprecated"]);k.Ik({observation_id:k.Yj(),entity_id:k.Yj(),content:k.Yj(),confidence:x.default("medium"),source_receipt_id:k.Yj(),source_agent_id:k.Yj(),source_context:k.Yj().nullable(),observed_at:k.Yj().datetime(),forgotten_at:k.Yj().datetime().nullable(),forgotten_by:k.Yj().nullable(),superseded_by:k.Yj().nullable(),tags:k.YO(k.Yj()).default([]),metadata:k.g1(k.L5()).default({})}),k.Ik({relationship_id:k.Yj(),from_entity_id:k.Yj(),to_entity_id:k.Yj(),relationship_type:k.Yj(),strength:x.default("medium"),source_receipt_id:k.Yj(),created_at:k.Yj().datetime(),forgotten_at:k.Yj().datetime().nullable(),metadata:k.g1(k.L5()).default({})}),k.Ik({entity_id:k.Yj(),entity_type:u,name:k.Yj(),aliases:k.YO(k.Yj()).default([]),scope:w.default("agent"),created_at:k.Yj().datetime(),created_by_agent:k.Yj(),created_by_receipt:k.Yj(),forgotten_at:k.Yj().datetime().nullable(),merged_into:k.Yj().nullable(),attributes:k.g1(k.L5()).default({}),metadata:k.g1(k.L5()).default({})}),k.Ik({memory_operation:v,entity_id:k.Yj().nullable(),observation_id:k.Yj().nullable(),relationship_id:k.Yj().nullable(),scope:w,query:k.Yj().nullable(),results_count:k.ai().int().nullable(),confidence:x.nullable()}),k.Ik({query:k.Yj().optional(),entity_type:u.optional(),entity_id:k.Yj().optional(),scope:w.optional(),agent_id:k.Yj().optional(),confidence_min:x.optional(),include_forgotten:k.zM().default(!1),tags:k.YO(k.Yj()).optional(),limit:k.ai().int().min(1).max(100).default(20),page:k.ai().int().min(1).default(1)});var y=(a=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(a,{get:(a,b)=>("undefined"!=typeof require?require:a)[b]}):a)(function(a){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')}),z=new Set(["timestamp","completed_at","cost_usd","latency_ms","tokens_in","tokens_out","confidence"]),A=class{constructor(a){this.dataDir=a,this.dbPath=(0,e.join)(a,"receipts.db"),this.receiptsDir=(0,e.join)(a,"receipts")}async init(){await (0,d.mkdir)(this.dataDir,{recursive:!0}),this.db=new f(this.dbPath),this.db.pragma("journal_mode = WAL"),this.db.pragma("foreign_keys = ON"),this.db.exec(`
|
|
2
|
+
CREATE TABLE IF NOT EXISTS receipts (
|
|
3
|
+
receipt_id TEXT PRIMARY KEY,
|
|
4
|
+
chain_id TEXT NOT NULL,
|
|
5
|
+
parent_receipt_id TEXT,
|
|
6
|
+
receipt_type TEXT NOT NULL,
|
|
7
|
+
agent_id TEXT NOT NULL,
|
|
8
|
+
org_id TEXT NOT NULL,
|
|
9
|
+
action TEXT NOT NULL,
|
|
10
|
+
status TEXT NOT NULL,
|
|
11
|
+
environment TEXT NOT NULL,
|
|
12
|
+
input_hash TEXT NOT NULL,
|
|
13
|
+
output_hash TEXT,
|
|
14
|
+
model TEXT,
|
|
15
|
+
tokens_in INTEGER,
|
|
16
|
+
tokens_out INTEGER,
|
|
17
|
+
cost_usd REAL,
|
|
18
|
+
latency_ms INTEGER,
|
|
19
|
+
confidence REAL,
|
|
20
|
+
timestamp TEXT NOT NULL,
|
|
21
|
+
completed_at TEXT,
|
|
22
|
+
expires_at TEXT,
|
|
23
|
+
tags TEXT,
|
|
24
|
+
data TEXT NOT NULL
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_agent_id ON receipts(agent_id);
|
|
28
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_chain_id ON receipts(chain_id);
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_status ON receipts(status);
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_action ON receipts(action);
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_timestamp ON receipts(timestamp);
|
|
32
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_environment ON receipts(environment);
|
|
33
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_receipt_type ON receipts(receipt_type);
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_expires_at ON receipts(expires_at);
|
|
35
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_parent_receipt_id ON receipts(parent_receipt_id);
|
|
36
|
+
`),await this.migrateJsonFiles()}async migrateJsonFiles(){let a;try{a=await (0,d.readdir)(this.receiptsDir)}catch{return}let b=a.filter(a=>a.endsWith(".json")&&!a.startsWith("."));if(0===b.length)return;let c=this.db.prepare(`INSERT OR IGNORE INTO receipts (
|
|
37
|
+
receipt_id, chain_id, parent_receipt_id, receipt_type, agent_id, org_id,
|
|
38
|
+
action, status, environment, input_hash, output_hash, model,
|
|
39
|
+
tokens_in, tokens_out, cost_usd, latency_ms, confidence,
|
|
40
|
+
timestamp, completed_at, expires_at, tags, data
|
|
41
|
+
) VALUES (
|
|
42
|
+
@receipt_id, @chain_id, @parent_receipt_id, @receipt_type, @agent_id, @org_id,
|
|
43
|
+
@action, @status, @environment, @input_hash, @output_hash, @model,
|
|
44
|
+
@tokens_in, @tokens_out, @cost_usd, @latency_ms, @confidence,
|
|
45
|
+
@timestamp, @completed_at, @expires_at, @tags, @data
|
|
46
|
+
)`),f=0;this.db.transaction(()=>{for(let a of b)try{let b=y("fs").readFileSync((0,e.join)(this.receiptsDir,a),"utf-8"),d=JSON.parse(b);c.run(this.toRow(d)),f++}catch{}})(),f>0&&console.log(`Migrated ${f} receipts from JSON files to SQLite`)}toRow(a){let b=a.metadata;return{receipt_id:a.receipt_id,chain_id:a.chain_id,parent_receipt_id:a.parent_receipt_id,receipt_type:a.receipt_type,agent_id:a.agent_id,org_id:a.org_id,action:a.action,status:a.status,environment:a.environment,input_hash:a.input_hash,output_hash:a.output_hash,model:a.model,tokens_in:a.tokens_in,tokens_out:a.tokens_out,cost_usd:a.cost_usd,latency_ms:a.latency_ms,confidence:a.confidence,timestamp:a.timestamp,completed_at:a.completed_at,expires_at:b?.expires_at??null,tags:a.tags?JSON.stringify(a.tags):null,data:JSON.stringify(a)}}getDb(){return this.db}async save(a){let b=this.toRow(a);this.db.prepare(`INSERT OR REPLACE INTO receipts (
|
|
47
|
+
receipt_id, chain_id, parent_receipt_id, receipt_type, agent_id, org_id,
|
|
48
|
+
action, status, environment, input_hash, output_hash, model,
|
|
49
|
+
tokens_in, tokens_out, cost_usd, latency_ms, confidence,
|
|
50
|
+
timestamp, completed_at, expires_at, tags, data
|
|
51
|
+
) VALUES (
|
|
52
|
+
@receipt_id, @chain_id, @parent_receipt_id, @receipt_type, @agent_id, @org_id,
|
|
53
|
+
@action, @status, @environment, @input_hash, @output_hash, @model,
|
|
54
|
+
@tokens_in, @tokens_out, @cost_usd, @latency_ms, @confidence,
|
|
55
|
+
@timestamp, @completed_at, @expires_at, @tags, @data
|
|
56
|
+
)`).run(b)}async get(a){let b=this.db.prepare("SELECT data FROM receipts WHERE receipt_id = ?").get(a);return b?JSON.parse(b.data):null}async exists(a){return void 0!==this.db.prepare("SELECT 1 FROM receipts WHERE receipt_id = ?").get(a)}async list(a,b=1,c=50,d="timestamp:desc"){let{where:e,params:f}=this.buildWhere(a),g=this.db.prepare(`SELECT COUNT(*) as cnt FROM receipts ${e}`).get(...f).cnt,[h,i]=d.split(":"),j="created_at"===h?"timestamp":h,k=z.has(j)?j:"timestamp",l=`ORDER BY CASE WHEN ${k} IS NULL THEN 1 ELSE 0 END, ${k} ${"asc"===i?"ASC":"DESC"}`,m=this.db.prepare(`SELECT data FROM receipts ${e} ${l} LIMIT ? OFFSET ?`).all(...f,c,(b-1)*c),n=Math.max(1,Math.ceil(g/c));return{data:m.map(a=>JSON.parse(a.data)),pagination:{page:b,limit:c,total:g,total_pages:n,has_next:b<n,has_prev:b>1}}}async getChain(a){return(await this.list({chain_id:a},1,1e3,"timestamp:asc")).data}async count(a){let{where:b,params:c}=this.buildWhere(a);return this.db.prepare(`SELECT COUNT(*) as cnt FROM receipts ${b}`).get(...c).cnt}async delete(a){return this.db.prepare("DELETE FROM receipts WHERE receipt_id = ?").run(a).changes>0}async cleanup(){let a=new Date().toISOString(),b=this.db.prepare("SELECT COUNT(*) as cnt FROM receipts").get().cnt;return{deleted:this.db.prepare("DELETE FROM receipts WHERE expires_at IS NOT NULL AND expires_at < ?").run(a).changes,total:b}}buildWhere(a){if(!a)return{where:"",params:[]};let b=[],c=[];return(a.agent_id&&(b.push("agent_id = ?"),c.push(a.agent_id)),a.action&&(b.push("action = ?"),c.push(a.action)),a.status&&(b.push("status = ?"),c.push(a.status)),a.environment&&(b.push("environment = ?"),c.push(a.environment)),a.receipt_type&&(b.push("receipt_type = ?"),c.push(a.receipt_type)),a.chain_id&&(b.push("chain_id = ?"),c.push(a.chain_id)),a.parent_receipt_id&&(b.push("parent_receipt_id = ?"),c.push(a.parent_receipt_id)),a.tag&&(b.push("tags LIKE ?"),c.push(`%"${a.tag}"%`)),a.from&&(b.push("timestamp >= ?"),c.push(a.from)),a.to&&(b.push("timestamp <= ?"),c.push(a.to)),0===b.length)?{where:"",params:[]}:{where:`WHERE ${b.join(" AND ")}`,params:c}}},B=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,h.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,h.sP)(this.privateKey);return}catch{}let c=(0,h.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}},C={agentId:"local-agent",orgId:"local-org",environment:"production"},D=class{constructor(a){this.config={...C},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={...C,...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;("development"===c||"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,i.homedir)(),".agent-receipts")}},E={certain:5,high:4,medium:3,low:2,deprecated:1},F=class{constructor(a){this.db=a}init(){this.db.exec(`
|
|
57
|
+
CREATE TABLE IF NOT EXISTS entities (
|
|
58
|
+
entity_id TEXT PRIMARY KEY,
|
|
59
|
+
entity_type TEXT NOT NULL,
|
|
60
|
+
name TEXT NOT NULL,
|
|
61
|
+
aliases TEXT NOT NULL DEFAULT '[]',
|
|
62
|
+
scope TEXT NOT NULL DEFAULT 'agent',
|
|
63
|
+
created_at TEXT NOT NULL,
|
|
64
|
+
created_by_agent TEXT NOT NULL,
|
|
65
|
+
created_by_receipt TEXT NOT NULL,
|
|
66
|
+
forgotten_at TEXT,
|
|
67
|
+
merged_into TEXT,
|
|
68
|
+
attributes TEXT NOT NULL DEFAULT '{}',
|
|
69
|
+
metadata TEXT NOT NULL DEFAULT '{}'
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_entities_type ON entities(entity_type);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_entities_name ON entities(name);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_entities_scope ON entities(scope);
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_entities_agent ON entities(created_by_agent);
|
|
76
|
+
CREATE INDEX IF NOT EXISTS idx_entities_forgotten ON entities(forgotten_at);
|
|
77
|
+
|
|
78
|
+
CREATE TABLE IF NOT EXISTS observations (
|
|
79
|
+
observation_id TEXT PRIMARY KEY,
|
|
80
|
+
entity_id TEXT NOT NULL,
|
|
81
|
+
content TEXT NOT NULL,
|
|
82
|
+
confidence TEXT NOT NULL DEFAULT 'medium',
|
|
83
|
+
source_receipt_id TEXT NOT NULL,
|
|
84
|
+
source_agent_id TEXT NOT NULL,
|
|
85
|
+
source_context TEXT,
|
|
86
|
+
observed_at TEXT NOT NULL,
|
|
87
|
+
forgotten_at TEXT,
|
|
88
|
+
forgotten_by TEXT,
|
|
89
|
+
superseded_by TEXT,
|
|
90
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
91
|
+
metadata TEXT NOT NULL DEFAULT '{}',
|
|
92
|
+
FOREIGN KEY (entity_id) REFERENCES entities(entity_id)
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
CREATE INDEX IF NOT EXISTS idx_obs_entity ON observations(entity_id);
|
|
96
|
+
CREATE INDEX IF NOT EXISTS idx_obs_agent ON observations(source_agent_id);
|
|
97
|
+
CREATE INDEX IF NOT EXISTS idx_obs_confidence ON observations(confidence);
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_obs_forgotten ON observations(forgotten_at);
|
|
99
|
+
CREATE INDEX IF NOT EXISTS idx_obs_receipt ON observations(source_receipt_id);
|
|
100
|
+
|
|
101
|
+
CREATE TABLE IF NOT EXISTS relationships (
|
|
102
|
+
relationship_id TEXT PRIMARY KEY,
|
|
103
|
+
from_entity_id TEXT NOT NULL,
|
|
104
|
+
to_entity_id TEXT NOT NULL,
|
|
105
|
+
relationship_type TEXT NOT NULL,
|
|
106
|
+
strength TEXT NOT NULL DEFAULT 'medium',
|
|
107
|
+
source_receipt_id TEXT NOT NULL,
|
|
108
|
+
created_at TEXT NOT NULL,
|
|
109
|
+
forgotten_at TEXT,
|
|
110
|
+
metadata TEXT NOT NULL DEFAULT '{}',
|
|
111
|
+
FOREIGN KEY (from_entity_id) REFERENCES entities(entity_id),
|
|
112
|
+
FOREIGN KEY (to_entity_id) REFERENCES entities(entity_id)
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
CREATE INDEX IF NOT EXISTS idx_rel_from ON relationships(from_entity_id);
|
|
116
|
+
CREATE INDEX IF NOT EXISTS idx_rel_to ON relationships(to_entity_id);
|
|
117
|
+
CREATE INDEX IF NOT EXISTS idx_rel_type ON relationships(relationship_type);
|
|
118
|
+
`);try{this.db.exec(`
|
|
119
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5(
|
|
120
|
+
content,
|
|
121
|
+
content='observations',
|
|
122
|
+
content_rowid='rowid',
|
|
123
|
+
tokenize='porter unicode61'
|
|
124
|
+
);
|
|
125
|
+
`)}catch{}this.db.exec(`
|
|
126
|
+
CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN
|
|
127
|
+
INSERT INTO observations_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
128
|
+
END;
|
|
129
|
+
|
|
130
|
+
CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN
|
|
131
|
+
INSERT INTO observations_fts(observations_fts, rowid, content) VALUES('delete', old.rowid, old.content);
|
|
132
|
+
END;
|
|
133
|
+
|
|
134
|
+
CREATE TRIGGER IF NOT EXISTS observations_au AFTER UPDATE ON observations BEGIN
|
|
135
|
+
INSERT INTO observations_fts(observations_fts, rowid, content) VALUES('delete', old.rowid, old.content);
|
|
136
|
+
INSERT INTO observations_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
137
|
+
END;
|
|
138
|
+
`)}createEntity(a){return this.db.prepare(`
|
|
139
|
+
INSERT INTO entities (entity_id, entity_type, name, aliases, scope, created_at,
|
|
140
|
+
created_by_agent, created_by_receipt, forgotten_at, merged_into, attributes, metadata)
|
|
141
|
+
VALUES (@entity_id, @entity_type, @name, @aliases, @scope, @created_at,
|
|
142
|
+
@created_by_agent, @created_by_receipt, @forgotten_at, @merged_into, @attributes, @metadata)
|
|
143
|
+
`).run({entity_id:a.entity_id,entity_type:a.entity_type,name:a.name,aliases:JSON.stringify(a.aliases),scope:a.scope,created_at:a.created_at,created_by_agent:a.created_by_agent,created_by_receipt:a.created_by_receipt,forgotten_at:a.forgotten_at,merged_into:a.merged_into,attributes:JSON.stringify(a.attributes),metadata:JSON.stringify(a.metadata)}),a}getEntity(a){let b=this.db.prepare("SELECT * FROM entities WHERE entity_id = ?").get(a);return b?this.rowToEntity(b):null}findEntityByName(a,b){let c=this.db.prepare("SELECT * FROM entities WHERE name = ? AND entity_type = ? AND forgotten_at IS NULL AND merged_into IS NULL").get(a,b);return c?this.rowToEntity(c):null}findEntities(a){let b=[],c=[];if(a.include_forgotten||(b.push("forgotten_at IS NULL"),b.push("merged_into IS NULL")),a.entity_type&&(b.push("entity_type = ?"),c.push(a.entity_type)),a.scope&&(b.push("scope = ?"),c.push(a.scope)),a.agent_id&&(b.push("created_by_agent = ?"),c.push(a.agent_id)),a.query){b.push("(name LIKE ? OR aliases LIKE ?)");let d=`%${a.query}%`;c.push(d,d)}let d=b.length>0?`WHERE ${b.join(" AND ")}`:"",e=a.limit??20,f=a.page??1,g=this.db.prepare(`SELECT COUNT(*) as cnt FROM entities ${d}`).get(...c).cnt,h=Math.max(1,Math.ceil(g/e));return{data:this.db.prepare(`SELECT * FROM entities ${d} ORDER BY created_at DESC LIMIT ? OFFSET ?`).all(...c,e,(f-1)*e).map(a=>this.rowToEntity(a)),pagination:{page:f,limit:e,total:g,total_pages:h,has_next:f<h,has_prev:f>1}}}updateEntity(a,b){let c=this.getEntity(a);if(!c)throw Error(`Entity not found: ${a}`);let d={...c,...b};return this.db.prepare(`
|
|
144
|
+
UPDATE entities SET
|
|
145
|
+
name = @name, aliases = @aliases, scope = @scope,
|
|
146
|
+
attributes = @attributes, metadata = @metadata,
|
|
147
|
+
forgotten_at = @forgotten_at, merged_into = @merged_into
|
|
148
|
+
WHERE entity_id = @entity_id
|
|
149
|
+
`).run({entity_id:a,name:d.name,aliases:JSON.stringify(d.aliases),scope:d.scope,attributes:JSON.stringify(d.attributes),metadata:JSON.stringify(d.metadata),forgotten_at:d.forgotten_at,merged_into:d.merged_into}),this.getEntity(a)}forgetEntity(a,b){let c=new Date().toISOString();this.db.prepare("UPDATE entities SET forgotten_at = ? WHERE entity_id = ?").run(c,a),this.db.prepare("UPDATE observations SET forgotten_at = ?, forgotten_by = ? WHERE entity_id = ? AND forgotten_at IS NULL").run(c,b,a)}mergeEntities(a,b){let c=this.getEntity(a),d=this.getEntity(b);if(!c)throw Error(`Source entity not found: ${a}`);if(!d)throw Error(`Target entity not found: ${b}`);this.db.prepare("UPDATE observations SET entity_id = ? WHERE entity_id = ?").run(b,a),this.db.prepare("UPDATE relationships SET from_entity_id = ? WHERE from_entity_id = ?").run(b,a),this.db.prepare("UPDATE relationships SET to_entity_id = ? WHERE to_entity_id = ?").run(b,a);let e=[...new Set([...d.aliases,c.name,...c.aliases])];return this.db.prepare("UPDATE entities SET aliases = ? WHERE entity_id = ?").run(JSON.stringify(e),b),this.db.prepare("UPDATE entities SET merged_into = ?, forgotten_at = ? WHERE entity_id = ?").run(b,new Date().toISOString(),a),this.getEntity(b)}addObservation(a){return this.db.prepare(`
|
|
150
|
+
INSERT INTO observations (observation_id, entity_id, content, confidence,
|
|
151
|
+
source_receipt_id, source_agent_id, source_context, observed_at,
|
|
152
|
+
forgotten_at, forgotten_by, superseded_by, tags, metadata)
|
|
153
|
+
VALUES (@observation_id, @entity_id, @content, @confidence,
|
|
154
|
+
@source_receipt_id, @source_agent_id, @source_context, @observed_at,
|
|
155
|
+
@forgotten_at, @forgotten_by, @superseded_by, @tags, @metadata)
|
|
156
|
+
`).run({observation_id:a.observation_id,entity_id:a.entity_id,content:a.content,confidence:a.confidence,source_receipt_id:a.source_receipt_id,source_agent_id:a.source_agent_id,source_context:a.source_context,observed_at:a.observed_at,forgotten_at:a.forgotten_at,forgotten_by:a.forgotten_by,superseded_by:a.superseded_by,tags:JSON.stringify(a.tags),metadata:JSON.stringify(a.metadata)}),a}getObservation(a){let b=this.db.prepare("SELECT * FROM observations WHERE observation_id = ?").get(a);return b?this.rowToObservation(b):null}getObservations(a,b=!1){return this.db.prepare(`SELECT * FROM observations ${b?"WHERE entity_id = ?":"WHERE entity_id = ? AND forgotten_at IS NULL"} ORDER BY observed_at DESC`).all(a).map(a=>this.rowToObservation(a))}forgetObservation(a,b){let c=new Date().toISOString();this.db.prepare("UPDATE observations SET forgotten_at = ?, forgotten_by = ? WHERE observation_id = ?").run(c,b,a)}supersede(a,b){return this.db.prepare("UPDATE observations SET superseded_by = ? WHERE observation_id = ?").run(b.observation_id,a),this.addObservation(b)}addRelationship(a){return this.db.prepare(`
|
|
157
|
+
INSERT INTO relationships (relationship_id, from_entity_id, to_entity_id,
|
|
158
|
+
relationship_type, strength, source_receipt_id, created_at, forgotten_at, metadata)
|
|
159
|
+
VALUES (@relationship_id, @from_entity_id, @to_entity_id,
|
|
160
|
+
@relationship_type, @strength, @source_receipt_id, @created_at, @forgotten_at, @metadata)
|
|
161
|
+
`).run({relationship_id:a.relationship_id,from_entity_id:a.from_entity_id,to_entity_id:a.to_entity_id,relationship_type:a.relationship_type,strength:a.strength,source_receipt_id:a.source_receipt_id,created_at:a.created_at,forgotten_at:a.forgotten_at,metadata:JSON.stringify(a.metadata)}),a}getRelationships(a){return this.db.prepare("SELECT * FROM relationships WHERE (from_entity_id = ? OR to_entity_id = ?) AND forgotten_at IS NULL ORDER BY created_at DESC").all(a,a).map(a=>this.rowToRelationship(a))}forgetRelationship(a){let b=new Date().toISOString();this.db.prepare("UPDATE relationships SET forgotten_at = ? WHERE relationship_id = ?").run(b,a)}search(a,b){let c,d=b?.limit??20;try{c=this.db.prepare(`
|
|
162
|
+
SELECT o.*, observations_fts.rank
|
|
163
|
+
FROM observations_fts
|
|
164
|
+
JOIN observations o ON o.rowid = observations_fts.rowid
|
|
165
|
+
WHERE observations_fts MATCH ?
|
|
166
|
+
AND o.forgotten_at IS NULL
|
|
167
|
+
ORDER BY rank
|
|
168
|
+
LIMIT ?
|
|
169
|
+
`).all(a,d).map(a=>{let b=this.rowToObservation(a);return{entity:this.getEntity(b.entity_id),observation:b,rank:a.rank}}).filter(a=>null!==a.entity)}catch{c=this.db.prepare(`
|
|
170
|
+
SELECT * FROM observations
|
|
171
|
+
WHERE content LIKE ? AND forgotten_at IS NULL
|
|
172
|
+
ORDER BY observed_at DESC
|
|
173
|
+
LIMIT ?
|
|
174
|
+
`).all(`%${a}%`,d).map((a,b)=>{let c=this.rowToObservation(a);return{entity:this.getEntity(c.entity_id),observation:c,rank:b}}).filter(a=>null!==a.entity)}if(b?.entity_type&&(c=c.filter(a=>a.entity.entity_type===b.entity_type)),b?.scope&&(c=c.filter(a=>a.entity.scope===b.scope)),b?.confidence_min){let a=E[b.confidence_min]??0;c=c.filter(b=>(E[b.observation.confidence]??0)>=a)}return c}recall(a){if(a.query){let b=this.search(a.query,a),c=new Map,d=[];for(let a of b)c.set(a.entity.entity_id,a.entity),d.push(a.observation);return{entities:Array.from(c.values()),observations:d,total:d.length}}let b=this.findEntities(a),c=[];for(let d of b.data){let b=this.getObservations(d.entity_id,a.include_forgotten);c.push(...b)}return{entities:b.data,observations:c,total:c.length}}getEntityHistory(a){return this.db.prepare("SELECT * FROM observations WHERE entity_id = ? ORDER BY observed_at ASC").all(a).map(a=>this.rowToObservation(a))}getMemoryProvenance(a){let b=this.getObservation(a);if(!b)return null;let c=this.getEntity(b.entity_id);return c?{observation:b,entity:c,receipt_id:b.source_receipt_id,chain:[]}:null}getMemoryStats(a,b,c){let d=[],e=[];a&&(d.push("created_by_agent = ?"),e.push("source_agent_id = ?"),[].push(a));let f=d.length>0?`WHERE ${d.join(" AND ")}`:"",g=e.length>0?`WHERE ${e.join(" AND ")}`:"",h=this.db.prepare(`SELECT COUNT(*) as cnt FROM entities ${f}`).get(...a?[a]:[]).cnt,i=this.db.prepare(`SELECT COUNT(*) as cnt FROM observations ${g}`).get(...a?[a]:[]).cnt,j=this.db.prepare("SELECT COUNT(*) as cnt FROM relationships").get().cnt,k=this.db.prepare(`SELECT COUNT(*) as cnt FROM observations WHERE forgotten_at IS NOT NULL ${a?"AND source_agent_id = ?":""}`).get(...a?[a]:[]).cnt,l=this.db.prepare(`SELECT COUNT(*) as cnt FROM entities WHERE forgotten_at IS NOT NULL ${a?"AND created_by_agent = ?":""}`).get(...a?[a]:[]).cnt,m=this.db.prepare("SELECT entity_type, COUNT(*) as cnt FROM entities GROUP BY entity_type").all(),n={};for(let a of m)n[a.entity_type]=a.cnt;return{total_entities:h,total_observations:i,total_relationships:j,forgotten_observations:k,forgotten_entities:l,by_entity_type:n,by_operation:{}}}rowToEntity(a){return{entity_id:a.entity_id,entity_type:a.entity_type,name:a.name,aliases:JSON.parse(a.aliases||"[]"),scope:a.scope,created_at:a.created_at,created_by_agent:a.created_by_agent,created_by_receipt:a.created_by_receipt,forgotten_at:a.forgotten_at||null,merged_into:a.merged_into||null,attributes:JSON.parse(a.attributes||"{}"),metadata:JSON.parse(a.metadata||"{}")}}rowToObservation(a){return{observation_id:a.observation_id,entity_id:a.entity_id,content:a.content,confidence:a.confidence,source_receipt_id:a.source_receipt_id,source_agent_id:a.source_agent_id,source_context:a.source_context||null,observed_at:a.observed_at,forgotten_at:a.forgotten_at||null,forgotten_by:a.forgotten_by||null,superseded_by:a.superseded_by||null,tags:JSON.parse(a.tags||"[]"),metadata:JSON.parse(a.metadata||"{}")}}rowToRelationship(a){return{relationship_id:a.relationship_id,from_entity_id:a.from_entity_id,to_entity_id:a.to_entity_id,relationship_type:a.relationship_type,strength:a.strength,source_receipt_id:a.source_receipt_id,created_at:a.created_at,forgotten_at:a.forgotten_at||null,metadata:JSON.parse(a.metadata||"{}")}}};function G(a){let b=JSON.stringify(function a(b){if(null==b)return b;if(Array.isArray(b))return b.map(a);if("object"==typeof b){let c={};for(let d of Object.keys(b).sort())c[d]=a(b[d]);return c}return b}(a))??"null",c=(0,g.createHash)("sha256").update(b).digest("hex");return`sha256:${c}`}var H=new Set(["receipt_id","parent_receipt_id","chain_id","receipt_type","agent_id","org_id","action","input_hash","output_hash","output_summary","model","tokens_in","tokens_out","cost_usd","latency_ms","tool_calls","timestamp","completed_at","status","error","environment","tags","constraints","constraint_result","signature","verify_url","callback_verified","confidence","metadata"]);function I(a,b,c){if(0===b.length)return{passed:!0,results:[],evaluated_at:new Date().toISOString()};let d=[];for(let e of b){let b;switch(e.type){case"max_latency_ms":b=function(a,b){let c=b.value,d=a.latency_ms;return null==d?{type:b.type,passed:!1,expected:c,actual:null,message:b.message??"latency_ms is null"}:{type:b.type,passed:d<=c,expected:c,actual:d,message:b.message}}(a,e);break;case"max_cost_usd":b=function(a,b){let c=b.value,d=a.cost_usd;return null==d?{type:b.type,passed:!1,expected:c,actual:null,message:b.message??"cost_usd is null"}:{type:b.type,passed:d<=c,expected:c,actual:d,message:b.message}}(a,e);break;case"min_confidence":b=function(a,b){let c=b.value,d=a.confidence;return null==d?{type:b.type,passed:!1,expected:c,actual:null,message:b.message??"confidence is null"}:{type:b.type,passed:d>=c,expected:c,actual:d,message:b.message}}(a,e);break;case"required_fields":b=function(a,b){let c=b.value;if(!Array.isArray(c))return{type:b.type,passed:!1,expected:c,actual:null,message:b.message??"value must be an array of field names"};let d=[],e=[];for(let b of c)H.has(b)?(null===a[b]||void 0===a[b])&&d.push(b):e.push(b);return e.length>0?{type:b.type,passed:!1,expected:c,actual:e,message:b.message??`Unknown field(s): ${e.join(", ")}`}:{type:b.type,passed:0===d.length,expected:c,actual:d.length>0?d:c,message:b.message??(d.length>0?`Missing field(s): ${d.join(", ")}`:void 0)}}(a,e);break;case"status_must_be":b=function(a,b){let c=b.value,d=a.status,e=Array.isArray(c)?c:[c];return{type:b.type,passed:e.includes(d),expected:c,actual:d,message:b.message}}(a,e);break;case"output_schema":b=function(a,b){if(void 0===b)return{type:"output_schema",passed:!1,expected:a.value,actual:null,message:a.message??"output_schema requires raw output data — only available during track() or create()"};let c=a.value,d=function a(b,c,d=""){let e=[];if(0===Object.keys(c).length)return e;if(void 0!==c.type){let a=c.type;if(!function(a,b){switch(b){case"string":return"string"==typeof a;case"number":return"number"==typeof a;case"integer":return"number"==typeof a&&Number.isInteger(a);case"boolean":return"boolean"==typeof a;case"object":return"object"==typeof a&&null!==a&&!Array.isArray(a);case"array":return Array.isArray(a);case"null":return null===a;default:return!1}}(b,a)){var f;return e.push(`${d||"."}: expected type ${a}, got ${null===(f=b)?"null":Array.isArray(f)?"array":typeof f}`),e}}if(void 0!==c.enum){let a=c.enum;a.some(a=>JSON.stringify(a)===JSON.stringify(b))||e.push(`${d||"."}: value ${JSON.stringify(b)} not in enum ${JSON.stringify(a)}`)}if("string"==typeof b&&(void 0!==c.minLength&&b.length<c.minLength&&e.push(`${d||"."}: string length ${b.length} < minLength ${c.minLength}`),void 0!==c.maxLength&&b.length>c.maxLength&&e.push(`${d||"."}: string length ${b.length} > maxLength ${c.maxLength}`),void 0!==c.pattern&&(new RegExp(c.pattern).test(b)||e.push(`${d||"."}: string does not match pattern ${c.pattern}`))),"number"==typeof b&&(void 0!==c.minimum&&b<c.minimum&&e.push(`${d||"."}: ${b} < minimum ${c.minimum}`),void 0!==c.maximum&&b>c.maximum&&e.push(`${d||"."}: ${b} > maximum ${c.maximum}`)),"object"==typeof b&&null!==b&&!Array.isArray(b)){if(void 0!==c.required)for(let a of c.required)a in b||e.push(`${d||"."}: missing required property "${a}"`);if(void 0!==c.properties){for(let[f,g]of Object.entries(c.properties))if(f in b){let c=a(b[f],g,`${d}.${f}`);e.push(...c)}}if(!1===c.additionalProperties&&void 0!==c.properties){let a=new Set(Object.keys(c.properties));for(let c of Object.keys(b))a.has(c)||e.push(`${d||"."}: additional property "${c}" not allowed`)}}if(Array.isArray(b)&&(void 0!==c.minItems&&b.length<c.minItems&&e.push(`${d||"."}: array length ${b.length} < minItems ${c.minItems}`),void 0!==c.maxItems&&b.length>c.maxItems&&e.push(`${d||"."}: array length ${b.length} > maxItems ${c.maxItems}`),void 0!==c.items)){let f=c.items;for(let c=0;c<b.length;c++){let g=a(b[c],f,`${d}[${c}]`);e.push(...g)}}return e}(b,c);return{type:"output_schema",passed:0===d.length,expected:c,actual:d.length>0?d:b,message:d.length>0?a.message??`Schema validation failed: ${d.join(", ")}`:void 0}}(e,c?.rawOutput);break;default:b={type:e.type,passed:!1,expected:e.value,actual:null,message:e.message??`Unknown constraint type: ${e.type}`}}d.push(b)}return{passed:d.every(a=>a.passed),results:d,evaluated_at:new Date().toISOString()}}function J(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 K(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(J),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}}var L=class{constructor(a,b,c){this.store=a,this.keyManager=b,this.configManager=c}async create(a){let b=this.configManager.getConfig(),c=`rcpt_${(0,j.Ak)(12)}`,d=a.chain_id??`chain_${(0,j.Ak)(8)}`,e=new Date().toISOString(),f=a.constraints&&a.constraints.length>0?a.constraints:null,g=a.expires_at;!g&&a.ttl_ms&&(g=new Date(Date.now()+a.ttl_ms).toISOString());let i={...a.metadata??{}};g&&(i.expires_at=g);let k={receipt_id:c,parent_receipt_id:a.parent_receipt_id??null,chain_id:d,receipt_type:a.receipt_type??"action",agent_id:b.agentId,org_id:b.orgId,action:a.action,input_hash:a.input_hash,output_hash:a.output_hash??null,output_summary:a.output_summary??null,model:a.model??null,tokens_in:a.tokens_in??null,tokens_out:a.tokens_out??null,cost_usd:a.cost_usd??null,latency_ms:a.latency_ms??null,tool_calls:a.tool_calls??null,timestamp:e,completed_at:"completed"===a.status?e:null,status:a.status??"pending",error:null,environment:b.environment,tags:a.tags??null,constraints:f?{definitions:f}:null,constraint_result:null,signature:"",verify_url:`local://verify/${c}`,callback_verified:null,confidence:a.confidence??null,metadata:i};"completed"===k.status&&f&&(k.constraint_result=I(k,f,{rawOutput:a._rawOutput}));let l=(0,h.W_)(k);k.signature=(0,h.o3)(l,this.keyManager.getPrivateKey());let m=p.parse(k);return await this.store.save(m),m}async complete(a,b){let c=await this.store.get(a);if(!c)throw Error(`Receipt not found: ${a}`);if("pending"!==c.status)throw Error(`Receipt ${a} is not pending (status: ${c.status})`);let d=new Date().toISOString(),e={...c,status:b.status,completed_at:d,output_hash:b.output_hash??c.output_hash,output_summary:b.output_summary??c.output_summary,model:b.model??c.model,tokens_in:b.tokens_in??c.tokens_in,tokens_out:b.tokens_out??c.tokens_out,cost_usd:b.cost_usd??c.cost_usd,latency_ms:b.latency_ms??c.latency_ms,tool_calls:b.tool_calls??c.tool_calls,confidence:b.confidence??c.confidence,callback_verified:b.callback_verified??c.callback_verified,error:b.error??c.error,metadata:b.metadata?{...c.metadata,...b.metadata}:c.metadata,constraint_result:c.constraint_result},f=c.constraints,g=f?.definitions??null;Array.isArray(g)&&g.length>0&&(e.constraint_result=I(e,g));let i=(0,h.W_)(e);e.signature=(0,h.o3)(i,this.keyManager.getPrivateKey());let j=p.parse(e);return await this.store.save(j),j}async track(a){let b=G(a.input),c=void 0!==a.output?G(a.output):null;return this.create({action:a.action,input_hash:b,output_hash:c,output_summary:a.output_summary??null,model:a.model??null,tokens_in:a.tokens_in??null,tokens_out:a.tokens_out??null,cost_usd:a.cost_usd??null,latency_ms:a.latency_ms??null,tool_calls:a.tool_calls??null,tags:a.tags??null,confidence:a.confidence??null,metadata:a.metadata??{},parent_receipt_id:a.parent_receipt_id??null,chain_id:a.chain_id,status:"completed",constraints:a.constraints,expires_at:a.expires_at,ttl_ms:a.ttl_ms,_rawOutput:a.output})}async verify(a){let b=await this.store.get(a);if(!b)throw Error(`Receipt not found: ${a}`);let c=(0,h.W_)(b);return{verified:(0,h.XF)(c,b.signature,this.keyManager.getPublicKey()),receipt:b}}async get(a){return this.store.get(a)}async list(a,b,c,d){return this.store.list(a,b,c,d)}async getChain(a){return this.store.getChain(a)}async getJudgments(a){return(await this.store.list({parent_receipt_id:a,receipt_type:"judgment"})).data}async cleanup(){let a=await this.store.cleanup();return{deleted:a.deleted,remaining:a.total-a.deleted}}getPublicKey(){return this.keyManager.getPublicKey()}async generateInvoice(a){return K(this.store,this.keyManager,a)}},M=class{constructor(a,b){this.receiptEngine=a,this.memoryStore=b}async observe(a){let b=a.scope??"agent",c=a.confidence??"medium",d=!1,e=this.memoryStore.findEntityByName(a.entityName,a.entityType),f=await this.receiptEngine.create({action:"memory.observe",receipt_type:"memory",input_hash:G({entityName:a.entityName,content:a.content}),status:"completed",metadata:{memory:{memory_operation:"observe",entity_id:e?.entity_id??null,observation_id:null,relationship_id:null,scope:b,query:null,results_count:null,confidence:c}}});e||(e=this.memoryStore.createEntity({entity_id:`ent_${(0,j.Ak)(12)}`,entity_type:a.entityType,name:a.entityName,aliases:[],scope:b,created_at:new Date().toISOString(),created_by_agent:a.agentId,created_by_receipt:f.receipt_id,forgotten_at:null,merged_into:null,attributes:{},metadata:{}}),d=!0);let g=this.memoryStore.addObservation({observation_id:`obs_${(0,j.Ak)(12)}`,entity_id:e.entity_id,content:a.content,confidence:c,source_receipt_id:f.receipt_id,source_agent_id:a.agentId,source_context:a.context??null,observed_at:new Date().toISOString(),forgotten_at:null,forgotten_by:null,superseded_by:null,tags:a.tags??[],metadata:{}});return{entity:e,observation:g,receipt:f,created_entity:d}}async recall(a){let b={query:a.query,entity_type:a.entityType,entity_id:a.entityId,scope:a.scope,limit:a.limit??20,include_forgotten:!1,page:1},c=this.memoryStore.recall(b),d=await this.receiptEngine.create({action:"memory.recall",receipt_type:"memory",input_hash:G({query:a.query,entityType:a.entityType,entityId:a.entityId}),output_hash:G({entities:c.entities.length,observations:c.observations.length}),status:"completed",metadata:{memory:{memory_operation:"recall",entity_id:a.entityId??null,observation_id:null,relationship_id:null,scope:a.scope??"agent",query:a.query??null,results_count:c.total,confidence:null}}});return{entities:c.entities,observations:c.observations,receipt:d}}async forget(a){let b=a.entityId?"memory.forget_entity":"memory.forget";if(a.entityId)this.memoryStore.forgetEntity(a.entityId,a.agentId);else if(a.observationId)this.memoryStore.forgetObservation(a.observationId,a.agentId);else throw Error("Either entityId or observationId must be provided");return{receipt:await this.receiptEngine.create({action:b,receipt_type:"memory",input_hash:G({entityId:a.entityId,observationId:a.observationId,reason:a.reason}),status:"completed",metadata:{memory:{memory_operation:a.entityId?"forget_entity":"forget",entity_id:a.entityId??null,observation_id:a.observationId??null,relationship_id:null,scope:"agent",query:null,results_count:null,confidence:null},reason:a.reason}})}}async relate(a){let b=await this.receiptEngine.create({action:"memory.relate",receipt_type:"memory",input_hash:G({from:a.fromEntityId,to:a.toEntityId,type:a.relationshipType}),status:"completed",metadata:{memory:{memory_operation:"observe",entity_id:a.fromEntityId,observation_id:null,relationship_id:null,scope:"agent",query:null,results_count:null,confidence:a.strength??"medium"}}});return{relationship:this.memoryStore.addRelationship({relationship_id:`rel_${(0,j.Ak)(12)}`,from_entity_id:a.fromEntityId,to_entity_id:a.toEntityId,relationship_type:a.relationshipType,strength:a.strength??"medium",source_receipt_id:b.receipt_id,created_at:new Date().toISOString(),forgotten_at:null,metadata:a.context?{context:a.context}:{}}),receipt:b}}async merge(a){let b=this.memoryStore.mergeEntities(a.sourceEntityId,a.targetEntityId),c=await this.receiptEngine.create({action:"memory.merge",receipt_type:"memory",input_hash:G({source:a.sourceEntityId,target:a.targetEntityId}),output_hash:G(b),status:"completed",metadata:{memory:{memory_operation:"merge",entity_id:a.targetEntityId,observation_id:null,relationship_id:null,scope:b.scope,query:null,results_count:null,confidence:null}}});return{mergedEntity:b,receipt:c}}provenance(a){return this.memoryStore.getMemoryProvenance(a)}entityTimeline(a){let b=this.memoryStore.getEntityHistory(a),c=this.memoryStore.getRelationships(a),d=[];for(let a of b)d.push({type:a.forgotten_at?"forget":"observation",timestamp:a.observed_at,data:a});for(let a of c)d.push({type:"relationship",timestamp:a.created_at,data:a});return d.sort((a,b)=>a.timestamp.localeCompare(b.timestamp)),d}memoryAudit(a){return this.memoryStore.getMemoryStats(a.agentId,a.from,a.to)}};function N(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 O(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([P(a.receipt_id),P(a.action),P(a.agent_id),P(a.timestamp),P(a.description),a.cost_usd??"",a.latency_ms??"",P(a.model??""),a.tokens_in??"",a.tokens_out??"",a.constraints_passed??"",P(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 P(a){return a.includes(",")||a.includes('"')||a.includes("\n")?`"${a.replace(/"/g,'""')}"`:a}function Q(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 R(a){let b=a.provider?`
|
|
175
|
+
<div class="party">
|
|
176
|
+
<h3>From</h3>
|
|
177
|
+
<p class="party-name">${S(a.provider.name)}</p>
|
|
178
|
+
${a.provider.email?`<p>${S(a.provider.email)}</p>`:""}
|
|
179
|
+
${a.provider.address?`<p>${S(a.provider.address)}</p>`:""}
|
|
180
|
+
</div>`:"",c=a.client?`
|
|
181
|
+
<div class="party">
|
|
182
|
+
<h3>Bill To</h3>
|
|
183
|
+
<p class="party-name">${S(a.client.name)}</p>
|
|
184
|
+
${a.client.email?`<p>${S(a.client.email)}</p>`:""}
|
|
185
|
+
${a.client.address?`<p>${S(a.client.address)}</p>`:""}
|
|
186
|
+
</div>`:"",d=a.groups.map(a=>`
|
|
187
|
+
<div class="group">
|
|
188
|
+
<h3>${S(a.label)}</h3>
|
|
189
|
+
<table>
|
|
190
|
+
<thead>
|
|
191
|
+
<tr>
|
|
192
|
+
<th>Receipt ID</th>
|
|
193
|
+
<th>Action</th>
|
|
194
|
+
<th>Agent</th>
|
|
195
|
+
<th>Description</th>
|
|
196
|
+
<th>Timestamp</th>
|
|
197
|
+
<th class="num">Cost</th>
|
|
198
|
+
</tr>
|
|
199
|
+
</thead>
|
|
200
|
+
<tbody>
|
|
201
|
+
${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=T(a.timestamp);return` <tr>
|
|
202
|
+
<td class="receipt-id">${S(a.receipt_id)}</td>
|
|
203
|
+
<td>${S(a.action)}</td>
|
|
204
|
+
<td>${S(a.agent_id)}</td>
|
|
205
|
+
<td>${S(c)}</td>
|
|
206
|
+
<td>${S(d)}</td>
|
|
207
|
+
<td class="num">${b}</td>
|
|
208
|
+
</tr>`})(a)).join("\n")}
|
|
209
|
+
</tbody>
|
|
210
|
+
<tfoot>
|
|
211
|
+
<tr>
|
|
212
|
+
<td colspan="5" class="subtotal-label">Subtotal (${a.count} items)</td>
|
|
213
|
+
<td class="num subtotal-value">$${a.subtotal_usd.toFixed(4)}</td>
|
|
214
|
+
</tr>
|
|
215
|
+
</tfoot>
|
|
216
|
+
</table>
|
|
217
|
+
</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>${S(a.notes)}</p></div>`:"",g=a.payment_terms?`<div class="section"><h3>Payment Terms</h3><p>${S(a.payment_terms)}</p></div>`:"";return`<!DOCTYPE html>
|
|
218
|
+
<html lang="en">
|
|
219
|
+
<head>
|
|
220
|
+
<meta charset="UTF-8">
|
|
221
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
222
|
+
<title>Invoice ${S(a.invoice_number)}</title>
|
|
223
|
+
<style>
|
|
224
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
225
|
+
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; }
|
|
226
|
+
.header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 32px; padding-bottom: 24px; border-bottom: 2px solid #e5e7eb; }
|
|
227
|
+
.header h1 { font-size: 28px; font-weight: 700; color: #111; }
|
|
228
|
+
.header .invoice-number { font-size: 14px; color: #6b7280; margin-top: 4px; }
|
|
229
|
+
.header .meta { text-align: right; font-size: 13px; color: #6b7280; }
|
|
230
|
+
.parties { display: flex; gap: 48px; margin-bottom: 32px; }
|
|
231
|
+
.party h3 { font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #9ca3af; margin-bottom: 4px; }
|
|
232
|
+
.party-name { font-weight: 600; font-size: 15px; }
|
|
233
|
+
.party p { font-size: 13px; color: #4b5563; }
|
|
234
|
+
.group { margin-bottom: 24px; }
|
|
235
|
+
.group h3 { font-size: 15px; font-weight: 600; margin-bottom: 8px; color: #374151; }
|
|
236
|
+
table { width: 100%; border-collapse: collapse; font-size: 12px; }
|
|
237
|
+
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; }
|
|
238
|
+
td { padding: 7px 10px; border-bottom: 1px solid #f3f4f6; color: #4b5563; }
|
|
239
|
+
.num { text-align: right; font-variant-numeric: tabular-nums; }
|
|
240
|
+
.receipt-id { font-family: ui-monospace, monospace; font-size: 11px; color: #6b7280; }
|
|
241
|
+
.subtotal-label { text-align: right; font-weight: 600; color: #374151; }
|
|
242
|
+
.subtotal-value { font-weight: 600; color: #111; }
|
|
243
|
+
.summary { margin-top: 32px; padding-top: 24px; border-top: 2px solid #e5e7eb; }
|
|
244
|
+
.summary h3 { font-size: 15px; font-weight: 600; margin-bottom: 12px; }
|
|
245
|
+
.summary table { max-width: 360px; }
|
|
246
|
+
.summary td { padding: 5px 10px; }
|
|
247
|
+
.summary td:first-child { font-weight: 500; color: #374151; }
|
|
248
|
+
.summary td:last-child { text-align: right; font-variant-numeric: tabular-nums; }
|
|
249
|
+
.total-row td { font-size: 16px; font-weight: 700; color: #111; border-top: 2px solid #e5e7eb; padding-top: 10px; }
|
|
250
|
+
.section { margin-top: 24px; }
|
|
251
|
+
.section h3 { font-size: 13px; font-weight: 600; margin-bottom: 6px; color: #374151; }
|
|
252
|
+
.section p { font-size: 13px; color: #4b5563; }
|
|
253
|
+
.verification { margin-top: 32px; padding: 16px; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 8px; }
|
|
254
|
+
.verification h3 { font-size: 13px; font-weight: 600; color: #166534; margin-bottom: 6px; }
|
|
255
|
+
.verification p { font-size: 12px; color: #15803d; }
|
|
256
|
+
.verification code { font-family: ui-monospace, monospace; font-size: 11px; background: #dcfce7; padding: 2px 6px; border-radius: 3px; word-break: break-all; }
|
|
257
|
+
.footer { margin-top: 40px; padding-top: 16px; border-top: 1px solid #e5e7eb; text-align: center; font-size: 11px; color: #9ca3af; }
|
|
258
|
+
@media print {
|
|
259
|
+
body { padding: 20px; }
|
|
260
|
+
.verification { break-inside: avoid; }
|
|
261
|
+
table { page-break-inside: auto; }
|
|
262
|
+
tr { page-break-inside: avoid; }
|
|
263
|
+
}
|
|
264
|
+
</style>
|
|
265
|
+
</head>
|
|
266
|
+
<body>
|
|
267
|
+
<div class="header">
|
|
268
|
+
<div>
|
|
269
|
+
<h1>Invoice</h1>
|
|
270
|
+
<div class="invoice-number">${S(a.invoice_number)}</div>
|
|
271
|
+
</div>
|
|
272
|
+
<div class="meta">
|
|
273
|
+
<div>Generated: ${S(T(a.generated_at))}</div>
|
|
274
|
+
<div>Period: ${S(T(a.period.from))} — ${S(T(a.period.to))}</div>
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
${b||c?`<div class="parties">${b}${c}</div>`:""}
|
|
279
|
+
|
|
280
|
+
${d}
|
|
281
|
+
|
|
282
|
+
<div class="summary">
|
|
283
|
+
<h3>Summary</h3>
|
|
284
|
+
<table>
|
|
285
|
+
<tr class="total-row"><td>Total Cost</td><td>$${a.summary.total_cost_usd.toFixed(4)}</td></tr>
|
|
286
|
+
<tr><td>Total Receipts</td><td>${a.summary.total_receipts}</td></tr>
|
|
287
|
+
<tr><td>Avg Cost per Receipt</td><td>$${a.summary.avg_cost_usd.toFixed(4)}</td></tr>
|
|
288
|
+
<tr><td>Total Tokens (in/out)</td><td>${a.summary.total_tokens_in} / ${a.summary.total_tokens_out}</td></tr>
|
|
289
|
+
<tr><td>Avg Latency</td><td>${Math.round(a.summary.avg_latency_ms)}ms</td></tr>
|
|
290
|
+
${e}
|
|
291
|
+
</table>
|
|
292
|
+
</div>
|
|
293
|
+
|
|
294
|
+
${f}
|
|
295
|
+
${g}
|
|
296
|
+
|
|
297
|
+
<div class="verification">
|
|
298
|
+
<h3>Verification</h3>
|
|
299
|
+
<p>Every line item is a cryptographically signed receipt that can be independently verified.</p>
|
|
300
|
+
<p style="margin-top: 6px;">Public Key: <code>${S(a.public_key)}</code></p>
|
|
301
|
+
</div>
|
|
302
|
+
|
|
303
|
+
<div class="footer">
|
|
304
|
+
Generated by Agent Receipts — ${S(a.invoice_number)}
|
|
305
|
+
</div>
|
|
306
|
+
</body>
|
|
307
|
+
</html>`}function S(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function T(a){try{return new Date(a).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}catch{return a}}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=6872,exports.ids=[6872],exports.modules={1242:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),function(a,b){Object.keys(a).forEach(function(c){"default"===c||Object.prototype.hasOwnProperty.call(b,c)||Object.defineProperty(b,c,{enumerable:!0,get:function(){return a[c]}})})}(c(6996),b)},1757:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"NextResponse",{enumerable:!0,get:function(){return l}});let d=c(10419),e=c(65865),f=c(99991),g=c(89908),h=c(10419),i=Symbol("internal response"),j=new Set([301,302,303,307,308]);function k(a,b){var c;if(null==a||null==(c=a.request)?void 0:c.headers){if(!(a.request.headers instanceof Headers))throw Object.defineProperty(Error("request.headers must be an instance of Headers"),"__NEXT_ERROR_CODE",{value:"E119",enumerable:!1,configurable:!0});let c=[];for(let[d,e]of a.request.headers)b.set("x-middleware-request-"+d,e),c.push(d);b.set("x-middleware-override-headers",c.join(","))}}class l extends Response{constructor(a,b={}){super(a,b);let c=this.headers,j=new Proxy(new h.ResponseCookies(c),{get(a,e,f){switch(e){case"delete":case"set":return(...f)=>{let g=Reflect.apply(a[e],a,f),i=new Headers(c);return g instanceof h.ResponseCookies&&c.set("x-middleware-set-cookie",g.getAll().map(a=>(0,d.stringifyCookie)(a)).join(",")),k(b,i),g};default:return g.ReflectAdapter.get(a,e,f)}}});this[i]={cookies:j,url:b.url?new e.NextURL(b.url,{headers:(0,f.toNodeOutgoingHttpHeaders)(c),nextConfig:b.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[i].cookies}static json(a,b){let c=Response.json(a,b);return new l(c.body,c)}static redirect(a,b){let c="number"==typeof b?b:(null==b?void 0:b.status)??307;if(!j.has(c))throw Object.defineProperty(RangeError('Failed to execute "redirect" on "response": Invalid status code'),"__NEXT_ERROR_CODE",{value:"E529",enumerable:!1,configurable:!0});let d="object"==typeof b?b:{},e=new Headers(null==d?void 0:d.headers);return e.set("Location",(0,f.validateURL)(a)),new l(null,{...d,headers:e,status:c})}static rewrite(a,b){let c=new Headers(null==b?void 0:b.headers);return c.set("x-middleware-rewrite",(0,f.validateURL)(a)),k(b,c),new l(null,{...b,headers:c})}static next(a){let b=new Headers(null==a?void 0:a.headers);return b.set("x-middleware-next","1"),k(a,b),new l(null,{...a,headers:b})}}},2974:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"URLPattern",{enumerable:!0,get:function(){return c}});let c="undefined"==typeof URLPattern?void 0:URLPattern},6996:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"after",{enumerable:!0,get:function(){return e}});let d=c(29294);function e(a){let b=d.workAsyncStorage.getStore();if(!b)throw Object.defineProperty(Error("`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context"),"__NEXT_ERROR_CODE",{value:"E468",enumerable:!1,configurable:!0});let{afterContext:c}=b;return c.after(a)}},9145:(a,b,c)=>{"use strict";var d=c(76142);c.o(d,"NextResponse")&&c.d(b,{NextResponse:function(){return d.NextResponse}})},10541:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{isBot:function(){return e},userAgent:function(){return g},userAgentFromString:function(){return f}});let d=function(a){return a&&a.__esModule?a:{default:a}}(c(26044));function e(a){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(a)}function f(a){return{...(0,d.default)(a),isBot:void 0!==a&&e(a)}}function g({headers:a}){return f(a.get("user-agent")||void 0)}},26044:(a,b,c)=>{var d;(()=>{var e={226:function(e,f){!function(g,h){"use strict";var i="function",j="undefined",k="object",l="string",m="major",n="model",o="name",p="type",q="vendor",r="version",s="architecture",t="console",u="mobile",v="tablet",w="smarttv",x="wearable",y="embedded",z="Amazon",A="Apple",B="ASUS",C="BlackBerry",D="Browser",E="Chrome",F="Firefox",G="Google",H="Huawei",I="Microsoft",J="Motorola",K="Opera",L="Samsung",M="Sharp",N="Sony",O="Xiaomi",P="Zebra",Q="Facebook",R="Chromium OS",S="Mac OS",T=function(a,b){var c={};for(var d in a)b[d]&&b[d].length%2==0?c[d]=b[d].concat(a[d]):c[d]=a[d];return c},U=function(a){for(var b={},c=0;c<a.length;c++)b[a[c].toUpperCase()]=a[c];return b},V=function(a,b){return typeof a===l&&-1!==W(b).indexOf(W(a))},W=function(a){return a.toLowerCase()},X=function(a,b){if(typeof a===l)return a=a.replace(/^\s\s*/,""),typeof b===j?a:a.substring(0,350)},Y=function(a,b){for(var c,d,e,f,g,j,l=0;l<b.length&&!g;){var m=b[l],n=b[l+1];for(c=d=0;c<m.length&&!g&&m[c];)if(g=m[c++].exec(a))for(e=0;e<n.length;e++)j=g[++d],typeof(f=n[e])===k&&f.length>0?2===f.length?typeof f[1]==i?this[f[0]]=f[1].call(this,j):this[f[0]]=f[1]:3===f.length?typeof f[1]!==i||f[1].exec&&f[1].test?this[f[0]]=j?j.replace(f[1],f[2]):void 0:this[f[0]]=j?f[1].call(this,j,f[2]):void 0:4===f.length&&(this[f[0]]=j?f[3].call(this,j.replace(f[1],f[2])):h):this[f]=j||h;l+=2}},Z=function(a,b){for(var c in b)if(typeof b[c]===k&&b[c].length>0){for(var d=0;d<b[c].length;d++)if(V(b[c][d],a))return"?"===c?h:c}else if(V(b[c],a))return"?"===c?h:c;return a},$={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},_={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[r,[o,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[r,[o,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[o,r],[/opios[\/ ]+([\w\.]+)/i],[r,[o,K+" Mini"]],[/\bopr\/([\w\.]+)/i],[r,[o,K]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[o,r],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[r,[o,"UC"+D]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[r,[o,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[r,[o,"WeChat"]],[/konqueror\/([\w\.]+)/i],[r,[o,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[r,[o,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[r,[o,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[o,/(.+)/,"$1 Secure "+D],r],[/\bfocus\/([\w\.]+)/i],[r,[o,F+" Focus"]],[/\bopt\/([\w\.]+)/i],[r,[o,K+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[r,[o,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[r,[o,"Dolphin"]],[/coast\/([\w\.]+)/i],[r,[o,K+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[r,[o,"MIUI "+D]],[/fxios\/([-\w\.]+)/i],[r,[o,F]],[/\bqihu|(qi?ho?o?|360)browser/i],[[o,"360 "+D]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[o,/(.+)/,"$1 "+D],r],[/(comodo_dragon)\/([\w\.]+)/i],[[o,/_/g," "],r],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[o,r],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[o],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[o,Q],r],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[o,r],[/\bgsa\/([\w\.]+) .*safari\//i],[r,[o,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[r,[o,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[r,[o,E+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[o,E+" WebView"],r],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[r,[o,"Android "+D]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[o,r],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[r,[o,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[r,o],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[o,[r,Z,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[o,r],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[o,"Netscape"],r],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[r,[o,F+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[o,r],[/(cobalt)\/([\w\.]+)/i],[o,[r,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[s,"amd64"]],[/(ia32(?=;))/i],[[s,W]],[/((?:i[346]|x)86)[;\)]/i],[[s,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[s,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[s,"armhf"]],[/windows (ce|mobile); ppc;/i],[[s,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[s,/ower/,"",W]],[/(sun4\w)[;\)]/i],[[s,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[s,W]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[n,[q,L],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[n,[q,L],[p,u]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[n,[q,A],[p,u]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[n,[q,A],[p,v]],[/(macintosh);/i],[n,[q,A]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[n,[q,M],[p,u]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[n,[q,H],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[n,[q,H],[p,u]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[n,/_/g," "],[q,O],[p,u]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[n,/_/g," "],[q,O],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[n,[q,"OPPO"],[p,u]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[n,[q,"Vivo"],[p,u]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[n,[q,"Realme"],[p,u]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[n,[q,J],[p,u]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[n,[q,J],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[n,[q,"LG"],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[n,[q,"LG"],[p,u]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[n,[q,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[n,/_/g," "],[q,"Nokia"],[p,u]],[/(pixel c)\b/i],[n,[q,G],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[n,[q,G],[p,u]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[n,[q,N],[p,u]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[n,"Xperia Tablet"],[q,N],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[n,[q,"OnePlus"],[p,u]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[n,[q,z],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[n,/(.+)/g,"Fire Phone $1"],[q,z],[p,u]],[/(playbook);[-\w\),; ]+(rim)/i],[n,q,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[n,[q,C],[p,u]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[n,[q,B],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[n,[q,B],[p,u]],[/(nexus 9)/i],[n,[q,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[q,[n,/_/g," "],[p,u]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[n,[q,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[n,[q,"Meizu"],[p,u]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[q,n,[p,u]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[q,n,[p,v]],[/(surface duo)/i],[n,[q,I],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[n,[q,"Fairphone"],[p,u]],[/(u304aa)/i],[n,[q,"AT&T"],[p,u]],[/\bsie-(\w*)/i],[n,[q,"Siemens"],[p,u]],[/\b(rct\w+) b/i],[n,[q,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[n,[q,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[n,[q,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[n,[q,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[n,[q,"NuVision"],[p,v]],[/\b(k88) b/i],[n,[q,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[n,[q,"ZTE"],[p,u]],[/\b(gen\d{3}) b.+49h/i],[n,[q,"Swiss"],[p,u]],[/\b(zur\d{3}) b/i],[n,[q,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[n,[q,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[q,"Dragon Touch"],n,[p,v]],[/\b(ns-?\w{0,9}) b/i],[n,[q,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[n,[q,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[q,"Voice"],n,[p,u]],[/\b(lvtel\-)?(v1[12]) b/i],[[q,"LvTel"],n,[p,u]],[/\b(ph-1) /i],[n,[q,"Essential"],[p,u]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[n,[q,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[n,[q,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[n,[q,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[n,[q,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[q,n,[p,u]],[/(kin\.[onetw]{3})/i],[[n,/\./g," "],[q,I],[p,u]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[n,[q,P],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[n,[q,P],[p,u]],[/smart-tv.+(samsung)/i],[q,[p,w]],[/hbbtv.+maple;(\d+)/i],[[n,/^/,"SmartTV"],[q,L],[p,w]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[q,"LG"],[p,w]],[/(apple) ?tv/i],[q,[n,A+" TV"],[p,w]],[/crkey/i],[[n,E+"cast"],[q,G],[p,w]],[/droid.+aft(\w)( bui|\))/i],[n,[q,z],[p,w]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[n,[q,M],[p,w]],[/(bravia[\w ]+)( bui|\))/i],[n,[q,N],[p,w]],[/(mitv-\w{5}) bui/i],[n,[q,O],[p,w]],[/Hbbtv.*(technisat) (.*);/i],[q,n,[p,w]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[q,X],[n,X],[p,w]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,w]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[q,n,[p,t]],[/droid.+; (shield) bui/i],[n,[q,"Nvidia"],[p,t]],[/(playstation [345portablevi]+)/i],[n,[q,N],[p,t]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[n,[q,I],[p,t]],[/((pebble))app/i],[q,n,[p,x]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[n,[q,A],[p,x]],[/droid.+; (glass) \d/i],[n,[q,G],[p,x]],[/droid.+; (wt63?0{2,3})\)/i],[n,[q,P],[p,x]],[/(quest( 2| pro)?)/i],[n,[q,Q],[p,x]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[q,[p,y]],[/(aeobc)\b/i],[n,[q,z],[p,y]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[n,[p,u]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[n,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,u]],[/(android[-\w\. ]{0,9});.+buil/i],[n,[q,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[r,[o,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[r,[o,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[o,r],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[r,o]],os:[[/microsoft (windows) (vista|xp)/i],[o,r],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[o,[r,Z,$]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[o,"Windows"],[r,Z,$]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/ios;fbsv\/([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[r,/_/g,"."],[o,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[o,S],[r,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[r,o],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[o,r],[/\(bb(10);/i],[r,[o,C]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[r,[o,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[r,[o,F+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[r,[o,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[r,[o,"watchOS"]],[/crkey\/([\d\.]+)/i],[r,[o,E+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[o,R],r],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[o,r],[/(sunos) ?([\w\.\d]*)/i],[[o,"Solaris"],r],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[o,r]]},aa=function(a,b){if(typeof a===k&&(b=a,a=h),!(this instanceof aa))return new aa(a,b).getResult();var c=typeof g!==j&&g.navigator?g.navigator:h,d=a||(c&&c.userAgent?c.userAgent:""),e=c&&c.userAgentData?c.userAgentData:h,f=b?T(_,b):_,t=c&&c.userAgent==d;return this.getBrowser=function(){var a,b={};return b[o]=h,b[r]=h,Y.call(b,d,f.browser),b[m]=typeof(a=b[r])===l?a.replace(/[^\d\.]/g,"").split(".")[0]:h,t&&c&&c.brave&&typeof c.brave.isBrave==i&&(b[o]="Brave"),b},this.getCPU=function(){var a={};return a[s]=h,Y.call(a,d,f.cpu),a},this.getDevice=function(){var a={};return a[q]=h,a[n]=h,a[p]=h,Y.call(a,d,f.device),t&&!a[p]&&e&&e.mobile&&(a[p]=u),t&&"Macintosh"==a[n]&&c&&typeof c.standalone!==j&&c.maxTouchPoints&&c.maxTouchPoints>2&&(a[n]="iPad",a[p]=v),a},this.getEngine=function(){var a={};return a[o]=h,a[r]=h,Y.call(a,d,f.engine),a},this.getOS=function(){var a={};return a[o]=h,a[r]=h,Y.call(a,d,f.os),t&&!a[o]&&e&&"Unknown"!=e.platform&&(a[o]=e.platform.replace(/chrome os/i,R).replace(/macos/i,S)),a},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return d},this.setUA=function(a){return d=typeof a===l&&a.length>350?X(a,350):a,this},this.setUA(d),this};aa.VERSION="1.0.35",aa.BROWSER=U([o,r,m]),aa.CPU=U([s]),aa.DEVICE=U([n,q,p,t,u,w,v,x,y]),aa.ENGINE=aa.OS=U([o,r]),typeof f!==j?(e.exports&&(f=e.exports=aa),f.UAParser=aa):c.amdO?void 0===(d=(function(){return aa}).call(b,c,b,a))||(a.exports=d):typeof g!==j&&(g.UAParser=aa);var ab=typeof g!==j&&(g.jQuery||g.Zepto);if(ab&&!ab.ua){var ac=new aa;ab.ua=ac.getResult(),ab.ua.get=function(){return ac.getUA()},ab.ua.set=function(a){ac.setUA(a);var b=ac.getResult();for(var c in b)ab.ua[c]=b[c]}}}("object"==typeof window?window:this)}},f={};function g(a){var b=f[a];if(void 0!==b)return b.exports;var c=f[a]={exports:{}},d=!0;try{e[a].call(c.exports,c,c.exports,g),d=!1}finally{d&&delete f[a]}return c.exports}g.ab=__dirname+"/",a.exports=g(226)})()},35776:(a,b,c)=>{"use strict";a.exports=c(44870)},42805:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(6157),e=c(40120),f=c(99991);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},66173:(a,b)=>{"use strict";function c(){throw Object.defineProperty(Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'),"__NEXT_ERROR_CODE",{value:"E183",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ImageResponse",{enumerable:!0,get:function(){return c}})},73497:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"connection",{enumerable:!0,get:function(){return j}});let d=c(29294),e=c(63033),f=c(64370),g=c(61722),h=c(24023),i=c(65548);function j(){let a=d.workAsyncStorage.getStore(),b=e.workUnitAsyncStorage.getStore();if(a){if(b&&"after"===b.phase&&!(0,i.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${a.route} used "connection" inside "after(...)". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but "after(...)" executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E186",enumerable:!1,configurable:!0});if(a.forceStatic)return Promise.resolve(void 0);if(a.dynamicShouldError)throw Object.defineProperty(new g.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E562",enumerable:!1,configurable:!0});if(b)switch(b.type){case"cache":{let b=Object.defineProperty(Error(`Route ${a.route} used "connection" inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E752",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,j),a.invalidDynamicUsageError??=b,b}case"private-cache":{let b=Object.defineProperty(Error(`Route ${a.route} used "connection" inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E753",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,j),a.invalidDynamicUsageError??=b,b}case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used "connection" inside a function cached with "unstable_cache(...)". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E1",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-runtime":return(0,h.makeHangingPromise)(b.renderSignal,a.route,"`connection()`");case"prerender-ppr":return(0,f.postponeWithTracking)(a.route,"connection",b.dynamicTracking);case"prerender-legacy":return(0,f.throwToInterruptStaticGeneration)("connection",a,b);case"request":return(0,f.trackDynamicDataInDynamicRender)(b),Promise.resolve(void 0)}}(0,e.throwForMissingRequestStore)("connection")}},76142:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ImageResponse:function(){return d.ImageResponse},NextRequest:function(){return e.NextRequest},NextResponse:function(){return f.NextResponse},URLPattern:function(){return h.URLPattern},after:function(){return i.after},connection:function(){return j.connection},unstable_rootParams:function(){return k.unstable_rootParams},userAgent:function(){return g.userAgent},userAgentFromString:function(){return g.userAgentFromString}});let d=c(66173),e=c(67169),f=c(1757),g=c(10541),h=c(2974),i=c(1242),j=c(73497),k=c(80500)},80500:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRootParam:function(){return n},unstable_rootParams:function(){return m}});let d=c(59330),e=c(64370),f=c(29294),g=c(63033),h=c(24023),i=c(24778),j=c(19121),k=c(75854),l=new WeakMap;async function m(){(0,k.warnOnce)("`unstable_rootParams()` is deprecated and will be removed in an upcoming major release. Import specific root params from `next/root-params` instead.");let a=f.workAsyncStorage.getStore();if(!a)throw Object.defineProperty(new d.InvariantError("Missing workStore in unstable_rootParams"),"__NEXT_ERROR_CODE",{value:"E615",enumerable:!1,configurable:!0});let b=g.workUnitAsyncStorage.getStore();if(!b)throw Object.defineProperty(Error(`Route ${a.route} used \`unstable_rootParams()\` in Pages Router. This API is only available within App Router.`),"__NEXT_ERROR_CODE",{value:"E641",enumerable:!1,configurable:!0});switch(b.type){case"cache":case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used \`unstable_rootParams()\` inside \`"use cache"\` or \`unstable_cache\`. Support for this API inside cache scopes is planned for a future version of Next.js.`),"__NEXT_ERROR_CODE",{value:"E642",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return function(a,b,c){switch(c.type){case"prerender-client":{let a="`unstable_rootParams`";throw Object.defineProperty(new d.InvariantError(`${a} must not be used within a client component. Next.js should be preventing ${a} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E693",enumerable:!1,configurable:!0})}case"prerender":{let d=c.fallbackRouteParams;if(d){for(let e in a)if(d.has(e)){let d=l.get(a);if(d)return d;let e=(0,h.makeHangingPromise)(c.renderSignal,b.route,"`unstable_rootParams`");return l.set(a,e),e}}break}case"prerender-ppr":{let d=c.fallbackRouteParams;if(d){for(let f in a)if(d.has(f))return function(a,b,c,d){let f=l.get(a);if(f)return f;let g={...a},h=Promise.resolve(g);return l.set(a,h),Object.keys(a).forEach(f=>{i.wellKnownProperties.has(f)||(b.has(f)?Object.defineProperty(g,f,{get(){let a=(0,i.describeStringPropertyAccess)("unstable_rootParams",f);"prerender-ppr"===d.type?(0,e.postponeWithTracking)(c.route,a,d.dynamicTracking):(0,e.throwToInterruptStaticGeneration)(a,c,d)},enumerable:!0}):h[f]=a[f])}),h}(a,d,b,c)}}}return Promise.resolve(a)}(b.rootParams,a,b);case"private-cache":case"prerender-runtime":case"request":return Promise.resolve(b.rootParams);default:return b}}function n(a){let b=`\`import('next/root-params').${a}()\``,c=f.workAsyncStorage.getStore();if(!c)throw Object.defineProperty(new d.InvariantError(`Missing workStore in ${b}`),"__NEXT_ERROR_CODE",{value:"E764",enumerable:!1,configurable:!0});let e=g.workUnitAsyncStorage.getStore();if(!e)throw Object.defineProperty(Error(`Route ${c.route} used ${b} outside of a Server Component. This is not allowed.`),"__NEXT_ERROR_CODE",{value:"E774",enumerable:!1,configurable:!0});let i=j.actionAsyncStorage.getStore();if(i){if(i.isAppRoute)throw Object.defineProperty(Error(`Route ${c.route} used ${b} inside a Route Handler. Support for this API in Route Handlers is planned for a future version of Next.js.`),"__NEXT_ERROR_CODE",{value:"E765",enumerable:!1,configurable:!0});if(i.isAction&&"action"===e.phase)throw Object.defineProperty(Error(`${b} was used inside a Server Action. This is not supported. Functions from 'next/root-params' can only be called in the context of a route.`),"__NEXT_ERROR_CODE",{value:"E766",enumerable:!1,configurable:!0})}switch(e.type){case"unstable-cache":case"cache":throw Object.defineProperty(Error(`Route ${c.route} used ${b} inside \`"use cache"\` or \`unstable_cache\`. Support for this API inside cache scopes is planned for a future version of Next.js.`),"__NEXT_ERROR_CODE",{value:"E760",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":var k=a,l=c,m=e,n=b;if("prerender-client"===m.type)throw Object.defineProperty(new d.InvariantError(`${n} must not be used within a client component. Next.js should be preventing ${n} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E693",enumerable:!1,configurable:!0});let p=m.rootParams;switch(m.type){case"prerender":if(m.fallbackRouteParams&&m.fallbackRouteParams.has(k))return(0,h.makeHangingPromise)(m.renderSignal,l.route,n);break;case"prerender-ppr":if(m.fallbackRouteParams&&m.fallbackRouteParams.has(k))return o(k,l,m,n)}return Promise.resolve(p[k])}return Promise.resolve(e.rootParams[a])}async function o(a,b,c,d){let f=(0,i.describeStringPropertyAccess)(d,a);switch(c.type){case"prerender-ppr":return(0,e.postponeWithTracking)(b.route,f,c.dynamicTracking);case"prerender-legacy":return(0,e.throwToInterruptStaticGeneration)(f,b,c)}}}};
|