{"_id":"promptql-latency-test","_rev":"27-f3fdf3ac8a1b36eb81d4fdf42c2a2495","name":"promptql-latency-test","dist-tags":{"latest":"1.1.10"},"versions":{"1.0.0":{"name":"promptql-latency-test","version":"1.0.0","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.0","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"ca874430c10de358e89440b3c3c2de400590f9e0","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.0.tgz","fileCount":6,"integrity":"sha512-//rkskJj0uctSrH7SL/H6opb1b+SH+hVtfh+qtFgfN84srm4nZipqKlYg9ebyPDZSGl8d5iOpKMajpE66egUqw==","signatures":[{"sig":"MEYCIQClnii4gbRzGgw9T1p1e2BIz/JWyfZ6azKbOHTpJo7deAIhAM3XW1EkKgXUrNB8U6QGMux0tMuS4rrY2/ZM9mL7ZYv0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112759},"main":"dist/index.js","gitHead":"7251f26901beeba622de6d99bd2668f22f68f09b","scripts":{"test":"ts-node index.ts","build":"tsc","prepare":"npm run build","update-golden":"ts-node update-golden.ts"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"9.8.1","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"18.18.2","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.0_1747161833242_0.10471063866888874","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"promptql-latency-test","version":"1.0.1","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.1","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"52340b975f8398e57c665895dc2d66c1c5806ee8","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.1.tgz","fileCount":6,"integrity":"sha512-iqgQsyt9nNBGB9hMUpQCJChxavXZ4NraAoK2s6kPSJWhY3cVSDQzDVHXpD0ymHzf/1ISinEydNNCzF00a7X4nQ==","signatures":[{"sig":"MEUCIQDHtZaonCMQxfKBSi2236yGNO3wID0tIzn93MHgTJpNvwIgc8Bp1CW6E6OUBdgRqrqZbjJxy4rYDnPmrS/0H7Vhs+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113780},"main":"dist/index.js","gitHead":"7251f26901beeba622de6d99bd2668f22f68f09b","scripts":{"test":"ts-node index.ts","build":"tsc","prepare":"npm run build","update-golden":"ts-node update-golden.ts"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"9.8.1","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"18.18.2","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.1_1747168072819_0.023160287704401483","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"promptql-latency-test","version":"1.0.2","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.2","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"13cf444ac9bc13ad6fc65c567f08c0c157a06e88","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.2.tgz","fileCount":6,"integrity":"sha512-E9Tqdj/kBfwM5hoxk6975I25CrzeJy+jGWkHGt6w7DzDWFT2DAPTl7lWUoYbSLD/wD4fLYgaX1CuAUgqCx+q2w==","signatures":[{"sig":"MEQCIHLXq0WdjQBIJZ2/5oE2WuEU7i24QsQ+bR7u13svknfpAiAvPX8zxHR1B7C+F7WlKiisbS86p/zDgjuPyMsLcBfeQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116704},"main":"dist/index.js","gitHead":"b2b8dacda784ad69d5c3f8c295a7f7a53e0513f0","scripts":{"test":"ts-node index.ts","build":"tsc","prepare":"npm run build","update-golden":"ts-node update-golden.ts"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"9.8.1","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"18.18.2","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.2_1747245815160_0.03195318175138029","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"promptql-latency-test","version":"1.0.3","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.3","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"c75e8329c9bf61649284c1f87b973c55eddb2fb9","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.3.tgz","fileCount":6,"integrity":"sha512-7llJtriGNEllb95+MEOiobVkXUsPauBXvHvy3oNY0jtVCH/d3BKnJUdmBqS9kmLOkzhALyQr5Y7/8U9UHkITbw==","signatures":[{"sig":"MEQCIAg3qFepPxVIeq8eM3ZOE1mdgiWG9tVm9ttBt94BxxmLAiBBOayxNmTzQM4khGT/iDaZ3sVYzPtgrk2eWYlRfyp8KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117832},"main":"dist/index.js","gitHead":"623dfa45d6e9d8780db1cfb455125e44161c08cf","scripts":{"test":"ts-node index.ts","build":"tsc","prepare":"npm run build","update-golden":"ts-node update-golden.ts"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"10.9.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"22.15.1","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.3_1748959685276_0.9338752914695256","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"promptql-latency-test","version":"1.0.4","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.4","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"291571b13024bf38a226211afc667a819e58740a","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.4.tgz","fileCount":6,"integrity":"sha512-SkIuudOJ4OpJFrNc1MtMb5pTatd09KWrUgNfOLDt2Onp36yV5lYvcWoiOJ0kiD5sHQ2XoLzl4/YfTlDPiaBcZQ==","signatures":[{"sig":"MEUCIQDCZXQ3ioYsT5jnW/F5aqqz1l+PqJnbH2ZW5LqmKQrM9QIgZssRMO1mVoA66z0u6/v8AFNWXsiTW+0OLfcuaobFgJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117865},"main":"dist/index.js","gitHead":"117413fbb1fefa5d3768b562cad38cb5f0034d7c","scripts":{"test":"ts-node index.ts","build":"tsc","prepare":"npm run build","update-golden":"ts-node update-golden.ts"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"10.9.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"22.15.1","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.4_1748961311548_0.4823855372940351","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"promptql-latency-test","version":"1.0.5","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.5","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"c42756fde1db75f094677fb05bb5e70b8a5e2661","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.5.tgz","fileCount":10,"integrity":"sha512-Qk/ji2N2wxPHq2xqOwzuONp6qa2GegHSqdKPqOdWKhy9mjaiflwxOKm7/UmZfYGcSryQmu6OQ5a3SyM95UW2yw==","signatures":[{"sig":"MEUCIGreGPdXJ/rT2GJ/K+c+aUerPPr1CcSPMHMucSLGMG0KAiEAkEZHxni2hAj06ZwANw1f/r5S2iEXaLaacDkI3R+OGkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140833},"main":"dist/index.js","gitHead":"59c74fd4d9ece5d058617d1e6ce693cb3eaa3bb3","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"10.9.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"22.15.1","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.5_1749730407761_0.1991839110036242","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"promptql-latency-test","version":"1.0.7","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.7","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"7e3c0c7bf722c0c55b7a006a32bad893ee3f4e42","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.7.tgz","fileCount":10,"integrity":"sha512-J9NWwJpDN2147Mv0G8KXGA0he88KURkdPQjewXKDqZevr3TorDkPcddVXjwsGX4vMyNgkAg4yIkFQZrlWdsoEQ==","signatures":[{"sig":"MEUCIQDhi911IRlELM2ao/xo6/0zRaZJvUMsGz4MISP55nqedQIgE/aM8pi7V9cR7W/YyAHLYORCfBpPIufijSbbFlGfgnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143738},"main":"dist/index.js","gitHead":"388955eb8db3db6db52fbc63fd6748dd3ac3e508","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"julian-hasura","actor":{"name":"julian-hasura","type":"user","email":"julian.mayorga@hasura.io"},"email":"julian.mayorga@hasura.io"},"_npmVersion":"10.9.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"22.15.1","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.7_1751314691971_0.1215811308651924","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"promptql-latency-test","version":"1.0.8","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.8","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"f3b80b7ecbfe6eae0ca8fe399a9633ecef21950a","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.8.tgz","fileCount":10,"integrity":"sha512-KcPkrmYuMaPGpZwTNM3KZenu/cag6GWLW5DpAQkQS3oCM6FKofYPMTpa7/LFkd30qbyg6Mkk+YxAYUaIDiMXtQ==","signatures":[{"sig":"MEUCIBGYVISdeexudzXN+OHx8hosYRH75Nsy755HQXImfjSIAiEAo164xXOyCltSZv1MWdVycigpppkqP81f9HhnARMHkAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143811},"main":"dist/index.js","gitHead":"388955eb8db3db6db52fbc63fd6748dd3ac3e508","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"10.9.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"22.15.1","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.8_1752532686131_0.014517919230404797","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"promptql-latency-test","version":"1.0.9","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.9","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"fa5ea9f8e24448acd4f203a7166622c64bca7c8f","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.9.tgz","fileCount":10,"integrity":"sha512-KP6R3Mcm4WLEhTp7UAALKMat34X0u7D8CtYuZMKfolHAWbLfHxdVdBH8ITVEOLDernluadCLMtlPHtNYjA5IAg==","signatures":[{"sig":"MEUCIDX04kijKaE8nlRU0MzyVRcNMlQHKQUB5zHO/bwM2+qaAiEAug5cqaEavwUL63WY5dSnODrDB0F/X+P0YCYnp/wdVEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149055},"main":"dist/index.js","gitHead":"06538c4a821cf96f3ef07b059281c179374f1ab6","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},"_npmVersion":"10.9.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"22.15.1","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.9_1755026034403_0.024957537218756265","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"promptql-latency-test","version":"1.0.10","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.10","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"ede898a9f875a6bdf3c401aaa0abb3e67ee3c45a","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.10.tgz","fileCount":8,"integrity":"sha512-kaE3BUbz8lyzY7GKIO2B0KTGEv8x2d8z4nZ535d8golGpOT83e0Qc2z8Q1DYQjyndrtkNGhrVzmWH3s8Tk1ZRA==","signatures":[{"sig":"MEYCIQC616OewUt46JSnAhyVKMPhhFWiNeZQnFtMAMt9yAg2BgIhAKDKVPUGH0qPtABxZQIoESybFFAe1XeDN6ULvCE1PgoU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134702},"main":"dist/index.js","gitHead":"8abc2a7df97cbbce740b8e4b530f34c5ae0463c0","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},"_npmVersion":"11.4.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.3.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.10_1755545899820_0.4098209034522171","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"promptql-latency-test","version":"1.0.11","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.11","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"292b600f847156fa6b57be452d0f2125a40a7f7f","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.11.tgz","fileCount":8,"integrity":"sha512-CmjHH8MvRVIh6X/SmvZ71kBP7aJv2BIB7tJddAZJ0UEyPenR4k7wvY5JE5oAsGKElJBPxE2lyR83MYiQMYH/iw==","signatures":[{"sig":"MEYCIQD7i4/WyMKcDGYLtVNa1/EmXUHCFI2p65cOZtFWxbJsowIhAM7RSf8wTUl3vIOAaAXw7rIiSts4OKRGRxOZsr9MfQYq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135773},"main":"dist/index.js","gitHead":"8abc2a7df97cbbce740b8e4b530f34c5ae0463c0","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},"_npmVersion":"11.4.2","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.3.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.11_1755915155972_0.7761436754612121","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"promptql-latency-test","version":"1.0.12","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.12","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"27f4a5528b7966c30f359d2ee5e7c8a88aa7164e","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.12.tgz","fileCount":8,"integrity":"sha512-/ADUtzhuyUFZQ5h/hf6Sh/mvggqgCpF5LD4kGEmnM5nWMA7SGwLK4INdy0tF36H+MuDlIqVYSTGOC2Rc33AN9g==","signatures":[{"sig":"MEUCICvoVfLtE+gm39Ul0or6YRDJGeLwFhwl+D5iy+kJlZ0ZAiEAzxMnR5ttwsJU9eGhsOemMzLxd2r28GaHg6NTKQGjwHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138427},"main":"dist/index.js","gitHead":"c97652f6e53dc9e637123c31ec46566ee03d198d","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.8.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.12_1758554775266_0.9646316176477812","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"promptql-latency-test","version":"1.0.13","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.0.13","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"7737a6ff67e006f42d705443a1a070c75f2bccf8","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.0.13.tgz","fileCount":9,"integrity":"sha512-4CP/GGFDs6hlrlwgfapGy2E5U23N0Kj2PUMIcg4rFDrGL+j4ve+slIJLV3VIVkxFbQ5jdl3glxlxoJic+hHdQg==","signatures":[{"sig":"MEYCIQCMD/E+2qNgMWiIhtQlLc9jNQv0LWtOp/e05TIHDA6AjwIhAI+XwC53RPY403dZLcX3miJZz+9B+esTJqrieBpbAd/C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184095},"main":"dist/index.js","gitHead":"0a19d257da3ee0d9edb0d61441e1f8bcfc718a86","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.8.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.0.13_1758907447794_0.6080512547666332","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"promptql-latency-test","version":"1.1.0","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.0","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"d6900eb51015eb1784ed97ccbad87991571e2af1","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.0.tgz","fileCount":11,"integrity":"sha512-K1ZfwrkOph4Lm8eQbYb3OvDZgf7u0Kj+TMGimPs7cvKCKSWObfLM1T71vqaOGe1ASrjAy0DRfpD6XuXqSwHqtg==","signatures":[{"sig":"MEUCICeXIoyIY+aiVpllk2QC6ZXSok6PaRfPfKJhAOm34/F8AiEApNEoI+h5GsvkPteW8UNCUQHIpPZBiA/JrW3kZRjdCJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198524},"main":"dist/index.js","gitHead":"3a73a9b91cf320b2e6ea84ba76e7006238752b07","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.0_1761233259271_0.11934216801521669","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"promptql-latency-test","version":"1.1.1","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.1","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"41a945aa282302c532973cc31bd2bb96fc1e958e","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.1.tgz","fileCount":11,"integrity":"sha512-6C7tNeKf1mDJVWIEqDgqWyoZgkI0jw0zHLaDI3ayJqL8b/LGLwytxK1DKC0mvFrsa3f7XyRmnXYAJSouVSVXhA==","signatures":[{"sig":"MEUCIDKrJVY5NJt/vHPHrSerAwKZNarTrTa3mz5JUygoMzr5AiEA0XiwMXGYehIo8N0XyJDzyUrOwaW0MT5vAZubNfbPehs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198655},"main":"dist/index.js","gitHead":"e84bccecf105558bab0187995f7a5ca39814f1a6","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.1_1761676896323_0.21883639716800052","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"promptql-latency-test","version":"1.1.2","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.2","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"b8060cf98ae4049fa4623eed326528b47f45315e","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.2.tgz","fileCount":11,"integrity":"sha512-xCpfKKuSy1D/kaGIGcfuffTXrBifhtR88hb8rUWGjzce8WpZ2kmn+TV3gVJ0FSyvCQFBCnUs28yK0psUq91KEg==","signatures":[{"sig":"MEUCIEjYuvT9xGIwwyYUo3aonxc509zAgd4KtT/ROV3gRJOgAiEAifVLjTgjIu1lyI4pgKkhSDI70+mE+FpANaftpyB/hOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198656},"main":"dist/index.js","gitHead":"63397e0a830ff4d06713af06302b4e977082b89b","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.2_1761677102716_0.5479842149389251","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"promptql-latency-test","version":"1.1.3","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.3","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"b4e308835e57823bc54969d183e39e203904ff1b","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.3.tgz","fileCount":11,"integrity":"sha512-TONPb7hY8oP6FHscARXMtTh8pCrdAf5QdWrp4EQuckRrvXIz/7eAiaQci3c7A5e/VZitfs8PKJv54Ga19fm+fw==","signatures":[{"sig":"MEUCIGQzruAtLVg3n3x4dxhUwHMJkgO506y71JQUy1bsxtXBAiEAr4axXWjMkO/jvrzMgYLp3JYMCNwrOQivZXTgOW8AQWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198524},"main":"dist/index.js","gitHead":"df9fff7ef6d227bb9e1e8e08814ae6df49e7cd6b","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.3_1761677344884_0.5786687479091912","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"promptql-latency-test","version":"1.1.4","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.4","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"b5bbb32bec5e67fb85666ec3e31deaa1dd693c1f","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.4.tgz","fileCount":11,"integrity":"sha512-GNp6KgtjMrkCnIQtyp3fgMPpAZRc0ibhdphzCOGCFgX1aUDSKp5Ssie0gWldIG+WkNUyVItFWKFjPFxwi4n2hQ==","signatures":[{"sig":"MEYCIQDoFC/JS+jKZt3s19qVOqkPAUnbxtAIdV+43wx4a+SrxQIhANc5giQT+cWk6dETW0kxY6PpF0vlZY8H+NxiuopDhaWa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203687},"main":"dist/index.js","gitHead":"80db972f8bc74502f4485193c5262294bb46aa51","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.4_1761679365754_0.7453615285663997","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"promptql-latency-test","version":"1.1.5","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.5","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"88a856447308e3866f80b802abf203554b2979d7","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.5.tgz","fileCount":11,"integrity":"sha512-Qttqs+TMEF0WvJ4RcNmvKG1rj+bJqZv6reMnP6n0MxkQeXc0jDuiBRpilav1V03SVq1fjAzO7REmmP1RbigjZA==","signatures":[{"sig":"MEUCIQCOGxwiyzoAglQK+ReQUZsr6urqOigU78xT3SfCB3DN8AIgf4ef1SvjoaMJcjtRhupD2ADieQ4RDdTI/ZdViBPQwVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204597},"main":"dist/index.js","gitHead":"dab27e9c9c28ab5fd944640b73aa1aa394419b0c","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.5_1761679678783_0.04527339366098437","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"promptql-latency-test","version":"1.1.6","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.6","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"974b304a2801ee6c22aa4a7bf05b78854eb81906","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.6.tgz","fileCount":11,"integrity":"sha512-j7peC30kMrawNFLZosLiYvh7LqKRHA70yXToopQqOoHabRYf8pgmHgfDu+KBQtiTfSy4Jh3AGCdVFT2zwGB7NA==","signatures":[{"sig":"MEYCIQCb5iXtQmO+cbQK1DqxPOjVUeIbwFw3pK+yegBOqTTXygIhAO1lVrUEo0EedrHZiCJE5ePjGUD2rdg1Dmgm0jn7c8an","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205369},"main":"dist/index.js","gitHead":"0e01056c5b1cb30198c004e508775a64e2bcc1a5","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.6_1761694227205_0.19969605369534094","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"promptql-latency-test","version":"1.1.7","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.7","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"b7b882c2283ae61bca99e75e3258b38a3b124d49","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.7.tgz","fileCount":11,"integrity":"sha512-cw3bQSgUob5v1tm6vDIGdTT4hD1SPiz2e0KvolIBDoNl3aeFHVeqQh7D7VBSejMADzC54Oen6gtdyYLx+fnKvQ==","signatures":[{"sig":"MEYCIQCMcE0Ky7QDS5pTWoEs3PVFu8KHvIsEIn+5iCnZlkt6xQIhAMOdHXfX5DhfUru0oZApSuEHbnbD9PImGj/O0FhaYKa4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206642},"main":"dist/index.js","gitHead":"6dd91dacc6f5b55ccce2736def7e90254968521f","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.7_1761746190336_0.696486462932187","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"promptql-latency-test","version":"1.1.8","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.8","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"dc195bb1ae84fdc5053852a937ebda0c1ee44abb","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.8.tgz","fileCount":11,"integrity":"sha512-ak4MzJqHVzS7S4a1Hh6ogRkmmUPfLVpm3X1ItM1iYffT7Ztnpu7VtEJqPSE4nDOV2XYCwU72rANgzFpcmIPPFA==","signatures":[{"sig":"MEQCIAxsnpacEpOozpit7AAOl36ysnT6GzrSA0jBZ/GMJUpeAiAHht1DQOucIKKFYWJvN8ql9wSYPtBQfLNxBUVVnZGTIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207153},"main":"dist/index.js","gitHead":"0cd02f1417db815504bb5e5b2bc4da3181211549","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.8_1761747955485_0.5443017861326975","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"promptql-latency-test","version":"1.1.9","keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","_id":"promptql-latency-test@1.1.9","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"bin":{"promptql-latency-test":"dist/cli.js"},"dist":{"shasum":"74b11842f359c54f8c0a0b2d4781c991a0c67bdd","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.9.tgz","fileCount":11,"integrity":"sha512-olw92RI+h+ABI2dQdj70wTxiqF0ejpxKkXerUQzioRyoghozK7cVFt4InJN8qp+50g7sWZced10oC1C0xObOGw==","signatures":[{"sig":"MEUCIQDvShpkuVqk5iHhLefQwGrT6JCwfBr6g19MXqK2QLEgwQIgdw297A/RNcMNAGy3rKk8DUjQKVN4Azi7xjI40dmR9LM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207776},"main":"dist/index.js","gitHead":"a6f6d314614eb5affd44116a8de796a9279f144b","scripts":{"dev":"ts-node index.ts","test":"vitest run","build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"_npmVersion":"11.6.0","description":"Script to measure PromptQL latency","directories":{},"_nodeVersion":"24.10.0","dependencies":{"axios":"^1.6.7","chalk":"^4.1.2","yargs":"^17.7.2","dotenv":"^16.4.5","csv-parse":"^5.6.0","@types/yargs":"^17.0.33","csv-stringify":"^6.5.2","string-similarity":"^4.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.3","ts-node":"^10.9.2","prettier":"^3.5.3","typescript":"^5.3.3","@types/node":"^20.11.24","@types/chalk":"^2.2.0","@types/string-similarity":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/promptql-latency-test_1.1.9_1761748510414_0.7935168781706476","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"promptql-latency-test","version":"1.1.10","description":"Script to measure PromptQL latency","main":"dist/index.js","bin":{"promptql-latency-test":"dist/cli.js"},"scripts":{"build":"tsc","prepare":"npm run build","dev":"ts-node index.ts","test":"vitest run"},"keywords":["promptql","latency","testing","performance"],"author":{"name":"Hasura"},"license":"ISC","dependencies":{"@types/yargs":"^17.0.33","axios":"^1.6.7","chalk":"^4.1.2","csv-parse":"^5.6.0","csv-stringify":"^6.5.2","dotenv":"^16.4.5","string-similarity":"^4.0.4","yargs":"^17.7.2"},"devDependencies":{"@types/chalk":"^2.2.0","@types/node":"^20.11.24","@types/string-similarity":"^4.0.2","prettier":"^3.5.3","ts-node":"^10.9.2","typescript":"^5.3.3","vitest":"^3.2.3"},"_id":"promptql-latency-test@1.1.10","gitHead":"2e3d88ad26dad0ca766fdfb872dc037bfc6babe4","_nodeVersion":"24.10.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-xansXMNwezxo5sruIqtAj2aAwGo+tyrPem4BZOaTGbmNxFWFYW3ZO02JzqjTnZVJJac3ognVehYGwo4Ow51wuA==","shasum":"47b02e7bb145e99caee4bf8badb8f525ce48890f","tarball":"https://registry.npmjs.org/promptql-latency-test/-/promptql-latency-test-1.1.10.tgz","fileCount":11,"unpackedSize":211389,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID/MRSR1xgfRKDDfwdU75tjkem7tEaceSPZ/ltw3b2M0AiEA0Nw/0Ae40pkubDrtIvDFyxyNrEkaXoNJ34AkRnPEPyw="}]},"_npmUser":{"name":"briantwalter","email":"walter.brian@gmail.com"},"directories":{},"maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/promptql-latency-test_1.1.10_1761863037339_0.9831544730087689"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-13T18:43:53.240Z","modified":"2025-10-30T22:23:57.728Z","1.0.0":"2025-05-13T18:43:53.412Z","1.0.1":"2025-05-13T20:27:52.987Z","1.0.2":"2025-05-14T18:03:35.456Z","1.0.3":"2025-06-03T14:08:05.445Z","1.0.4":"2025-06-03T14:35:11.720Z","1.0.5":"2025-06-12T12:13:27.968Z","1.0.6":"2025-06-30T19:21:13.347Z","1.0.7":"2025-06-30T20:18:12.151Z","1.0.8":"2025-07-14T22:38:06.296Z","1.0.9":"2025-08-12T19:13:54.567Z","1.0.10":"2025-08-18T19:38:20.000Z","1.0.11":"2025-08-23T02:12:36.177Z","1.0.12":"2025-09-22T15:26:15.449Z","1.0.13":"2025-09-26T17:24:08.008Z","1.1.0":"2025-10-23T15:27:39.434Z","1.1.1":"2025-10-28T18:41:36.517Z","1.1.2":"2025-10-28T18:45:02.961Z","1.1.3":"2025-10-28T18:49:05.100Z","1.1.4":"2025-10-28T19:22:45.996Z","1.1.5":"2025-10-28T19:27:58.992Z","1.1.6":"2025-10-28T23:30:27.416Z","1.1.7":"2025-10-29T13:56:30.558Z","1.1.8":"2025-10-29T14:25:55.701Z","1.1.9":"2025-10-29T14:35:10.732Z","1.1.10":"2025-10-30T22:23:57.536Z"},"author":{"name":"Hasura"},"license":"ISC","keywords":["promptql","latency","testing","performance"],"description":"Script to measure PromptQL latency","maintainers":[{"name":"julian-hasura","email":"julian.mayorga@hasura.io"},{"name":"dlavigne-hasura","email":"david.lavigne@hasura.io"},{"name":"briantwalter","email":"walter.brian@gmail.com"}],"readme":"# PromptQL Latency and Accuracy Testing Suite\n\n[![GitHub](https://img.shields.io/github/license/hasura/evalset)](https://github.com/hasura/evalset)\n[![GitHub](https://img.shields.io/github/stars/hasura/evalset)](https://github.com/hasura/evalset)\n\n> **Note**: This suite now uses **v2** of the Natural Language API with support for specific LLM model configuration.\n\n## Overview\n\nThis testing suite provides comprehensive performance and accuracy testing for PromptQL across different environments. It measures latency, component performance, and answer accuracy using Patronus judges.\n\n## Features\n\n- **Multi-environment Testing**: Run tests across dev, staging, and production environments\n- **Latency Measurement**: Track response times and component-level performance\n- **Accuracy Evaluation**: Assess answer quality using Patronus judges (optional)\n- **Detailed Reporting**: Generate comprehensive markdown reports\n- **Parallel Execution**: Run multiple test iterations concurrently\n- **Memory-Efficient Processing**: Incremental results writing with 80-98% memory reduction\n- **Debug Mode**: Enable detailed logging for troubleshooting\n\n## Prerequisites\n\n- Node.js environment\n- Required environment variables:\n\n  ```bash\n  # Development Environment\n  PROMPTQL_API_KEY_DEV=\"your-dev-api-key\"\n  PROMPTQL_DATA_PLANE_URL_DEV=\"https://promptql.dev.private-ddn.hasura.app/api/query\"\n  DDN_URL_DEV=\"https://app-dev.private-ddn.hasura.app/v1/sql\"\n  DDN_AUTH_TOKEN_DEV=\"your-dev-ddn-auth-token\"\n  HASURA_PAT_DEV=\"your-dev-hasura-pat\"\n\n  # Staging Environment\n  PROMPTQL_API_KEY_STAGING=\"your-staging-api-key\"\n  PROMPTQL_DATA_PLANE_URL_STAGING=\"https://promptql.staging.private-ddn.hasura.app/api/query\"\n  DDN_URL_STAGING=\"https://app-staging.private-ddn.hasura.app/v1/sql\"\n  DDN_AUTH_TOKEN_STAGING=\"your-staging-ddn-auth-token\"\n  HASURA_PAT_STAGING=\"your-staging-hasura-pat\"\n\n  # Production Environment\n  PROMPTQL_API_KEY_PRODUCTION=\"your-production-api-key\"\n  PROMPTQL_DATA_PLANE_URL_PRODUCTION=\"https://promptql.production.private-ddn.hasura.app/api/query\"\n  DDN_URL_PRODUCTION=\"https://app-production.private-ddn.hasura.app/v1/sql\"\n  DDN_AUTH_TOKEN_PRODUCTION=\"your-production-ddn-auth-token\"\n  HASURA_PAT_PRODUCTION=\"your-production-hasura-pat\"\n\n  # LLM Configuration (optional, per environment)\n  # Both provider and model must be set for custom LLM configuration\n  # If not provided, defaults to anthropic/claude-sonnet-4-20250514\n  SPECIFIC_LLM_PROVIDER_DEV=\"openai\"\n  SPECIFIC_LLM_MODEL_DEV=\"gpt-4\"\n  \n  SPECIFIC_LLM_PROVIDER_STAGING=\"openai\"\n  SPECIFIC_LLM_MODEL_STAGING=\"gpt-4\"\n  \n  SPECIFIC_LLM_PROVIDER_PRODUCTION=\"anthropic\"\n  SPECIFIC_LLM_MODEL_PRODUCTION=\"claude-3-opus-20240229\"\n\n  # Patronus Configuration (optional, shared across environments)\n  # If not provided, the script will run latency tests only\n  PATRONUS_BASE_URL=\"patronus-backend.internal.example.com\"\n  PATRONUS_API_KEY=\"your-patronus-api-key\"\n  PATRONUS_PROJECT_ID=\"your-patronus-project-id\"\n\n  # Database Configuration (optional)\n  # Specifies the database type for query ID extraction from spans\n  # If set to \"redshift\", will look for \"redshift.query_id\" in span attributes\n  # If not set or empty, will look for \".query_id\" in span attributes\n  DATABASE=\"redshift\"\n  ```\n\n  > **Important**: Each environment now has its own set of authentication tokens and URLs for better security and isolation.\n\n  Note: The URLs follow these patterns:\n  - PromptQL Data Plane URLs: `https://promptql.{env}.private-ddn.hasura.app/api/query`\n  - DDN URLs: `https://app-{env}.private-ddn.hasura.app/v1/sql`\n  - Patronus URL: `patronus-backend.internal.{domain}`\n\n  > **Note**: Patronus configuration is optional. If not provided, the script will automatically run latency tests only. You can also explicitly skip accuracy testing using the `--skip-accuracy` flag even if Patronus configuration is available.\n\n## Installation\n\n1. Clone the repository\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Create a `.env` file in the tests directory with the required environment variables (see `.env.example` for the template)\n\n## Migration from Previous Configuration\n\nIf you're upgrading from a previous version that used shared authentication tokens, you'll need to update your `.env` file:\n\n### Old Configuration (deprecated):\n```bash\n# Shared across environments\nDDN_AUTH_TOKEN=\"your-shared-token\"\nHASURA_PAT=\"your-shared-pat\"\nPROMPTQL_DATA_PLANE_URL_MAIN=\"...\"\nPROMPTQL_DATA_PLANE_URL_SECONDARY=\"...\"\n```\n\n### New Configuration (required):\n```bash\n# Each environment has its own tokens and URLs\nDDN_AUTH_TOKEN_DEV=\"your-dev-token\"\nDDN_AUTH_TOKEN_STAGING=\"your-staging-token\"\nDDN_AUTH_TOKEN_PRODUCTION=\"your-production-token\"\n\nHASURA_PAT_DEV=\"your-dev-pat\"\nHASURA_PAT_STAGING=\"your-staging-pat\"\nHASURA_PAT_PRODUCTION=\"your-production-pat\"\n\nPROMPTQL_DATA_PLANE_URL_DEV=\"...\"\nPROMPTQL_DATA_PLANE_URL_STAGING=\"...\"\nPROMPTQL_DATA_PLANE_URL_PRODUCTION=\"...\"\n```\n\n**Benefits of the new configuration:**\n- **Improved Security**: Each environment has isolated credentials\n- **Better Access Control**: Different permissions per environment\n- **Clearer Configuration**: Environment-specific naming prevents confusion\n- **Safer Testing**: No risk of accidentally using production tokens in development\n\n## Local Development\n\nFor local development and testing, you can use `npm test` with the same command line options:\n\n```bash\n# Run a single question test\nnpm test -- --env \"dev\" --runs 1 --questions 1\n\n# Run multiple questions\nnpm test -- --env \"dev\" --runs 3 --questions 1,2,3\n\n# Run all questions\nnpm test -- --env \"dev\" --runs 3 --all\n```\n\nThis is equivalent to using `npx promptql-latency-test` but runs directly from your local development environment. The `--` after `npm test` is required to pass arguments to the underlying script.\n\n## System Prompt and Environment Setup\n\n### System Prompt Configuration\n\n1. **System Prompt Files**:\n\n   - Create system prompt files in the `system_prompts` directory\n   - Each file should contain domain-specific instructions that define the AI's role and behavior\n   - You can create multiple system prompt files to test different configurations\n   - Example structure:\n\n     ```\n     ## Domain specific instructions\n\n     [Your specific instructions here]\n     ```\n\n2. **Directory Structure**:\n\n   ```\n   system_prompts/\n   ├── dev.txt                    # Base environment prompt\n   ├── dev(8a0a69ff30).txt       # Build-specific prompt (optional)\n   ├── staging.txt               # Base environment prompt\n   ├── production.txt            # Base environment prompt\n   └── marketing.txt             # Alternative system prompt\n   ```\n\n3. **Build-Specific Prompts**:\n\n   - When testing against a specific build version (e.g., `dev(8a0a69ff30)`), the system will:\n     1. First look for a build-specific prompt (e.g., `dev(8a0a69ff30).txt`)\n     2. If not found, fall back to the base environment prompt (e.g., `dev.txt`)\n     3. Fail if neither exists\n   - This allows for testing different prompt configurations across builds while maintaining a default fallback\n   - Example usage:\n\n     ```bash\n     # Will use dev(8a0a69ff30).txt if it exists, otherwise fall back to dev.txt\n     npx promptql-latency-test --env dev(8a0a69ff30) --runs 3 --all\n\n     # Will use dev.txt\n     npx promptql-latency-test --env dev --runs 3 --all\n     ```\n\n4. **Best Practices**:\n   - Keep system prompts focused and specific to the domain\n   - Include clear instructions about data sources and response formats\n   - Document any special handling for specific types of questions\n   - Include citation and artifact formatting requirements\n   - Specify how to handle edge cases and uncertainties\n   - Use build-specific prompts for testing prompt variations without affecting the base environment\n\n### Environment Configuration\n\n1. **Environment File**:\n\n   - Create a single `.env` file in the root directory\n   - This file contains all environment variables for all environments (dev, staging, production)\n   - The script will automatically use the correct variables based on the `--env` flag\n\n2. **Required Variables**:\n\n   ```bash\n   # Development Environment\n   PROMPTQL_API_KEY_DEV=\"your-dev-api-key\"\n   PROMPTQL_DATA_PLANE_URL_DEV=\"https://promptql.dev.private-ddn.hasura.app/api/query\"\n   DDN_URL_DEV=\"https://app-dev.private-ddn.hasura.app/v1/sql\"\n   DDN_AUTH_TOKEN_DEV=\"your-dev-ddn-auth-token\"\n   HASURA_PAT_DEV=\"your-dev-hasura-pat\"\n\n   # Staging Environment\n   PROMPTQL_API_KEY_STAGING=\"your-staging-api-key\"\n   PROMPTQL_DATA_PLANE_URL_STAGING=\"https://promptql.staging.private-ddn.hasura.app/api/query\"\n   DDN_URL_STAGING=\"https://app-staging.private-ddn.hasura.app/v1/sql\"\n   DDN_AUTH_TOKEN_STAGING=\"your-staging-ddn-auth-token\"\n   HASURA_PAT_STAGING=\"your-staging-hasura-pat\"\n\n   # Production Environment\n   PROMPTQL_API_KEY_PRODUCTION=\"your-production-api-key\"\n   PROMPTQL_DATA_PLANE_URL_PRODUCTION=\"https://promptql.production.private-ddn.hasura.app/api/query\"\n   DDN_URL_PRODUCTION=\"https://app-production.private-ddn.hasura.app/v1/sql\"\n   DDN_AUTH_TOKEN_PRODUCTION=\"your-production-ddn-auth-token\"\n   HASURA_PAT_PRODUCTION=\"your-production-hasura-pat\"\n \n   # LLM Configuration (optional, per environment)\n   # Both provider and model must be set for custom LLM configuration\n   # If not provided, defaults to anthropic/claude-sonnet-4-20250514\n   SPECIFIC_LLM_PROVIDER_DEV=\"openai\"\n   SPECIFIC_LLM_MODEL_DEV=\"gpt-4\"\n   \n   SPECIFIC_LLM_PROVIDER_STAGING=\"openai\"\n   SPECIFIC_LLM_MODEL_STAGING=\"gpt-4\"\n   \n   SPECIFIC_LLM_PROVIDER_PRODUCTION=\"anthropic\"\n   SPECIFIC_LLM_MODEL_PRODUCTION=\"claude-3-opus-20240229\"\n \n   # Patronus Configuration (optional, shared across environments)\n   # If not provided, the script will run latency tests only\n   PATRONUS_BASE_URL=\"patronus-backend.internal.example.com\"\n   PATRONUS_API_KEY=\"your-patronus-api-key\"\n   PATRONUS_PROJECT_ID=\"your-patronus-project-id\"\n\n   # Database Configuration (optional)\n   # Specifies the database type for query ID extraction from spans\n   # If set to \"redshift\", will look for \"redshift.query_id\" in span attributes\n   # If not set or empty, will look for \".query_id\" in span attributes\n   DATABASE=\"redshift\"\n   ```\n\n3. **Environment Selection**:\n   - Use the `--env` flag to specify which environment(s) to test against\n   - You can test multiple environments in a single run\n   - Example: `--env dev,staging,production`\n   - You can also specify a specific build version: `--env production(3a3d68b8c8)`\n\n### Evalset Configuration\n\n1. **Test Questions**:\n\n   - The `evalset.csv` file contains the test questions and gold answers\n   - Each row should have:\n     - `question`: The test question\n     - `gold_answer`: The expected answer with artifacts and citations\n   - Example format:\n\n     ```\n     question,gold_answer\n     \"What is love?\",\"Baby don't hurt me\n\n     Gold Artifacts: [{\"id\":\"123\",\"type\":\"websearch\"}]\n     ```\n\n2. **Testing Different Configurations**:\n   - You can test the same evalset with different system prompts\n   - Compare results to see which prompt performs better\n   - Use different environments to test against different data sources\n   - Analyze which configuration produces the most accurate and consistent results\n\n## Usage\n\n### Basic Usage\n\n```bash\nnpx promptql-latency-test --env dev,staging,production --runs 3 --all\n```\n\n### Command Line Options\n\n- `--env, -e`: Environment(s) to test (comma-separated)\n  - Valid values: dev, staging, production\n  - Can specify build version using parentheses: 'production(3a3d68b8c8)'\n  - Examples: 'dev', 'staging,production', 'production(3a3d68b8c8)'\n- `--runs, -r`: Number of runs per question (default: 3)\n- `--questions, -q`: Questions to run. Can be:\n  - A single number (e.g. `1`)\n  - A comma-separated list (e.g. `1,2,3`)\n  - A range (e.g. `1-3`)\n  - A search string to match against questions (e.g. `\"WorkPass\"`)\n- `--all, -a`: Test all available questions\n- `--output`, `-o`: Output file for results (default: latency*results*[timestamp].json)\n- `--concurrency`, `-c`: Maximum number of concurrent questions to run (default: 5)\n- `--batch-size`, `-b`: Number of questions to process in each batch (default: 10)\n- `--rate-limit`: Maximum requests per second (0 for no limit) (default: 0)\n- `--batch-delay`: Delay in seconds between batches of runs (default: 0)\n- `--num-batches`: Number of batches to run (default: 1)\n- `--skip-accuracy`: Skip accuracy testing even if Patronus configuration is available (default: false)\n- `--keep-incremental`: Keep incremental result files after completion (default: false - files are cleaned up)\n- `--simple`: Additionally generate simple markdown output (questions and responses only) alongside full results (default: false)\n- `--timeout`: API request timeout in seconds (default: 60)\n\n### Incremental Results Writing and Cleanup\n\nThe testing suite uses incremental writing to minimize memory usage during large test runs. Each question's results are written to disk immediately after completion, rather than storing everything in memory.\n\n#### How It Works\n\n- **Incremental Files**: Each question's results are saved to individual files (e.g., `latency_results_dev_0.json`, `latency_results_dev_1.json`)\n- **Memory Efficiency**: Only the current question's data is kept in memory at any time\n- **Final Output**: A combined results file is still generated with the same structure as before\n- **Automatic Cleanup**: By default, incremental files are automatically removed after successful completion\n\n#### Cleanup Behavior\n\n**Default Behavior (Cleanup Enabled):**\n```bash\nnpx promptql-latency-test --env dev --runs 1 --all\n```\n- Incremental files are automatically cleaned up after completion\n- Console output shows cleanup progress:\n```\n✅ Results saved: latency_results.json and latency_results_summary.md\n🗑️  Cleaned up incremental file: latency_results_dev_0.json\n🗑️  Cleaned up incremental file: latency_results_dev_1.json\n🧹 Cleanup complete: Removed 2 incremental files\n```\n\n**Preserve Incremental Files:**\n```bash\nnpx promptql-latency-test --env dev --runs 1 --all --keep-incremental\n```\n- Incremental files are preserved for debugging or analysis\n- Console output indicates files are preserved:\n```\n✅ Results saved: latency_results.json and latency_results_summary.md\n📁 Incremental files preserved: Use --keep-incremental=false to enable cleanup\n```\n\n#### Memory Usage Benefits\n\n- **Small Tests**: 80% memory reduction\n- **Large Tests**: 98% memory reduction (e.g., 50 questions, 10 runs each)\n- **Scalability**: Peak memory usage remains constant regardless of test size\n\n### Usage Examples\n\nRun all questions:\n\n```bash\n# Run against default environments\nnpx promptql-latency-test --env dev,staging,production --runs 3 --all\n\n# Run against specific build version\nnpx promptql-latency-test --env production(3a3d68b8c8) --runs 3 --all\n\n# Run against multiple environments including specific build\nnpx promptql-latency-test --env dev,staging,production(3a3d68b8c8) --runs 3 --all\n```\n\nRun specific questions:\n\n```bash\n# Run single question by number\nnpx promptql-latency-test --env dev --runs 1 --questions 1\n\n# Run multiple questions by number\nnpx promptql-latency-test --env dev,staging --runs 3 --questions 1,2,3\n\n# Run a range of questions\nnpx promptql-latency-test --env dev,staging --runs 3 --questions 1-3\n\n# Run questions by company name or keyword\nnpx promptql-latency-test --env dev,staging --runs 3 --questions \"WorkPass\"\nnpx promptql-latency-test --env dev,staging --runs 3 --questions \"founders\"\n```\n\n### Accuracy Testing\n\nThe script supports three modes for accuracy testing:\n\n1. **Full Accuracy Testing** (default):\n\n   ```bash\n   npx promptql-latency-test --env dev --runs 3 --all\n   ```\n\n   - Runs both latency and accuracy tests\n   - Requires Patronus configuration in `.env`\n\n2. **Skip Accuracy Testing**:\n\n   ```bash\n   npx promptql-latency-test --env dev --runs 3 --all --skip-accuracy\n   ```\n\n   - Runs only latency tests\n   - Ignores Patronus configuration even if available\n\n3. **Automatic Mode**:\n   ```bash\n   npx promptql-latency-test --env dev --runs 3 --all\n   ```\n   - If Patronus configuration is missing, automatically skips accuracy testing\n   - If Patronus configuration is present, runs accuracy tests\n   - No need to specify any flags\n\n### Example Output\n\nHere's an example of running a single question test:\n\n```bash\n$ npx promptql-latency-test --questions 1 --runs 1 --env dev\n\nTotal questions available: 19\nRequested questions: 1\nRequested runs per question: 1\nWill run 1 question:\n  1. [Question text]\n\nℹ️  Info: Starting latency tests with 1 question, 1 concurrent requests per batch, 1 batch (1 total runs) across environments: dev\n\nℹ️  Info: Running 1 concurrent requests per batch\n\n================================================================================\n🤔 Question: [Question text]\n\nℹ️  Info: Starting batch 1/1 with 1 concurrent runs\ndev Q1/1 R1/1 [Progress bar]\nℹ️  Info: Evaluating accuracy for question: [Question text]\ndev Q1/1 R1/1 ⏱️ 22.30s\n  SQL: 0.25s | LLM: 16.17s | Code: 5.87s\n\n📊 Results for dev\n⏱️  Performance: 22.30s avg (22.30s min, 22.30s max)\n🔧 Components: SQL 0.25s | LLM 16.17s | Code 5.87s\n✅ Accuracy: Fuzzy 100% | Data 100% | Combined 100%\n\n================================================================================\n🏁 Final Summary\n================================================================================\n\n📈 Overall: 1/0 runs (1 questions, 1 runs each)\n\n💾 Memory Usage: Initial: 132MB, Current: 129MB, Peak: 133MB\n\n🌍 Environment Comparison\n--------------------------------------------------------------------------------\n\n❓ Question: [Question text]\n1. dev 🏆 22.30s (100% success) [Fuzzy: 100%, Data: 100%, Combined: 100%]\n\n✅ Results saved: latency_results_[timestamp].json and latency_results_[timestamp]_summary.md\n```\n\n### Debug Mode\n\nEnable detailed logging:\n\n```bash\nDEBUG=true npx promptql-latency-test --env dev --runs 3 --all\n```\n\n## Test Results\n\nThe script generates the following output files:\n\n1. **JSON file** with raw results (always generated)\n2. **Markdown summary** with formatted analysis (always generated)\n3. **Simple markdown** with questions and responses only (generated when `--simple` flag is used)\n\n### Results Include\n\n1. **Overall Statistics**\n\n   - Total questions and runs\n   - Success/failure rates\n   - Performance metrics\n\n2. **Accuracy Results**\n\n   - Per-environment statistics\n   - Fuzzy match and data accuracy scores\n   - Combined pass rates\n   - Detailed failure analysis\n\n3. **Performance Analysis**\n\n   - Environment comparison\n   - Component breakdown (SQL, LLM, Code)\n   - Latency metrics\n   - Performance rankings\n\n4. **Per-Question Analysis**\n   - Environment-specific results\n   - Accuracy metrics\n   - Component performance\n   - Failure details\n\n### Simple Output Mode\n\nWhen using the `--simple` flag, the script generates an additional simplified markdown file that contains:\n- Questions and their responses only\n- No statistics, metrics, or technical details\n- Clean, readable format for non-technical stakeholders\n\n**Usage:**\n```bash\n# Generate full results PLUS simple markdown\nnpx promptql-latency-test --env dev --runs 3 --all --simple\n```\n\n**Output files:**\n- `latency_results_[timestamp].json` - Full JSON results (always generated)\n- `latency_results_[timestamp]_summary.md` - Detailed markdown summary with statistics (always generated)\n- `latency_results_[timestamp]_simple.md` - Simple markdown with Q&A only (generated with --simple flag)\n\nThis additive approach ensures you always have complete data for analysis while also providing a simplified view when needed.\n\n## Data Structure\n\n### Accuracy Results\n\n```typescript\ninterface AccuracyResult {\n  fuzzy_match: {\n    passed: boolean;\n    score: number;\n    details: string;\n  };\n  data_accuracy: {\n    passed: boolean;\n    score: number;\n    details: string;\n  };\n}\n```\n\n### Run Results\n\n```typescript\ninterface RunResult {\n  duration: number | null;\n  timestamp: string;\n  run_number: number;\n  trace_id: string | null;\n  iterations: number | null;\n  span_durations: {\n    sql_engine_execute_sql: number | null;\n    call_llm_streaming: number | null;\n    pure_code_execution: number | null;\n  };\n  query_ids: string[];\n  accuracy: AccuracyResult | null;\n  raw_request: any;\n  raw_response: any;\n}\n```\n\n## Error Handling\n\nThe script includes comprehensive error handling:\n\n- Retry logic for API calls\n- Detailed error logging\n- Graceful fallbacks for missing data\n- Environment validation\n- Configuration checks\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a Pull Request\n\n## Technical Details\n\n### API Integration\n\nThe suite integrates with:\n- **PromptQL API v2**: For natural language query processing with configurable LLM models\n- **DDN (Data Delivery Network)**: For data access\n- **Hasura GraphQL**: For trace data retrieval\n- **Patronus API**: For accuracy evaluation (optional)\n\n### API Version\n\nThis suite uses **v2** of the Natural Language API, which includes:\n- Enhanced LLM configuration with `specificLlm` field support\n- Bearer token authentication in Authorization header\n- Improved performance and reliability\n- Backward compatibility with v1 features\n\n### Authentication\n\nThe v2 API requires authentication via Bearer token in the Authorization header:\n- **Header Format**: `Authorization: Bearer ${PROMPTQL_API_KEY}`\n- **No longer in request body**: The `promptql_api_key` field has been removed from the request payload\n- **Per-environment keys**: Each environment uses its own API key (e.g., `PROMPTQL_API_KEY_DEV`, `PROMPTQL_API_KEY_STAGING`, `PROMPTQL_API_KEY_PRODUCTION`)\n\n### LLM Configuration\n\nThe v2 API allows you to specify which LLM provider and model to use via the `specificLlm` field. This is configured per environment using separate provider and model environment variables:\n\n**Development Environment:**\n- `SPECIFIC_LLM_PROVIDER_DEV`: LLM provider (e.g., \"openai\", \"anthropic\")\n- `SPECIFIC_LLM_MODEL_DEV`: Model name (e.g., \"gpt-4\", \"claude-3-opus-20240229\")\n\n**Staging Environment:**\n- `SPECIFIC_LLM_PROVIDER_STAGING`: LLM provider\n- `SPECIFIC_LLM_MODEL_STAGING`: Model name\n\n**Production Environment:**\n- `SPECIFIC_LLM_PROVIDER_PRODUCTION`: LLM provider\n- `SPECIFIC_LLM_MODEL_PRODUCTION`: Model name\n\n**Default Behavior:**\n- If no environment variables are set, the system defaults to: `anthropic/claude-sonnet-4-20250514`\n- Both provider and model must be set together for custom configuration\n- If only one is set (incomplete configuration), the default will be used\n\n**Example Providers and Models:**\n- **OpenAI**: provider=\"openai\", models=\"gpt-4\", \"gpt-4-turbo-preview\", \"gpt-3.5-turbo\"\n- **Anthropic**: provider=\"anthropic\", models=\"claude-3-opus-20240229\", \"claude-3-sonnet-20240229\"\n- **Azure**: provider=\"azure\", models=\"gpt-4\", \"gpt-35-turbo\"\n- **Cohere**: provider=\"cohere\", models=\"command\", \"command-light\"\n\n**Request Structure:**\n```json\n{\n  \"version\": \"v2\",\n  \"llm\": {\n    \"provider\": \"hasura\",\n    \"specificLlm\": {\n      \"provider\": \"openai\",  // or defaults to \"anthropic\"\n      \"model\": \"gpt-4\"       // or defaults to \"claude-sonnet-4-20250514\"\n    }\n  }\n}\n```\n\n**Default Configuration (when no env vars are set):**\n```json\n{\n  \"version\": \"v2\",\n  \"llm\": {\n    \"provider\": \"hasura\",\n    \"specificLlm\": {\n      \"provider\": \"anthropic\",\n      \"model\": \"claude-sonnet-4-20250514\"\n    }\n  }\n}\n```\n\n## Version History\n\n### v2.0.0 - Natural Language API v2 Support\n\n**New Features:**\n- **API v2 Support**: Updated to use v2 of the Natural Language API\n- **Specific LLM Configuration**: Added support for `specificLlm` field with provider and model properties\n- **Per-Environment LLM Settings**: Configure different LLM providers and models for each environment\n- **Bearer Token Authentication**: API key now sent as Bearer token in Authorization header\n\n**Technical Improvements:**\n- **Enhanced Model Selection**: Fine-grained control over both LLM provider and model\n- **Improved API Compatibility**: Full support for v2 API features with proper `specificLlm` object structure\n- **Secure Authentication**: API key moved from request body to Authorization header for better security\n- **Default LLM Configuration**: Automatically uses anthropic/claude-sonnet-4-20250514 when no custom LLM is configured\n- **Backward Compatibility**: Maintains compatibility with existing test suites (specificLlm is optional)\n\n### v1.0.10 - Memory-Efficient Processing\n\n**New Features:**\n- **Incremental Results Writing**: Each question's results are written to disk immediately after completion\n- **Memory Usage Reduction**: 80-98% reduction in peak memory usage for large test suites\n- **Automatic Cleanup**: Incremental files are automatically cleaned up after successful completion\n- **Flexible Cleanup Control**: `--keep-incremental` flag to preserve files for debugging\n\n**Technical Improvements:**\n- **Scalability**: Peak memory usage remains constant regardless of test size\n- **Reliability**: Results are persisted incrementally, reducing risk of data loss\n- **Backward Compatibility**: Same output format maintained\n\n**CLI Options:**\n- `--keep-incremental`: Keep incremental result files after completion (default: false)\n\n### v1.0.9 and Earlier\n\n- Multi-environment testing support\n- Latency and accuracy measurement\n- Parallel execution capabilities\n- Comprehensive reporting\n- Debug mode functionality\n","readmeFilename":"README.md"}