{"_id":"@carloscortezcloud/qhaway","_rev":"15-ca5c806c11eae0fd2d56b0a31f12af4c","name":"@carloscortezcloud/qhaway","dist-tags":{"latest":"0.12.3"},"versions":{"0.2.0":{"name":"@carloscortezcloud/qhaway","version":"0.2.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.2.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"0a70288c6dcc31f76ff3b7d4609e7907482b2b72","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.2.0.tgz","fileCount":25,"integrity":"sha512-+y9BPbQP+pH8l6W9FpRrrMYeH/wx+jB0OUFYIRots1QSeVN3N0KN5xLtHP3jqVdDszpAbKMOh+Yt9CCZRJ9yEg==","signatures":[{"sig":"MEYCIQC9jd73s9Q0ShGL4Q8cNvOMaJ7XqxHfK0OIM5uMYmxBGAIhAOvG3armMiBDobbLvmm2aS7wyQf9F2uZaNLEXCYeSPfw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31140},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"gitHead":"91e0275a47a766fe4391860ee21a55164fcf1f6b","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.2.0_1785335476885_0.1806814052202821","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@carloscortezcloud/qhaway","version":"0.3.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.3.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"ddfee42fb6ef5bf3e5b1fc557391b73fc6ae0f76","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.3.0.tgz","fileCount":34,"integrity":"sha512-l6YofmcqN6l5DvaT2fICdtE9ZYQqxznY0SsMeKwqHsnq3GfiKjAHTxcTIbZ2aWRudnT45EYVz3JDj9NVICsYOQ==","signatures":[{"sig":"MEUCIQC7nMWzRAeBvv4hLiD+tf7inwrUR6P75rarQX1gewDhjgIgY1kqjmGi2BORmSvFAH9kJMw6rLeI+OavjsEeVbu+uQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47088},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.3.0_1785350711871_0.42459656339339014","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@carloscortezcloud/qhaway","version":"0.4.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.4.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"8885317ca99a30fa195fe8fc235f28feae8e77bf","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.4.0.tgz","fileCount":38,"integrity":"sha512-a/D/xIVobcN8hVHxEJB94Nnng8AJ8Od6nd1fo9q71BPUgXClELooNqvUq5Ac7Po9PGt6ZfVEFAnkoB86UPes9A==","signatures":[{"sig":"MEQCIDWjdJWVnlCc2+RicUdj8HgLBalu4N0KMWGrT4nW0UZGAiA0NBzBYMyz+v+JFPy25k5QCdVeJODZXclcTHrx9OR6aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49928},"main":"dist/index.js","type":"module","_from":"file:carloscortezcloud-qhaway-0.4.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"_resolved":"/private/var/folders/jx/prn_hb0s40j1w4pdtx5nhlh40000gn/T/4f335126f7b5dfacf2271920aff7cc21/carloscortezcloud-qhaway-0.4.0.tgz","_integrity":"sha512-a/D/xIVobcN8hVHxEJB94Nnng8AJ8Od6nd1fo9q71BPUgXClELooNqvUq5Ac7Po9PGt6ZfVEFAnkoB86UPes9A==","repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.4.0_1785351844524_0.91032002605218","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@carloscortezcloud/qhaway","version":"0.5.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.5.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"1ed15e92b1da0e44a1ab7ceb70761c5f8857c395","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.5.0.tgz","fileCount":38,"integrity":"sha512-wq+zbwSyENFjPvKhu+tHYBfivjWEC3FP69e9vy5SQPwV2wm/CmDIMUqk1ssVVg/ySFSU1jeQEilqG1zZ9mF06A==","signatures":[{"sig":"MEQCIAFqDNDh1szDUXx+4f+Lcf+GbCmcaEdlhehLeBDJlM2pAiAoEK8YXjFfqLZpCFJMWoxSHdCVlo4XHlBDG07/4+vZrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51643},"main":"dist/index.js","type":"module","_from":"file:carloscortezcloud-qhaway-0.5.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"_resolved":"/private/var/folders/jx/prn_hb0s40j1w4pdtx5nhlh40000gn/T/fedc3463d3bfb983927c1f30aa0029e7/carloscortezcloud-qhaway-0.5.0.tgz","_integrity":"sha512-wq+zbwSyENFjPvKhu+tHYBfivjWEC3FP69e9vy5SQPwV2wm/CmDIMUqk1ssVVg/ySFSU1jeQEilqG1zZ9mF06A==","repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.5.0_1785352109122_0.6895293009731633","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@carloscortezcloud/qhaway","version":"0.6.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.6.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"71c03700f30c6e0dbc0de0069ab661b0ee4f4b6d","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.6.0.tgz","fileCount":38,"integrity":"sha512-fZvus7ZEdNK0d3d//Ly9ZYK4yiBBf7jR7nEMIEed0rZUHwzioxhyvOiiUWpVRsazL147IaixienMJXrZ9bCZVA==","signatures":[{"sig":"MEUCICSkRAiCWe+US+Ou6auS1NSqo/po2tr4pBdtdMbjuT7MAiEAz1Q17xIMMdYcKelP5VWJywHnQg1JXCmXEvEu6h50wyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51643},"main":"dist/index.js","type":"module","_from":"file:carloscortezcloud-qhaway-0.6.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"_resolved":"/private/var/folders/jx/prn_hb0s40j1w4pdtx5nhlh40000gn/T/d9d738ef3c18bbe89077cf7aa929debe/carloscortezcloud-qhaway-0.6.0.tgz","_integrity":"sha512-fZvus7ZEdNK0d3d//Ly9ZYK4yiBBf7jR7nEMIEed0rZUHwzioxhyvOiiUWpVRsazL147IaixienMJXrZ9bCZVA==","repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.6.0_1785352492755_0.81094364931711","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@carloscortezcloud/qhaway","version":"0.7.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.7.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"621e3958162ecc967e5e59c6ed4e63f911bac296","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.7.0.tgz","fileCount":42,"integrity":"sha512-EWkP4OLSnKaTaiGMAiXw5+JT22671ClGQ4Ia0djLFNje4x6f6T6xhNhEjKmg1fNhY7Y7EC6Qtikch/NgCdJJUA==","signatures":[{"sig":"MEUCICTQIhEZi2ZvvuBG47xA0FNIP0So7yCmhD4tCo2/4ltCAiEA7Uac3phhQ9IypAMlTi2NlowRa/CZDnNSkb57WcsrTtc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54971},"main":"dist/index.js","type":"module","_from":"file:carloscortezcloud-qhaway-0.7.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"_resolved":"/private/var/folders/jx/prn_hb0s40j1w4pdtx5nhlh40000gn/T/ee6f4d3da271a3be342efd6b37b800ad/carloscortezcloud-qhaway-0.7.0.tgz","_integrity":"sha512-EWkP4OLSnKaTaiGMAiXw5+JT22671ClGQ4Ia0djLFNje4x6f6T6xhNhEjKmg1fNhY7Y7EC6Qtikch/NgCdJJUA==","repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.7.0_1785358368475_0.9462576694719309","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@carloscortezcloud/qhaway","version":"0.8.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.8.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"58a077cb674545ff8bbab0d71619343ad3f13425","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.8.0.tgz","fileCount":48,"integrity":"sha512-doO4EyKfXTLxVwA+ghJE1tUgnEq/XydREuRqUbwb2P7U3KcrPJC1K0cGT099BziAdZKl046pyz4WCKVl8lKO+A==","signatures":[{"sig":"MEUCIQDNUN649F7vsr0En9WhpZtwUbaoVoMsbwhhIU06S/OGowIgUUdZ3TSBLbLL45g3WOIA5a/L6rUfMJ/UGEyILJnBcE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63803},"main":"dist/index.js","type":"module","_from":"file:carloscortezcloud-qhaway-0.8.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"_resolved":"/private/var/folders/jx/prn_hb0s40j1w4pdtx5nhlh40000gn/T/c0657343c78858a1cbf7882172821124/carloscortezcloud-qhaway-0.8.0.tgz","_integrity":"sha512-doO4EyKfXTLxVwA+ghJE1tUgnEq/XydREuRqUbwb2P7U3KcrPJC1K0cGT099BziAdZKl046pyz4WCKVl8lKO+A==","repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.8.0_1785364367129_0.6560307603213522","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@carloscortezcloud/qhaway","version":"0.8.1","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.8.1","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"7943eaacb255853e2fb718d2df6e91f79fc49a55","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.8.1.tgz","fileCount":48,"integrity":"sha512-YGHBB7lRf3JOorcQJNRHrZpQy7J0PgrQwwGpwPenrRFhPCeqYDCLB1RtmVm5pXg7h121pKSVaMAX8MDhjHhfkw==","signatures":[{"sig":"MEYCIQCRVW8pCRgcZBlvZ2tO6z4iDl9WZR9Jw1UY+rO/XifU/AIhAMWkdyat+7or5pz4Sr9vT6GNo8wXJVIUTMFNRp4B9xy3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64554},"main":"dist/index.js","type":"module","_from":"file:carloscortezcloud-qhaway-0.8.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"_resolved":"/private/var/folders/jx/prn_hb0s40j1w4pdtx5nhlh40000gn/T/183e87f3b75336a6a57eeb27774f7d7f/carloscortezcloud-qhaway-0.8.1.tgz","_integrity":"sha512-YGHBB7lRf3JOorcQJNRHrZpQy7J0PgrQwwGpwPenrRFhPCeqYDCLB1RtmVm5pXg7h121pKSVaMAX8MDhjHhfkw==","repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.8.1_1785365395791_0.6107596219276359","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@carloscortezcloud/qhaway","version":"0.9.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":{"name":"Carlos Cortez","email":"carlos@finoptix.dev"},"license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.9.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"homepage":"https://github.com/breakingthecloud/qhaway#readme","bugs":{"url":"https://github.com/breakingthecloud/qhaway/issues"},"dist":{"shasum":"b7d6a4b78b08c771ee4261e810a91b901d5a01b0","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.9.0.tgz","fileCount":58,"integrity":"sha512-RfJkZpkrUI7PiuyI5smLDgJl2JrI8UDP/lNvTyw5qdPXD6w2mUdgk/Fog0KAEB8WytdOVqb+oYTUcURfartw8w==","signatures":[{"sig":"MEYCIQDPVubquAPFbdoXYwrRUey+pcKHwfCldGJHMcwobwKonAIhAN2+KnyN2qCC1YMKqZIAdmBKx1KHq8J8U/1M5WENcS9z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88142},"main":"dist/index.js","type":"module","_from":"file:carloscortezcloud-qhaway-0.9.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./alerts":{"types":"./dist/alerts/index.d.ts","import":"./dist/alerts/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"_resolved":"/private/var/folders/jx/prn_hb0s40j1w4pdtx5nhlh40000gn/T/438a5bc32701208e03b94862e72e9309/carloscortezcloud-qhaway-0.9.0.tgz","_integrity":"sha512-RfJkZpkrUI7PiuyI5smLDgJl2JrI8UDP/lNvTyw5qdPXD6w2mUdgk/Fog0KAEB8WytdOVqb+oYTUcURfartw8w==","repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"_npmVersion":"10.8.2","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.9.0_1785544109797_0.2616780854604297","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@carloscortezcloud/qhaway","version":"0.10.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.10.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"832bc625e2c585e0ff1af1aae33d52d0052aa319","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.10.0.tgz","fileCount":74,"integrity":"sha512-5q20zw5LIV4xqh5NeO8/PfsdttVofcnNwlpQJ5YFH8tgXu9o9Ce0bAkD9RxZZLYEiDPr3WBNrCyderUpIc/3Jg==","signatures":[{"sig":"MEQCIHeIvlPEERrNyvYBD9KsL5MLq0QIs/GUIVHiS2NMLWlOAiAIQ0L5IefCVfmo8+gKTKFJJZMfBlI9Evj3SibVKpCMZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117020},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./eval":{"types":"./dist/eval/index.d.ts","import":"./dist/eval/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./alerts":{"types":"./dist/alerts/index.d.ts","import":"./dist/alerts/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.10.0_1785809006560_0.3284882991543707","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@carloscortezcloud/qhaway","version":"0.11.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.11.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"63ad37767303d2fc671269f7b649357dfb04c816","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.11.0.tgz","fileCount":74,"integrity":"sha512-hGwsx+stjAH7MUUzJj0wDmQi7UcxQiixWQlKH++YumDIiK41NvTxXKvuwrNMzA3wXQzEmPdY/0K6uaEhf+bV5A==","signatures":[{"sig":"MEUCIDVcmf1PU8JXk0eWKSaFrX7IZp4wgIgAuIMb/X6Eu8YxAiEAsPSxry5HS8pg1tWbHzDjtwMj8Cf7D0Tuj/bImvR/+aE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119178},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./eval":{"types":"./dist/eval/index.d.ts","import":"./dist/eval/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./alerts":{"types":"./dist/alerts/index.d.ts","import":"./dist/alerts/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.11.0_1786757615404_0.18986328666560293","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@carloscortezcloud/qhaway","version":"0.12.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.12.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"768a1938b23e0bc48c5196307f0e83bc1460c6ff","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.12.0.tgz","fileCount":76,"integrity":"sha512-do2IwKVgBGJFTZ7fbXMRUghBSojHVVbmVvaFkqYi4+4+LkHHVCU2ua1QqAgbVowONyssYQudtzkIiUoxI67uyA==","signatures":[{"sig":"MEQCIEIpE+br0KcSVglFadyyTOD4nljzqcRi+Cm9atwg7LayAiBf+/ZRABuvSgoW21SyqPjEpsh7GyZLyijLHdue9yy+wQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122404},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./eval":{"types":"./dist/eval/index.d.ts","import":"./dist/eval/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./alerts":{"types":"./dist/alerts/index.d.ts","import":"./dist/alerts/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.12.0_1787624046112_0.45985674988097114","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@carloscortezcloud/qhaway","version":"0.12.1","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.12.1","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"17a559f63acecf11bd66a674a50411e4cd503c1e","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.12.1.tgz","fileCount":76,"integrity":"sha512-IWFF7z8wwrAWcDqVeCLLG4axbf8SfdcdZDGRIbFqKRHhivey3hPQGez+Idge1/DNJMYeAXYwohtTOhmefIXe4A==","signatures":[{"sig":"MEYCIQC6E32VCmXPmNyRqOndwKOlVv1OqWkDcnqw7FxCwsaNIgIhALllit58Lz3VJsAQRRIUXeEfywgpInt8e9QkfbdkjuiL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122462},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./eval":{"types":"./dist/eval/index.d.ts","import":"./dist/eval/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./alerts":{"types":"./dist/alerts/index.d.ts","import":"./dist/alerts/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.12.1_1787627318759_0.828759030807924","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@carloscortezcloud/qhaway","version":"0.12.2","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/qhaway@0.12.2","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"14055403886791b37f31dbabcac028bcb5fb9e5e","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.12.2.tgz","fileCount":76,"integrity":"sha512-O+7t5E9s+QvsDeEH2pxSkZKl95zo5IJSRdQhblOLlh1leDr4g4ZlE3yWzyz/6gO4bbclmFQekvzacJoeC+nTwg==","signatures":[{"sig":"MEQCIHiAydKYX99adbCM+zWeetU9AJeXc8OYy2SWHhpJgVXJAiBlJMSUBWALhUXia+Ffp+R/qD0QKqOCJf1rs4Ir7GGaYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122416},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./eval":{"types":"./dist/eval/index.d.ts","import":"./dist/eval/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./serve":{"types":"./dist/serve.d.ts","import":"./dist/serve.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./alerts":{"types":"./dist/alerts/index.d.ts","import":"./dist/alerts/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"git+https://github.com/breakingthecloud/qhaway.git","type":"git"},"description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^26.1.2","@carloscortezcloud/styrr-llm":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/qhaway_0.12.2_1787627745037_0.1526442116090514","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"@carloscortezcloud/qhaway","version":"0.12.3","description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./trace":{"types":"./dist/trace/index.d.ts","import":"./dist/trace/index.js"},"./cost":{"types":"./dist/cost/index.d.ts","import":"./dist/cost/index.js"},"./otel":{"types":"./dist/otel/index.d.ts","import":"./dist/otel/index.js"},"./tinkuy":{"types":"./dist/tinkuy/index.d.ts","import":"./dist/tinkuy/index.js"},"./mlflow":{"types":"./dist/mlflow/index.d.ts","import":"./dist/mlflow/index.js"},"./alerts":{"types":"./dist/alerts/index.d.ts","import":"./dist/alerts/index.js"},"./eval":{"types":"./dist/eval/index.d.ts","import":"./dist/eval/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js"},"./serve":{"types":"./dist/serve.d.ts","import":"./dist/serve.js"}},"keywords":["observability","llm","otel","tracing","agent","cost","finops"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/breakingthecloud/qhaway.git"},"devDependencies":{"@carloscortezcloud/styrr-llm":"^0.4.0","@types/node":"^26.1.2","typescript":"^5.5.0","vitest":"^2.0.0"},"type":"module","scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest run","test:watch":"vitest"},"_nodeVersion":"22.23.2","_id":"@carloscortezcloud/qhaway@0.12.3","dist":{"integrity":"sha512-2s/XOIWKkdiU+cCQ3hSBULC+IBvF+6wz6Iyle9FPybHctuobe8l55MkJz3BX5mbaPJfrIWyG2JAcJM+vfItisQ==","shasum":"a1a88f664e4430765bfa7ef2aaea053b40827d89","tarball":"https://registry.npmjs.org/@carloscortezcloud/qhaway/-/qhaway-0.12.3.tgz","fileCount":76,"unpackedSize":122457,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBzYy/BDHvYpQ7JJJ6bVBNzo/Ca3+tYRtjNOQ0ouy7QEAiEAg9smCGcodpWpC3Td1YlmhkUM+xbuZGLBU+NvGizAVY0="}]},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"directories":{},"maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/qhaway_0.12.3_1787629199756_0.47298408046018414"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-29T14:31:16.672Z","modified":"2026-08-25T03:40:00.056Z","0.2.0":"2026-07-29T14:31:17.037Z","0.3.0":"2026-07-29T18:45:12.001Z","0.4.0":"2026-07-29T19:04:04.699Z","0.5.0":"2026-07-29T19:08:29.277Z","0.6.0":"2026-07-29T19:14:52.894Z","0.7.0":"2026-07-29T20:52:48.618Z","0.8.0":"2026-07-29T22:32:47.248Z","0.8.1":"2026-07-29T22:49:55.946Z","0.9.0":"2026-08-01T00:28:29.935Z","0.10.0":"2026-08-04T02:03:26.707Z","0.11.0":"2026-08-15T01:33:35.559Z","0.12.0":"2026-08-25T02:14:06.333Z","0.12.1":"2026-08-25T03:08:38.899Z","0.12.2":"2026-08-25T03:15:45.183Z","0.12.3":"2026-08-25T03:39:59.899Z"},"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","keywords":["observability","llm","otel","tracing","agent","cost","finops"],"repository":{"type":"git","url":"git+https://github.com/breakingthecloud/qhaway.git"},"description":"Agent observability. Trace, cost, OTEL, Tinkuy plugin — all in one package.","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"readme":"<p align=\"center\">\n  <img alt=\"Qhaway\" src=\"https://img.shields.io/badge/👁️-Qhaway-8B5CF6?style=for-the-badge\" height=\"50\">\n</p>\n\n<p align=\"center\">\n  <b>Agent Observability</b><br>\n  Trace, cost, OTEL export, and Grafana dashboards for AI agents. Zero dependencies.\n</p>\n\n<p align=\"center\">\n  <a href=\"#quick-start\">Quick Start</a>\n  ·\n  <a href=\"#modules\">Modules</a>\n  ·\n  <a href=\"#exporters\">Exporters</a>\n  ·\n  <a href=\"#ecosystem\">Ecosystem</a>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/npm/v/@carloscortezcloud/qhaway?style=flat-square&logo=npm&color=8B5CF6\" alt=\"npm\">\n  <img src=\"https://img.shields.io/badge/license-Apache_2.0-8B5CF6?style=flat-square\" alt=\"License\">\n  <img src=\"https://img.shields.io/badge/TypeScript-5.5%2B-3178C6?style=flat-square&logo=typescript\" alt=\"TypeScript\">\n  <img src=\"https://img.shields.io/badge/dependencies-0-success?style=flat-square\" alt=\"Zero deps\">\n  <img src=\"https://img.shields.io/badge/works-CF_Workers-8B5CF6?style=flat-square&logo=cloudflare\" alt=\"CF Workers\">\n  <img src=\"https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square\" alt=\"PRs\">\n</p>\n\n---\n\n## What Is Qhaway?\n\nQhaway (Quechua: \"to observe/watch\") wraps every LLM call your agent makes and captures cost, latency, token usage, and model info. Export to OpenTelemetry, Prometheus, or MLflow. Works in Cloudflare Workers, Node.js, Deno, Bun.\n\n```typescript\nimport { QhawayTrace, ConsoleStorage } from '@carloscortezcloud/qhaway/trace';\n\nconst trace = new QhawayTrace(new ConsoleStorage(), { agent_id: 'my-agent' });\n\nconst wrapped = trace.wrap(myLlmCall, { model: 'gpt-4o', provider: 'openai', user_id: 'abc' });\nconst result = await wrapped(prompt);\n\n// Console output:\n// [Qhaway] ✓ gpt-4o (openai) | $0.00063 | 150→42 tok | 1234ms | user=abc\n```\n\n## Install\n\n```bash\nnpm install @carloscortezcloud/qhaway\n```\n\n## Quick Start\n\n```typescript\nimport { QhawayTrace, ConsoleStorage } from '@carloscortezcloud/qhaway/trace';\n\nconst trace = new QhawayTrace(new ConsoleStorage(), { agent_id: 'my-agent' });\nconst wrapped = trace.wrap(myLlmCall, { model: 'gpt-4o', provider: 'openai', user_id: 'abc' });\nconst result = await wrapped(prompt);\n```\n\n## Modules\n\nQhaway is a single package with subpath exports — import only what you need:\n\n| Import path | What |\n|-------------|------|\n| `@carloscortezcloud/qhaway` | All-in-one entry |\n| `@carloscortezcloud/qhaway/trace` | Span wrapper + storage (D1/KV/Console) |\n| `@carloscortezcloud/qhaway/cost` | Pricing DB + cost attribution |\n| `@carloscortezcloud/qhaway/otel` | OTLP/HTTP JSON exporter |\n| `@carloscortezcloud/qhaway/tinkuy` | Auto-instrument TinkuyAgent |\n| `@carloscortezcloud/qhaway/mlflow` | MLflow metrics exporter |\n| `@carloscortezcloud/qhaway/alerts` | Threshold alerts (Slack/webhook/email/PagerDuty) |\n| `@carloscortezcloud/qhaway/eval` | Eval run tagging + promptfoo import + eval metrics |\n| `@carloscortezcloud/qhaway/ui` | Trace viewer tree + filters (feeds `ui/index.html`) |\n\n## Storage\n\n| Adapter | Best for | Import |\n|---------|----------|--------|\n| `D1Storage` | Production (SQL, aggregation) | `@carloscortezcloud/qhaway/trace` (d1) |\n| `KVStorage` | High-scale write | `@carloscortezcloud/qhaway/trace` (kv) |\n| `ConsoleStorage` | Local dev / debug | `@carloscortezcloud/qhaway/trace` (console) |\n\n## Exporters\n\n| Exporter | Destination |\n|----------|-------------|\n| **OTEL** | Any OTLP collector (Honeycomb, Grafana Tempo, Datadog, SigNoz) |\n| **Prometheus** | `GET /metrics` endpoint for Grafana dashboards |\n| **MLflow** | Log cost/latency metrics as MLflow experiment runs |\n| **Alerts** | Threshold rules → Slack/webhook/email/PagerDuty with cooldown |\n\n## Feedback Loop\n\nCorrelate user feedback (thumbs up/down) with cost, latency, and model. Attach a `rating` to any span:\n\n```typescript\nimport { QhawayTrace, MemoryStorage, aggregateRating, ratingStats } from '@carloscortezcloud/qhaway';\n\nconst trace = new QhawayTrace(new MemoryStorage());\n\nconst wrapped = trace.wrap(myLlmCall, {\n  model: 'gpt-4o',\n  provider: 'openai',\n  session_id: 'ses-1',\n  rating: 1, // thumbs up — or -1 for down, 0 for neutral\n});\n```\n\n`rating` flows through every storage adapter (D1/KV/Console) and the Prometheus endpoint exposes `qhaway_rating_total{model, rating}` and `qhaway_cost_by_rating_total{rating}`. The Grafana dashboard includes a **Satisfaction vs Cost** scatter panel.\n\n```typescript\nimport { aggregateRating } from '@carloscortezcloud/qhaway';\n\nconst spans = await storage.query();\nconst byRating = aggregateRating(spans);\n// [{ model: 'gpt-4o', rating: -1, calls: 3, costUsd: 0.15, avgLatencyMs: 412, ... }]\n\nconst stats = ratingStats(spans);\n// { thumbsUp: 40, thumbsDown: 7, avgCostPerThumbsDown: 0.09, thumbsDownRate: 0.15 }\n```\n\nWire it to a Tinkuy feedback hook: on thumbs down, record a span with `rating: -1` (see `examples/feedback-wiring.ts`).\n## Agent Evaluations\n\nTag eval cases with an `eval_run_id`, then compare cost vs score across models and runs:\n\n```typescript\nimport { labelEvalRun, aggregateEvalRuns, generateEvalMetrics } from '@carloscortezcloud/qhaway/eval';\n\nconst tagged = labelEvalRun(span, 'run-7', { score: 0.9, pass: true });\n\nconst runs = aggregateEvalRuns(spans);\n// [{ eval_run_id: 'run-7', model: 'gpt-4o', passRate: 0.85, costPerScorePoint: 0.02, ... }]\n\nconst prom = generateEvalMetrics(spans); // qhaway_eval_run_* metrics for Grafana\n```\n\nImport promptfoo output directly — `parsePromptfooOutput(json)` converts `results` into labeled spans, so you can drop eval suites from promptfoo/LangChain into the same dashboards (`qhaway-eval-dashboard.json`). See `examples/eval-comparison.ts`.\n\n## Trace Viewer UI\n\nStandalone, dependency-free HTML viewer for agent traces — no Grafana Tempo or LangSmith required. It renders session → iteration → tool-call trees, colors expensive spans red, filters by model/agent/date/success, and shows feedback ratings.\n\n### Run locally with demo data\n\n```bash\ncd qhaway\npython3 -m http.server 4173 --directory ui\n```\n\nOpen [http://localhost:4173/index.html?endpoint=/demo-data.json](http://localhost:4173/index.html?endpoint=/demo-data.json) — `demo-data.json` ships realistic spans (sessions, tool calls, failures, ratings).\n\n### Point at your own spans\n\nAny URL returning `QhawaySpan[]` as JSON works:\n\n```\nopen ui/index.html?endpoint=https://my-agent.example.com/spans\n```\n\nOn Cloudflare Workers, serve from D1/KV with a tiny route:\n\n```typescript\nimport { D1Storage } from '@carloscortezcloud/qhaway/trace';\n\nexport default {\n  async fetch(request, env) {\n    const url = new URL(request.url);\n    if (url.pathname === '/spans') {\n      const storage = new D1Storage(env.QHAWAY_DB);\n      return Response.json(await storage.query({}, 500));\n    }\n  },\n};\n```\n\n### Programmatic API\n\nTree-building and filtering are exported from the npm package:\n\n```typescript\nimport { getUiApi, buildTraceTree, costColor } from '@carloscortezcloud/qhaway/ui';\n\nconst api = getUiApi(storage); // or getUiApi('https://.../spans')\nconst spans = await api.loadSpans({ model: 'gpt-4o' });\nconst tree = buildTraceTree(spans);\n\nfor (const node of tree) {\n  console.log(node.label, costColor(node.costUsd));\n}\n```\n\nFull guide (data format, inject spans without a server, features): [`ui/README.md`](ui/README.md).\n\n## Python SDK\n\n```bash\npip install qhaway-trace\n```\n\n```python\nfrom qhaway import QhawayTrace, console_storage\nfrom qhaway.integrations import OpenAIPatch\n\ntrace = QhawayTrace(storage=console_storage)\nOpenAIPatch.apply(trace)  # auto-instrument all OpenAI calls\n```\n\nSee [python/README.md](python/README.md) for OpenAI, LangChain, Anthropic, and FastAPI examples.\n\n## Architecture\n\n```\nYour Agent (Tinkuy / LangChain / raw)\n  │\n  ▼\nQhawayTrace.wrap(fn)\n  │\n  ├── D1/KV (storage)\n  ├── OTLP (Honeycomb, Grafana, Datadog)\n  └── GET /metrics → Prometheus → Grafana dashboard\n```\n\n## Grafana Dashboard\n\nImport `qhaway-dashboard.json` into Grafana (Cloud or OSS) to visualize:\n- Cost by model and user\n- Latency P99 over time\n- Token usage (input vs output)\n- Recent call log\n- Daily spend summary\n\n## Ecosystem\n\n| Package | Role | npm |\n|---------|------|-----|\n| **Qhaway** | Agent obs (this) | `@carloscortezcloud/qhaway` |\n| **Styrr** | LLM router | `styrr` |\n| **Sayay** | Cost guardrails | GitHub |\n| **Tinkuy** | Agent framework | `@carloscortezcloud/tinkuy-agent` |\n| **TideRAG** | Edge RAG pipeline | `@carloscortezcloud/tiderag` |\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE).\n\n---\n\n<p align=\"center\">\n  Built by engineers who got tired of blind AI spending.<br>\n  <a href=\"https://github.com/breakingthecloud/tinkuylabs\">Tinkuy Labs</a> · <a href=\"https://finoptix.dev\">finoptix.dev</a>\n</p>\n<p align=\"center\">\n  <sub>If you can't see the cost, you can't control it. Qhaway opens your eyes.</sub>\n</p>\n","readmeFilename":""}