@zhouzhengchang/token-party 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dashboard/assets/index-CptGtZ0y.js +132 -0
  2. package/dashboard/assets/index-re3zLHK6.css +1 -0
  3. package/dashboard/index.html +2 -2
  4. package/dist/cli.js +96 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/metrics/collector.d.ts +1 -0
  7. package/dist/metrics/collector.d.ts.map +1 -1
  8. package/dist/metrics/collector.js +10 -9
  9. package/dist/metrics/collector.js.map +1 -1
  10. package/dist/proxy/auth.d.ts.map +1 -1
  11. package/dist/proxy/auth.js +5 -13
  12. package/dist/proxy/auth.js.map +1 -1
  13. package/dist/proxy/forwarder.d.ts.map +1 -1
  14. package/dist/proxy/forwarder.js +16 -9
  15. package/dist/proxy/forwarder.js.map +1 -1
  16. package/dist/proxy/router.d.ts.map +1 -1
  17. package/dist/proxy/router.js +13 -5
  18. package/dist/proxy/router.js.map +1 -1
  19. package/dist/routes/api.js +58 -1
  20. package/dist/routes/api.js.map +1 -1
  21. package/dist/routes/user-api.d.ts +4 -0
  22. package/dist/routes/user-api.d.ts.map +1 -0
  23. package/dist/routes/user-api.js +118 -0
  24. package/dist/routes/user-api.js.map +1 -0
  25. package/dist/server.d.ts.map +1 -1
  26. package/dist/server.js +7 -0
  27. package/dist/server.js.map +1 -1
  28. package/dist/store/db.d.ts.map +1 -1
  29. package/dist/store/db.js +30 -1
  30. package/dist/store/db.js.map +1 -1
  31. package/dist/tags/extractors/agent-detector.d.ts +3 -0
  32. package/dist/tags/extractors/agent-detector.d.ts.map +1 -0
  33. package/dist/tags/extractors/agent-detector.js +54 -0
  34. package/dist/tags/extractors/agent-detector.js.map +1 -0
  35. package/dist/tags/extractors/header-tags.d.ts +3 -0
  36. package/dist/tags/extractors/header-tags.d.ts.map +1 -0
  37. package/dist/tags/extractors/header-tags.js +10 -0
  38. package/dist/tags/extractors/header-tags.js.map +1 -0
  39. package/dist/tags/registry.d.ts +4 -0
  40. package/dist/tags/registry.d.ts.map +1 -0
  41. package/dist/tags/registry.js +14 -0
  42. package/dist/tags/registry.js.map +1 -0
  43. package/dist/tags/types.d.ts +11 -0
  44. package/dist/tags/types.d.ts.map +1 -0
  45. package/dist/tags/types.js +2 -0
  46. package/dist/tags/types.js.map +1 -0
  47. package/dist/types/config.d.ts +8 -44
  48. package/dist/types/config.d.ts.map +1 -1
  49. package/dist/types/config.js +1 -4
  50. package/dist/types/config.js.map +1 -1
  51. package/dist/types/env.d.ts +5 -0
  52. package/dist/types/env.d.ts.map +1 -1
  53. package/package.json +2 -3
  54. package/config.example.yaml +0 -36
  55. package/dashboard/assets/index-Cn9911zf.js +0 -130
  56. package/dashboard/assets/index-D1AOUPpc.css +0 -1
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-\[-13px\]{left:-13px}.left-\[7px\]{left:7px}.right-0{right:0}.right-2{right:.5rem}.top-0{top:0}.top-2{top:.5rem}.z-20{z-index:20}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-7{margin-left:1.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-7{height:1.75rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-96{max-height:24rem}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.min-h-screen{min-height:100vh}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[480px\]{width:480px}.w-\[560px\]{width:560px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.max-w-\[200px\]{max-width:200px}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-r{border-right-width:1px}.border-r-2{border-right-width:2px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-cyan-200{--tw-border-opacity: 1;border-color:rgb(165 243 252 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-50{--tw-border-opacity: 1;border-color:rgb(249 250 251 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-indigo-300{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.border-indigo-400{--tw-border-opacity: 1;border-color:rgb(129 140 248 / var(--tw-border-opacity, 1))}.border-indigo-600{--tw-border-opacity: 1;border-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-black\/30{background-color:#0000004d}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-cyan-100{--tw-bg-opacity: 1;background-color:rgb(207 250 254 / var(--tw-bg-opacity, 1))}.bg-cyan-400{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-cyan-50{--tw-bg-opacity: 1;background-color:rgb(236 254 255 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-400{--tw-bg-opacity: 1;background-color:rgb(129 140 248 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-indigo-50\/50{background-color:#eef2ff80}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-400{--tw-bg-opacity: 1;background-color:rgb(192 132 252 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-3{padding-bottom:.75rem}.pl-4{padding-left:1rem}.pr-2{padding-right:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tracking-wide{letter-spacing:.025em}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-cyan-600{--tw-text-opacity: 1;color:rgb(8 145 178 / var(--tw-text-opacity, 1))}.text-cyan-700{--tw-text-opacity: 1;color:rgb(14 116 144 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-50:hover{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-indigo-600:hover{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:opacity-50:disabled{opacity:.5}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>TokenParty</title>
7
- <script type="module" crossorigin src="/assets/index-Cn9911zf.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-D1AOUPpc.css">
7
+ <script type="module" crossorigin src="/assets/index-CptGtZ0y.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-re3zLHK6.css">
9
9
  </head>
10
10
  <body class="bg-gray-50 min-h-screen">
11
11
  <div id="root"></div>
package/dist/cli.js CHANGED
@@ -3,11 +3,15 @@ import { serve } from "@hono/node-server";
3
3
  import path from "node:path";
4
4
  import os from "node:os";
5
5
  import fs from "node:fs";
6
+ import { spawn } from "node:child_process";
6
7
  import { loadConfig, watchConfig } from "./config.js";
7
8
  import { initDb, getValidAdminToken, getAdminTokenInfo, createAdminToken } from "./store/db.js";
8
9
  import { cleanupLogs } from "./store/log-writer.js";
9
10
  import { createServer } from "./server.js";
10
11
  const args = process.argv.slice(2);
12
+ const homeDir = path.join(os.homedir(), ".tokenparty");
13
+ const pidFile = path.join(homeDir, "tokenparty.pid");
14
+ const logFile = path.join(homeDir, "logs", "daemon.log");
11
15
  function getArg(name) {
12
16
  const idx = args.indexOf(`--${name}`);
13
17
  if (idx === -1)
@@ -23,6 +27,10 @@ Options:
23
27
  --host <host> Host to bind (default: 0.0.0.0)
24
28
  --config <path> Path to config.yaml (default: ~/.tokenparty/config.yaml)
25
29
  --token Show current admin token
30
+ --daemon Start in background (daemon mode)
31
+ --stop Stop the background service
32
+ --status Check if the background service is running
33
+ --log Show daemon log output
26
34
  -h, --help Show this help message
27
35
  -v, --version Show version
28
36
 
@@ -36,8 +44,91 @@ if (args.includes("--version") || args.includes("-v")) {
36
44
  console.log(`tokenparty v${pkg.version}`);
37
45
  process.exit(0);
38
46
  }
39
- const homeDir = path.join(os.homedir(), ".tokenparty");
40
47
  fs.mkdirSync(homeDir, { recursive: true });
48
+ fs.mkdirSync(path.dirname(logFile), { recursive: true });
49
+ function readPid() {
50
+ try {
51
+ const pid = parseInt(fs.readFileSync(pidFile, "utf-8").trim(), 10);
52
+ if (isNaN(pid))
53
+ return null;
54
+ process.kill(pid, 0);
55
+ return pid;
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ function writePid(pid) {
62
+ fs.writeFileSync(pidFile, String(pid));
63
+ }
64
+ function removePid() {
65
+ try {
66
+ fs.unlinkSync(pidFile);
67
+ }
68
+ catch { }
69
+ }
70
+ // --- --status ---
71
+ if (args.includes("--status")) {
72
+ const pid = readPid();
73
+ if (pid) {
74
+ console.log(`tokenparty is running (PID: ${pid})`);
75
+ }
76
+ else {
77
+ console.log("tokenparty is not running");
78
+ }
79
+ process.exit(0);
80
+ }
81
+ // --- --stop ---
82
+ if (args.includes("--stop")) {
83
+ const pid = readPid();
84
+ if (!pid) {
85
+ console.log("tokenparty is not running");
86
+ process.exit(0);
87
+ }
88
+ try {
89
+ process.kill(pid, "SIGTERM");
90
+ console.log(`tokenparty stopped (PID: ${pid})`);
91
+ removePid();
92
+ }
93
+ catch (e) {
94
+ console.error(`Failed to stop process ${pid}: ${e.message}`);
95
+ removePid();
96
+ }
97
+ process.exit(0);
98
+ }
99
+ // --- --log ---
100
+ if (args.includes("--log")) {
101
+ if (fs.existsSync(logFile)) {
102
+ const lines = fs.readFileSync(logFile, "utf-8").split("\n");
103
+ console.log(lines.slice(-50).join("\n"));
104
+ }
105
+ else {
106
+ console.log("No daemon log found");
107
+ }
108
+ process.exit(0);
109
+ }
110
+ // --- --daemon ---
111
+ if (args.includes("--daemon")) {
112
+ const existing = readPid();
113
+ if (existing) {
114
+ console.log(`tokenparty is already running (PID: ${existing})`);
115
+ console.log("Use --stop to stop it first, or --status to check.");
116
+ process.exit(1);
117
+ }
118
+ const daemonArgs = process.argv.slice(1).filter((a) => a !== "--daemon");
119
+ const out = fs.openSync(logFile, "a");
120
+ const child = spawn(process.execPath, daemonArgs, {
121
+ detached: true,
122
+ stdio: ["ignore", out, out],
123
+ env: { ...process.env, TOKENPARTY_DAEMON: "1" },
124
+ });
125
+ child.unref();
126
+ writePid(child.pid);
127
+ console.log(`tokenparty started in background (PID: ${child.pid})`);
128
+ console.log(`Log: ${logFile}`);
129
+ process.exit(0);
130
+ }
131
+ // --- Normal startup ---
41
132
  const configPath = getArg("config") ?? path.join(homeDir, "config.yaml");
42
133
  const config = loadConfig(configPath);
43
134
  const port = getArg("port") ? Number(getArg("port")) : config.server.port;
@@ -62,6 +153,10 @@ function ensureAdminToken() {
62
153
  console.log(`[tokenparty] Admin token: ${info.token} (expires: ${new Date(info.expires_at).toISOString().slice(0, 10)})`);
63
154
  }
64
155
  ensureAdminToken();
156
+ // Write PID for daemon mode detection (restart support)
157
+ if (process.env.TOKENPARTY_DAEMON === "1") {
158
+ writePid(process.pid);
159
+ }
65
160
  {
66
161
  const result = cleanupLogs();
67
162
  if (result.deletedDays.length > 0) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export interface RequestRecord {
19
19
  cacheWritePrice?: number;
20
20
  };
21
21
  currency?: string;
22
+ agent?: string;
22
23
  customTags?: string;
23
24
  }
24
25
  export declare function calculateCost(inputTokens: number, outputTokens: number, cacheReadTokens: number, cacheWriteTokens: number, pricing?: {
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/metrics/collector.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACzG,MAAM,CAQR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,QA+BlD"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/metrics/collector.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACzG,MAAM,CAOR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,QAkClD"}
@@ -2,8 +2,7 @@ import { getDb } from "../store/db.js";
2
2
  export function calculateCost(inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens, pricing) {
3
3
  if (!pricing)
4
4
  return 0;
5
- const nonCachedInput = Math.max(0, inputTokens - cacheReadTokens);
6
- const inputCost = (nonCachedInput / 1_000_000) * (pricing.inputPrice ?? 0);
5
+ const inputCost = (inputTokens / 1_000_000) * (pricing.inputPrice ?? 0);
7
6
  const cacheReadCost = (cacheReadTokens / 1_000_000) * (pricing.cacheReadPrice ?? pricing.inputPrice ?? 0);
8
7
  const cacheWriteCost = (cacheWriteTokens / 1_000_000) * (pricing.cacheWritePrice ?? pricing.inputPrice ?? 0);
9
8
  const outputCost = (outputTokens / 1_000_000) * (pricing.outputPrice ?? 0);
@@ -19,14 +18,16 @@ export function recordRequest(record) {
19
18
  let cost = calculateCost(record.inputTokens, record.outputTokens, cacheReadTokens, cacheWriteTokens, record.pricing);
20
19
  if (record.currency === "CNY")
21
20
  cost *= CNY_TO_USD;
21
+ const agent = record.agent ?? "";
22
+ const customTags = record.customTags ?? "";
22
23
  db.prepare(`
23
- INSERT INTO request_index (id, timestamp, token_id, provider_id, model, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, latency_ms, status, log_file, error, api_key_index, cost, custom_tags)
24
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
25
- `).run(record.id, now, record.tokenId, record.providerId, record.model, record.inputTokens, record.outputTokens, cacheReadTokens, cacheWriteTokens, record.latencyMs, record.status, record.logFile, record.error ?? null, record.apiKeyIndex ?? 0, cost, record.customTags ?? "");
24
+ INSERT INTO request_index (id, timestamp, token_id, provider_id, model, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, latency_ms, status, log_file, error, api_key_index, cost, agent, custom_tags)
25
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
26
+ `).run(record.id, now, record.tokenId, record.providerId, record.model, record.inputTokens, record.outputTokens, cacheReadTokens, cacheWriteTokens, record.latencyMs, record.status, record.logFile, record.error ?? null, record.apiKeyIndex ?? 0, cost, agent, customTags);
26
27
  db.prepare(`
27
- INSERT INTO usage_daily (date, token_id, provider_id, model, request_count, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, cost)
28
- VALUES (?, ?, ?, ?, 1, ?, ?, ?, ?, ?)
29
- ON CONFLICT(date, token_id, provider_id, model)
28
+ INSERT INTO usage_daily (date, token_id, provider_id, model, agent, request_count, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, cost)
29
+ VALUES (?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?)
30
+ ON CONFLICT(date, token_id, provider_id, model, agent)
30
31
  DO UPDATE SET
31
32
  request_count = request_count + 1,
32
33
  input_tokens = input_tokens + excluded.input_tokens,
@@ -34,6 +35,6 @@ export function recordRequest(record) {
34
35
  cache_read_tokens = cache_read_tokens + excluded.cache_read_tokens,
35
36
  cache_write_tokens = cache_write_tokens + excluded.cache_write_tokens,
36
37
  cost = cost + excluded.cost
37
- `).run(date, record.tokenId, record.providerId, record.model, record.inputTokens, record.outputTokens, cacheReadTokens, cacheWriteTokens, cost);
38
+ `).run(date, record.tokenId, record.providerId, record.model, agent, record.inputTokens, record.outputTokens, cacheReadTokens, cacheWriteTokens, cost);
38
39
  }
39
40
  //# sourceMappingURL=collector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/metrics/collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAqBvC,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,YAAoB,EACpB,eAAuB,EACvB,gBAAwB,EACxB,OAA0G;IAE1G,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IACvB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC1G,MAAM,cAAc,GAAG,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC3E,OAAO,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACrH,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK;QAAE,IAAI,IAAI,UAAU,CAAC;IAElD,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CACJ,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAC/D,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAC5F,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,CAC5G,CAAC;IAEF,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;GAWV,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAClJ,CAAC"}
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/metrics/collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAsBvC,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,YAAoB,EACpB,eAAuB,EACvB,gBAAwB,EACxB,OAA0G;IAE1G,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC1G,MAAM,cAAc,GAAG,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC3E,OAAO,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACrH,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK;QAAE,IAAI,IAAI,UAAU,CAAC;IAElD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAE3C,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CACJ,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAC/D,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAC5F,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CACtG,CAAC;IAEF,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;GAWV,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACzJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/proxy/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,wBAAsB,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI;;;;8BAwClE"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/proxy/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,wBAAsB,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI;;;;8BA4BlE"}
@@ -11,21 +11,13 @@ export async function authMiddleware(c, next) {
11
11
  if (!token) {
12
12
  return c.json({ error: "Invalid or disabled token" }, 401);
13
13
  }
14
- if (token.quota) {
14
+ if (token.monthlyBudget) {
15
15
  const db = getDb();
16
16
  const today = new Date().toISOString().split("T")[0];
17
- if (token.quota.daily) {
18
- const row = db.prepare(`SELECT COALESCE(SUM(input_tokens + output_tokens), 0) as total FROM usage_daily WHERE token_id = ? AND date = ?`).get(token.key, today);
19
- if (row.total >= token.quota.daily) {
20
- return c.json({ error: "Daily token quota exceeded" }, 429);
21
- }
22
- }
23
- if (token.quota.monthly) {
24
- const monthStart = today.slice(0, 7) + "-01";
25
- const row = db.prepare(`SELECT COALESCE(SUM(input_tokens + output_tokens), 0) as total FROM usage_daily WHERE token_id = ? AND date >= ?`).get(token.key, monthStart);
26
- if (row.total >= token.quota.monthly) {
27
- return c.json({ error: "Monthly token quota exceeded" }, 429);
28
- }
17
+ const monthStart = today.slice(0, 7) + "-01";
18
+ const row = db.prepare(`SELECT COALESCE(SUM(cost), 0) as total_cost FROM usage_daily WHERE token_id = ? AND date >= ?`).get(token.key, monthStart);
19
+ if (row.total_cost >= token.monthlyBudget) {
20
+ return c.json({ error: "Monthly budget exceeded" }, 429);
29
21
  }
30
22
  }
31
23
  c.set("authToken", token);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/proxy/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,CAAkB,EAAE,IAAU;IACjE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAElD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,iHAAiH,CAClH,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAsB,CAAC;YAC7C,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;YAC7C,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,kHAAkH,CACnH,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAsB,CAAC;YAClD,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACrC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1B,MAAM,IAAI,EAAE,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/proxy/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,CAAkB,EAAE,IAAU;IACjE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAElD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;QAC7C,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,+FAA+F,CAChG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAA2B,CAAC;QACvD,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1B,MAAM,IAAI,EAAE,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../src/proxy/forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAWnD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,WAAW,CAAC;AAkBnD,wBAAsB,cAAc,CAClC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,EACzB,aAAa,CAAC,EAAE,aAAa,EAC7B,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACzG,OAAO,CAAC,QAAQ,CAAC,CAgQnB"}
1
+ {"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../src/proxy/forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAYnD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,WAAW,CAAC;AAkBnD,wBAAsB,cAAc,CAClC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,EACzB,aAAa,CAAC,EAAE,aAAa,EAC7B,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACzG,OAAO,CAAC,QAAQ,CAAC,CAqQnB"}
@@ -4,6 +4,7 @@ import { getConfig } from "../config.js";
4
4
  import { nanoid } from "nanoid";
5
5
  import { writeLog, headersToRecord } from "../store/log-writer.js";
6
6
  import { recordRequest } from "../metrics/collector.js";
7
+ import { extractTags } from "../tags/registry.js";
7
8
  import { createGunzip, createInflate, createBrotliDecompress, createZstdDecompress } from "node:zlib";
8
9
  import { Readable, Transform } from "node:stream";
9
10
  import { request as httpsRequest } from "node:https";
@@ -63,7 +64,9 @@ export async function forwardRequest(c, provider, targetPath, transformedBody, e
63
64
  reqHeaders[key] = value;
64
65
  }
65
66
  });
66
- const customTags = c.req.raw.headers.get("x-tkparty-tags") ?? "";
67
+ const extractedTags = extractTags({ headers: c.req.raw.headers, path: c.req.path, body, model });
68
+ const agent = extractedTags.agent ?? "";
69
+ const customTags = extractedTags.tags ?? "";
67
70
  const logFile = writeLog(requestId, {
68
71
  type: "request",
69
72
  timestamp: startTime,
@@ -74,7 +77,7 @@ export async function forwardRequest(c, provider, targetPath, transformedBody, e
74
77
  try {
75
78
  // Same protocol streaming: use http.request for raw passthrough (no auto-decompression)
76
79
  if (isStreaming && !needsStreamConversion) {
77
- return await rawStreamPassthrough(c, targetUrl, upstreamHeaders, body, requestId, provider, model, token, startTime, logFile, apiKeyIndex, pricing, customTags);
80
+ return await rawStreamPassthrough(c, targetUrl, upstreamHeaders, body, requestId, provider, model, token, startTime, logFile, apiKeyIndex, pricing, agent, customTags);
78
81
  }
79
82
  const response = await fetch(targetUrl, {
80
83
  method: "POST",
@@ -123,11 +126,11 @@ export async function forwardRequest(c, provider, targetPath, transformedBody, e
123
126
  fullContent += converted.content;
124
127
  await s.writeSSE({ data: JSON.stringify(converted.chunk) });
125
128
  }
126
- if (parsed.type === "message_delta" && parsed.usage) {
127
- usage = { input_tokens: parsed.usage.input_tokens ?? 0, output_tokens: parsed.usage.output_tokens ?? 0, cache_read_tokens: parsed.usage.cache_read_input_tokens ?? 0, cache_write_tokens: parsed.usage.cache_creation_input_tokens ?? 0 };
128
- }
129
129
  if (parsed.type === "message_start" && parsed.message?.usage) {
130
- usage = { ...usage, input_tokens: parsed.message.usage.input_tokens ?? 0, cache_read_tokens: parsed.message.usage.cache_read_input_tokens ?? 0, cache_write_tokens: parsed.message.usage.cache_creation_input_tokens ?? 0 };
130
+ usage = { ...(usage ?? { input_tokens: 0, output_tokens: 0 }), input_tokens: parsed.message.usage.input_tokens ?? 0, cache_read_tokens: parsed.message.usage.cache_read_input_tokens ?? 0, cache_write_tokens: parsed.message.usage.cache_creation_input_tokens ?? 0 };
131
+ }
132
+ if (parsed.type === "message_delta" && parsed.usage) {
133
+ usage = { ...(usage ?? { input_tokens: 0, output_tokens: 0 }), output_tokens: parsed.usage.output_tokens ?? 0 };
131
134
  }
132
135
  }
133
136
  else if (provider.type === "openai" && entry === "anthropic") {
@@ -196,6 +199,7 @@ export async function forwardRequest(c, provider, targetPath, transformedBody, e
196
199
  apiKeyIndex,
197
200
  pricing,
198
201
  currency: provider.currency,
202
+ agent,
199
203
  customTags,
200
204
  });
201
205
  }
@@ -225,6 +229,7 @@ export async function forwardRequest(c, provider, targetPath, transformedBody, e
225
229
  apiKeyIndex,
226
230
  pricing,
227
231
  currency: provider.currency,
232
+ agent,
228
233
  customTags,
229
234
  });
230
235
  if (response.status >= 500 && provider.fallback) {
@@ -255,6 +260,7 @@ export async function forwardRequest(c, provider, targetPath, transformedBody, e
255
260
  apiKeyIndex,
256
261
  pricing,
257
262
  currency: provider.currency,
263
+ agent,
258
264
  customTags,
259
265
  });
260
266
  if (provider.fallback) {
@@ -286,7 +292,7 @@ function tryFallback(c, provider, model, targetPath, body, entryProtocol, origin
286
292
  console.log(`[tokenparty] Falling back from ${provider.id} to ${fallbackProvider.id} for model ${model}`);
287
293
  return forwardRequest(c, fallbackProvider, fallbackPath, body, entryProtocol, fallbackPricing);
288
294
  }
289
- function rawStreamPassthrough(c, targetUrl, upstreamHeaders, body, requestId, provider, model, token, startTime, logFile, apiKeyIndex, pricing, customTags) {
295
+ function rawStreamPassthrough(c, targetUrl, upstreamHeaders, body, requestId, provider, model, token, startTime, logFile, apiKeyIndex, pricing, agent, customTags) {
290
296
  const url = new URL(targetUrl);
291
297
  const reqFn = url.protocol === "https:" ? httpsRequest : httpRequest;
292
298
  return new Promise((resolve, reject) => {
@@ -314,7 +320,7 @@ function rawStreamPassthrough(c, targetUrl, upstreamHeaders, body, requestId, pr
314
320
  },
315
321
  flush(callback) {
316
322
  // Async parse for logging after stream ends
317
- asyncParseBufferForLog(rawChunks, res.headers["content-encoding"], requestId, respHeaders, provider, model, token, startTime, logFile, apiKeyIndex, pricing, customTags);
323
+ asyncParseBufferForLog(rawChunks, res.headers["content-encoding"], requestId, respHeaders, provider, model, token, startTime, logFile, apiKeyIndex, pricing, agent, customTags);
318
324
  callback();
319
325
  },
320
326
  });
@@ -326,7 +332,7 @@ function rawStreamPassthrough(c, targetUrl, upstreamHeaders, body, requestId, pr
326
332
  req.end();
327
333
  });
328
334
  }
329
- function asyncParseBufferForLog(rawChunks, encoding, requestId, respHeaders, provider, model, token, startTime, logFile, apiKeyIndex, pricing, customTags) {
335
+ function asyncParseBufferForLog(rawChunks, encoding, requestId, respHeaders, provider, model, token, startTime, logFile, apiKeyIndex, pricing, agent, customTags) {
330
336
  (async () => {
331
337
  let text;
332
338
  const combined = Buffer.concat(rawChunks);
@@ -409,6 +415,7 @@ function asyncParseBufferForLog(rawChunks, encoding, requestId, respHeaders, pro
409
415
  apiKeyIndex,
410
416
  pricing,
411
417
  currency: provider.currency,
418
+ agent,
412
419
  customTags,
413
420
  });
414
421
  })().catch((e) => console.error(`[tokenparty] async log parse error for ${requestId}:`, e));
@@ -1 +1 @@
1
- {"version":3,"file":"forwarder.js","sourceRoot":"","sources":["../../src/proxy/forwarder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forwarder.js","sourceRoot":"","sources":["../../src/proxy/forwarder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/proxy/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAWD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAkB1J;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAa1D"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/proxy/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAWD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA2B1J;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAa1D"}
@@ -17,12 +17,20 @@ export function resolveProvider(model, token) {
17
17
  if (candidateProviders.length === 0) {
18
18
  return { error: `No provider available for model: ${model}` };
19
19
  }
20
- const match = candidateProviders.find((p) => isProviderAllowed(p, token.allowedProviders));
21
- if (match) {
22
- const modelConfig = match.models.find((m) => getModelId(m) === model);
23
- return { provider: match, pricing: modelConfig ? getModelPricing(modelConfig) : undefined };
20
+ const allowed = candidateProviders.filter((p) => isProviderAllowed(p, token.allowedProviders));
21
+ if (allowed.length === 0) {
22
+ return { error: `Token not authorized for any provider serving model: ${model}` };
24
23
  }
25
- return { error: `Token not authorized for any provider serving model: ${model}` };
24
+ allowed.sort((a, b) => {
25
+ const pa = getModelPricing(a.models.find((m) => getModelId(m) === model));
26
+ const pb = getModelPricing(b.models.find((m) => getModelId(m) === model));
27
+ const costA = pa ? (pa.inputPrice ?? 0) + (pa.outputPrice ?? 0) : 0;
28
+ const costB = pb ? (pb.inputPrice ?? 0) + (pb.outputPrice ?? 0) : 0;
29
+ return costA - costB;
30
+ });
31
+ const match = allowed[0];
32
+ const modelConfig = match.models.find((m) => getModelId(m) === model);
33
+ return { provider: match, pricing: modelConfig ? getModelPricing(modelConfig) : undefined };
26
34
  }
27
35
  export function listAvailableModels(token) {
28
36
  const config = getConfig();