{"_id":"@benchgen/benchgen-openclaw","_rev":"23-85517938ba663f8697d2d90aca924054","name":"@benchgen/benchgen-openclaw","dist-tags":{"latest":"0.8.1"},"versions":{"0.1.0":{"name":"@benchgen/benchgen-openclaw","version":"0.1.0","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.1.0","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"dist":{"shasum":"8f169defdc8c231364263bf756824102ee704bde","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.1.0.tgz","fileCount":10,"integrity":"sha512-hUbWRmjeO3dMujtlNQDGcfN0xwEpRhyOBcLwjg6+AyDiokJF3aJ1/WjQABuF38iwo9lj3VFReIeQMGwecxPJ2A==","signatures":[{"sig":"MEUCIESaw2u57PfX7KBed+1RMVF2WTIOqGc8z8PO5NB3SX91AiEAqpZCaQvmSISpTjTAZsP52QOwnjWulQKtTQ+Jh9Eafp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54571},"main":"index.js","type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"_npmVersion":"11.3.0","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.1.0_1784659337036_0.9338033229262128","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@benchgen/benchgen-openclaw","version":"0.1.1","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.1.1","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"dist":{"shasum":"cf52806e1adb8164bcf560923078122825c1c4eb","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.1.1.tgz","fileCount":10,"integrity":"sha512-IcE+9jYfFbzRhfvSk2clTMNKkjvm0qv3ys7Wni99diEdhXjqXPi+2ICWhylfHTKfOdipidyKSMm03rkJme+0zg==","signatures":[{"sig":"MEYCIQCEX7kcB7bxVZPYyfvMEqcdykwbOW5uuC+DgfTBy2d7UgIhAOEn61s4QGayOufglT/gO66zJfTatonkRdlHr+Wolcf/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54544},"main":"index.js","type":"module","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"_npmVersion":"11.3.0","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.1.1_1784659604325_0.9696538776139514","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@benchgen/benchgen-openclaw","version":"0.1.2","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.1.2","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"91da59a0a430c06b49a50bdf02664409e67719ae","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.1.2.tgz","fileCount":10,"integrity":"sha512-/+Lokei1MWhY6WK5YYo/ea52NqrnUrgnYTr/DAQw2JJxdWFG6wYZ/S4ZRCeSJD6qLrZL5vo1tMZX4A+A2kmFHg==","signatures":[{"sig":"MEQCIBM7mRIT3GJK495a2+e+VwWMNXiTwlKFtXOKbDaHIHU8AiBuI8SdQXHitc5HljccLy58LyMDQnuQd2yGmezbCsFT1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55234},"main":"index.js","type":"module","gitHead":"439b305e0b0b63705a317af1b8885bd81a0160ca","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"11.3.0","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.1.2_1785224342020_0.1817445928429806","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@benchgen/benchgen-openclaw","version":"0.1.3","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.1.3","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"72ac2d8b3f81f0768f24488d8fe5d2adaf95b8a5","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.1.3.tgz","fileCount":10,"integrity":"sha512-EiW322AbSsXTFeBHidPxY9C5m5A+Y0v0B0m9bFfPHoyDOf8rCDClvYLXg/Jayc8ELITAiSVn87yWbYB4qxVAyA==","signatures":[{"sig":"MEYCIQCqnbrdeFwtuxWnHx5rtUxGXVyvaHFQcr6vN8vrfJ57QAIhAJay5eJU+gEfIgkcr5WCh3LFC9FIy/n70E3OLQ/g85JZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56442},"main":"index.js","type":"module","gitHead":"439b305e0b0b63705a317af1b8885bd81a0160ca","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"11.3.0","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.1.3_1785237534244_0.8252304048146575","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@benchgen/benchgen-openclaw","version":"0.1.4","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.1.4","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"b57035e994f63aa3e49e7d5732408bc9a852572c","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.1.4.tgz","fileCount":10,"integrity":"sha512-AuB8Gmxo4UD03lJXFnDRR6uaxOK51b6ijMR0ZqrgH/Bs3mVVGY2MbetfeDm4e8LRQkby4s4xdrMMGHd4os5Ryg==","signatures":[{"sig":"MEUCIQDtW2FrM5akJB3yFvAOl5tLIQKh0te0lr93vQJ5eMzDiAIgNsWkHQeO9VFNAyFyHIsD71/WuUAL+7+PUByUMKySreE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60603},"main":"index.js","type":"module","gitHead":"439b305e0b0b63705a317af1b8885bd81a0160ca","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"11.3.0","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.1.4_1785248396388_0.49582051678088623","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@benchgen/benchgen-openclaw","version":"0.1.5","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.1.5","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"5bdd9c720c67e4aa63b081b975d6998632f56880","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.1.5.tgz","fileCount":10,"integrity":"sha512-louiAAsGimdCuHxl6BnZHOHrfSLC8wSG70gisxkzMnAwR+d/CcBktrd7vBC/eBGgqe2zZ7t7ZjjEpyIq9XB7/Q==","signatures":[{"sig":"MEQCIDALzaCw5w6tz63yYVN5dVqrjrkS+FLv3OLSA8hNkbcLAiBdNB2gZM33x2/+ndMq6rc13qxRn+Q+1bhQeVfOweOOgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63047},"main":"index.js","type":"module","gitHead":"e23f81cbed0949e81cf32f2ac3eb78e3f3dae832","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"11.3.0","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.1.5_1785309570936_0.6515121285675955","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@benchgen/benchgen-openclaw","version":"0.1.6","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.1.6","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"e71b10d2d99581ac12958b2b340eb6894338ca77","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.1.6.tgz","fileCount":10,"integrity":"sha512-iRFngFmDToFqWEqYLTpK3w0eYwtS2WTYwvHfAsIAxihb1+BvT/A0uD0CaI4YsCnYSouCJ8KIDCgJBjCTN7ZUsw==","signatures":[{"sig":"MEQCIG8tkZ3Ip03+g0Nsw62t36EGYXo5ALbLfV/tGhmrQXTPAiBsMb0F/07PuwnFWT67fpx6xchBI+zMWlcrYSWTain6nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64245},"main":"index.js","type":"module","gitHead":"e23f81cbed0949e81cf32f2ac3eb78e3f3dae832","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"11.3.0","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.1.6_1785315263820_0.7978241024669614","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@benchgen/benchgen-openclaw","version":"0.2.0","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.2.0","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"8f1d75d192451f1c9020f4052f72c0e180b71f94","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.2.0.tgz","fileCount":10,"integrity":"sha512-7apoOyPpoaBz1EG4EhjyG+4ZrHEENQGmNOxDgF9nB+/Le4HFA0vn7X7iBnzd970iW/OD3IwxOcWApBWeH+EMfg==","signatures":[{"sig":"MEUCICamlw2qZ4pUhCOO5Wc5nkuJ+9cbwTTZqDEwMz8ZodbaAiEA3hO4TgjX2QtUYWkf9qLReifxUCzVE2tbdMOAbQe2UNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73237},"main":"index.js","type":"module","gitHead":"766e1c1a345181c8f9f72357b960dddf0df2ff1d","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.2.0_1785758981922_0.05699662813234263","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@benchgen/benchgen-openclaw","version":"0.2.1","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.2.1","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"1f1c73191449d5f563af86d1cc7217dcee8cec59","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.2.1.tgz","fileCount":10,"integrity":"sha512-lVjd/2mS5t0+soSk2jo6x4/37+7vWVA2wX83yUymRi/jEOEDycxl/SHqAg0q/lx8WpVFMdQXNUwdqlRBbv6W3A==","signatures":[{"sig":"MEUCIQDng+49v+F8r8JWYRECDQdYiTbff7Rk7whF0T7gBtdbbwIgH5wDdi67slDYnSV3Nhic0l2b3/X7Gi0SX33IFcW3l00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76833},"main":"index.js","type":"module","_from":"file:benchgen-benchgen-openclaw-0.2.1.tgz","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"_resolved":"/home/user/openclaw-benchgen/benchgen-benchgen-openclaw-0.2.1.tgz","_integrity":"sha512-lVjd/2mS5t0+soSk2jo6x4/37+7vWVA2wX83yUymRi/jEOEDycxl/SHqAg0q/lx8WpVFMdQXNUwdqlRBbv6W3A==","repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.2.1_1786111693646_0.37711808476397546","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@benchgen/benchgen-openclaw","version":"0.2.2","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.2.2","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"4b775c1246548ddfc26d646357cc8fbeaa78d993","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.2.2.tgz","fileCount":10,"integrity":"sha512-PWWfM8hcO8Xy3eO+szHO7ARTnD9hTMqHMQuaEOh2hKgM/72UeCi7faL2/TU4zcPF3Tr+UU43f9OER/5qyXFiAQ==","signatures":[{"sig":"MEQCIFH2c6B8Sys5H7E2iqjb46A05nRO4WnLW3KDERebe5GNAiAi4uDmTyo0snFfPJB6Os6j48qH+Bpkbpsl0SW0+ovxOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79109},"main":"index.js","type":"module","gitHead":"28acc810642dbf6d360df6b4cfe949e090a6cf2c","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"release":{"publishToNpm":true},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen for observability and training-data capture","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.2.2_1786113202059_0.10003079438559914","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@benchgen/benchgen-openclaw","version":"0.3.0","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.3.0","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"a403fdaac0854e870a35aa2572e2ab0f0d00544c","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.3.0.tgz","fileCount":11,"integrity":"sha512-DkZxJ0WuhFq7q8698QPzMtwpqzO531r5LXuw8rUImyv0BGPsAcKrNOBpQm3kKtvqeug1PLJ3SpHS1sGFwXSP0w==","signatures":[{"sig":"MEUCIGNdPtQOsJjdyk5/Rv6J5c2hB15QBXM9xOTOXsk1fLMzAiEA0habddpjWYFzHl7dXCMW4QVV6b+RpOhg66as08eLlis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134882},"main":"index.js","type":"module","gitHead":"2e197d05b14b27965559e163010ef3859cd77611","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.3.0_1787133093298_0.806947459741419","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@benchgen/benchgen-openclaw","version":"0.4.0","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.4.0","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"90cd3943b6d82449d3cb1d15b590c9f7bd8a6f54","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.4.0.tgz","fileCount":11,"integrity":"sha512-0Ut6Q5+I9KYn+nfLAajlS60hqu1qyNShL+eIQN25lMdeufuSMF5IvIf1MPlwEbxdItDue79D7174qb4ikVMtIQ==","signatures":[{"sig":"MEUCIQDIFKSMew+DxcWo+Rhpccd/yxy5IUWc2uOJt/pqkgJzPwIgXSOHQGLUrfcm2xMTUbLuOcH01rmVRBhxPZkS4H1jfec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138869},"main":"index.js","type":"module","gitHead":"a4b0e724bc27ac7bc39869169c4b3b4552d88226","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.4.0_1787652780142_0.26237560573046204","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@benchgen/benchgen-openclaw","version":"0.5.0","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.5.0","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"3d5fab317a9b14f4c341635a73712d0f8483c4e9","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.5.0.tgz","fileCount":11,"integrity":"sha512-Ej7xq7PKavOR16J1MYry9SN3Mr7u90P8ndbj65Xu0Gs2vaL7ghEms6kuaSpljDT1Y73guaFAb/18oBHsLXE0vw==","signatures":[{"sig":"MEUCIQCHy1q8j6S5gnFSIdP0ssU1IqQPQmg3xXe8k79jOHJ7MwIgKh2BOh3jqboXKcTI7ln09DIRYpvo2mwWCSdPLCOJ3xc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141420},"main":"index.js","type":"module","gitHead":"183627098bd6c941876be6822fec95a5969f1c58","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.5.0_1787737102677_0.35669854332481066","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@benchgen/benchgen-openclaw","version":"0.5.1","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.5.1","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"dc4068f012dbb4eb0ea58f6477cee0eb0868e181","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.5.1.tgz","fileCount":11,"integrity":"sha512-4WPDtZP7B8ATfq2aJ1si0vxMSQzzX3Vk/4Wz25mgYCSEXjlGYotz+iz7FJuxO5vYtuRua0bgxA3U9a1pHFKkuQ==","signatures":[{"sig":"MEQCIGbNj1a2VshJclN19sG6OhggmhKH8du9MDBKZ9cwyW+qAiBDniTo0NwNtMSfDpjSCK44Aa45X/l15eyMZEssXnrtHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143106},"main":"index.js","type":"module","gitHead":"10a76fa1411c91df7c32686990d7acf2d8a70b88","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.5.1_1787751662368_0.6037545108692302","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@benchgen/benchgen-openclaw","version":"0.5.2","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.5.2","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"20e0cd661581dfaf79eac10123fe94e4c1f03273","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.5.2.tgz","fileCount":11,"integrity":"sha512-kDTgmJ0Vs5/ybYsUKBu78EHSVHQn9Ct/w/QhQQiGrxm+ehaDWDlAUqZdy3JZnOq/H4WRO4pT5qC8JOvBGsdiZg==","signatures":[{"sig":"MEQCIHQa4GvriEz+crK3jG+piTvoL64SseTwAeZpaoVK/0nzAiABIlSSAPpTGeU+OJxek+GEwvnhdhEE2kqiomXpGBMn2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148777},"main":"index.js","type":"module","gitHead":"5a1c7cc1e412d3f2462471c78cace2193dba0e47","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.5.2_1787909852845_0.4844917216613833","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@benchgen/benchgen-openclaw","version":"0.5.3","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.5.3","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"a3c0bac3101391535b4cae8d6a0b17c7b1492d7f","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.5.3.tgz","fileCount":12,"integrity":"sha512-fQqkLYpUylcb2T55cjdotwWhgS7I6I81W0vDvWxu2CkykoUOE2W5MfcPaRHz6DefPez3k6ToSaaYjsub8+7J+Q==","signatures":[{"sig":"MEUCIB4xlzCcC5P52uYzcNXARFVBYe4YrRz8BVaZwp9yoESKAiEAnL80PV/YHJ7+ClAOhP+alRQ6tWUzqZH7MMGzvnTKfRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154709},"main":"index.js","type":"module","gitHead":"a63ab07c1b5f6506f1dd4bbf7c3065f79048fef5","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.5.3_1787918246509_0.04937165685663847","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@benchgen/benchgen-openclaw","version":"0.5.4","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.5.4","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"9415bfd61580042d32b450b4a02bc1f56e62670f","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.5.4.tgz","fileCount":12,"integrity":"sha512-USaz1sRZX2GIomwzrGu53flO13POXY/PeMJ5Z1qSMVfwfvhUcbiWq+mispm7N1EpxALs1TUE88ongRgsr6rPpA==","signatures":[{"sig":"MEYCIQDOOBizN9/ceq9cRFOJXwTzXZpM2XlinoUTxr6mvdbY+wIhAJRspXtDTu1x08p47LITR4mzndwa2XlwCg+4CmLr3mdQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155186},"main":"index.js","type":"module","gitHead":"ae7e9cc185326cc576ac5a2f62da87b429f21e11","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.5.4_1789373720781_0.9092928306287036","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@benchgen/benchgen-openclaw","version":"0.5.5","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.5.5","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"e062aac2fcc71d83173af3ad5302adcd4c8a4e6b","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.5.5.tgz","fileCount":12,"integrity":"sha512-E6e2OO2xHoaGIs4vTAlN4lE7Nwa0nIeldyvEyaef4HWW9hNXm/SO6kEtk/ZUvU0CuTCDySHc5kbh4BQ5wjq8gA==","signatures":[{"sig":"MEUCIFbDSAGliXfWcsbbETc9L2F1S0uzbIdiQ8xJiTrdoznpAiEAnNWmqqZFbxjva/DCB/csN2/MCmz9ETY389Fj1zhPHIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156357},"main":"index.js","type":"module","gitHead":"6db1ba91026d31d023877ff3e8d5fdd197d74ca9","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.5.5_1789561981046_0.5679077282265717","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@benchgen/benchgen-openclaw","version":"0.6.0","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.6.0","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"c8f4198cf204e639a659e047b33171af89ac6447","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.6.0.tgz","fileCount":13,"integrity":"sha512-hLEHnDcQbtARmcbIMaxiG7V5EpgzfrRVblP+o+f6cixM7VhTOFr4G1Edg6MdkrfRhZtqUsZz6CYbjtKTQ9mMqg==","signatures":[{"sig":"MEQCIAH6CnpBLeZ53mzEZLBWzOhzg1xpVNFu7BFlJVWuIDkLAiA8yXRVIM/HWbq9yGPRLpIbxK6OURrXi7YGlTUqkk97EA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEYGgRFu3a8Gjyt/TUnJjpGRvgciYxg7+V9+ZywVUqvvAiEA/JB9QR3EGgjmE122QFYVlrfwQ2bmnuGGj3/Q04ao8nk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164991},"main":"index.js","type":"module","gitHead":"027b4b7736bdf7bcc8f2ee76c0954447c61425c1","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.6.0_1789717180698_0.8244470111271971","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@benchgen/benchgen-openclaw","version":"0.7.1","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.7.1","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"40335f2994969df5f0552301725d335a43f6ab9f","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.7.1.tgz","fileCount":14,"integrity":"sha512-RjrWE4sSJfZ4zdV1bv0Mt1G4m3Udy9uf1IKhkyPo0Amgdi1uNqSG5R5MtHzRs5mh3p+JYpREh9w65/FuPSRqOA==","signatures":[{"sig":"MEUCIQC4B4un9O015TLddqeuAxXjWlkI//zWl7veSVLX5eownAIgcKfZ90ZN/L1n7iTTibtsmz6VVivOioQp6A41f2zh7HI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFzeKb9O0DNrBTsm0FrEujTZ9BTiR3ETViD6J9YF2tiXAiEAx1CTHfsSISldJREVR/SWtRuFi12U6TIb0T7NuVPNYkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173495},"main":"index.js","type":"module","gitHead":"c43cc74d6dfce24df6abef374e2b53708afc17db","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.7.1_1789731603791_0.20036651045542375","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@benchgen/benchgen-openclaw","version":"0.7.2","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.7.2","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"04f1f929377a2dc2ee28d434da1adff45d3c0d06","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.7.2.tgz","fileCount":14,"integrity":"sha512-tR2QeIFUqpwPCcSS9vwmuN0AGL6d04pGss72UGVHfyS6XePJkbMQxG7RWdZo45p4W+FAor43rX9amiaPR4VCtQ==","signatures":[{"sig":"MEYCIQCanomgEnPzBkjHsMEtMliCzF3du3bpe+dF0Fp+QZGbiwIhALwjzvXiI1xjf4D/2rx8/aOJG7DZWyLDFzvQjuQXVm0F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD9EAbLw6XsFA6egvAIWLyqv17DxWgHmKSlgfSQ0Q2PMQIgccm5D6gVE6kXDgeYU06b6ZWYE40w+p/xQH1GoMmnW4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176981},"main":"index.js","type":"module","gitHead":"2a4130bdd329e92a1e999adbbc7dc1fc21fbfad6","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.7.2_1789741267428_0.9714817802929001","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@benchgen/benchgen-openclaw","version":"0.8.0","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"license":"MIT","_id":"@benchgen/benchgen-openclaw@0.8.0","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"1d5544cf18e567fc16378f2ee1111dbdea94ba13","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.8.0.tgz","fileCount":14,"integrity":"sha512-iGHYNgT4vefGPWxWvhcF0M6IVhLlYy76ZEw6u6NPFvMhONpfzt16rg6u3CeecTGUMo0CxA933QMfAxT5RaiZAg==","signatures":[{"sig":"MEUCIBLc151D0eWzbxLfSNXn8Lfxo0Tkp6ldr/cYVi6bfY35AiEAhcqNZnWF93e6hj7ASN59wpbMb6Uhx0WMjAhZqiOX2rw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDCCWkM8/SRV2MExtzUxRvZFtkfDNFUGqtfH7fsjUIHzQIhAN9ggZOQU0j5jb/qDkGwUCsBtkQbVuRiB9V7Bj8vicMb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181181},"main":"index.js","type":"module","gitHead":"26a816d98ea65e2d2b6c32f859fca8a31e1e8972","scripts":{"test":"node --test"},"_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/benchgen-openclaw_0.8.0_1790067079321_0.4576644515487225","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"_id":"@benchgen/benchgen-openclaw@0.8.1","bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"dist":{"shasum":"8cbfa364dc218d58cf9748355a397601a92cb134","tarball":"https://registry.npmjs.org/@benchgen/benchgen-openclaw/-/benchgen-openclaw-0.8.1.tgz","fileCount":14,"integrity":"sha512-AraW8+RmOVV1/vFsMsfhxsS/tmrTYB7L27uK0i+8IgsGzdJsebnOPbnO82gWfAXwRqi/pMuCpJnNlliR2nCVxQ==","signatures":[{"sig":"MEUCIQDSyYbi0DM+k59kMnQBUCXgKnD+d/TAS+xkndHGmcWlHgIgKP3WFNBzv6ZujpACQzudxx2PhcY/PzQ4HJRyAsfJ0vE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDPuUNXvaNZdJH3LdXc8pY7HX1eb13ty3Ugxb6ElHk/BQIgBognOkkzU8MvweL1PpGzaZS/5A4pBry+PrUvBmqxQ88="}],"unpackedSize":182865},"main":"index.js","name":"@benchgen/benchgen-openclaw","type":"module","gitHead":"289b78b6f5978dee97b726bfc57fd09e50f84706","license":"MIT","scripts":{"test":"node --test"},"version":"0.8.1","_npmUser":{"name":"spel","email":"spelonema@gmail.com"},"homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"openclaw":{"build":{"openclawVersion":"2026.6.1"},"compat":{"pluginApi":">=2026.6.1"},"install":{"npmSpec":"@benchgen/benchgen-openclaw","defaultChoice":"npm","minHostVersion":">=2026.6.1"},"extensions":["./index.js"],"runtimeExtensions":["./index.js"]},"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"_npmVersion":"10.8.2","description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","directories":{},"maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"_nodeVersion":"20.18.1","dependencies":{"ws":"^8.18.0","@clack/prompts":"^0.7.0","@langfuse/otel":"^5.9.0","@langfuse/tracing":"^5.9.0","@opentelemetry/api":"^1.9.1","@opentelemetry/sdk-trace-node":"^2.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/benchgen-openclaw_0.8.1_1790148916627_0.769536096434783"}}},"time":{"created":"2026-07-21T18:42:16.823Z","modified":"2026-09-23T07:35:16.905Z","0.1.0":"2026-07-21T18:42:17.173Z","0.1.1":"2026-07-21T18:46:44.448Z","0.1.2":"2026-07-28T07:39:02.217Z","0.1.3":"2026-07-28T11:18:54.383Z","0.1.4":"2026-07-28T14:19:56.524Z","0.1.5":"2026-07-29T07:19:31.168Z","0.1.6":"2026-07-29T08:54:23.952Z","0.2.0":"2026-08-03T12:09:42.129Z","0.2.1":"2026-08-07T14:08:13.818Z","0.2.2":"2026-08-07T14:33:22.210Z","0.3.0":"2026-08-19T09:51:33.438Z","0.4.0":"2026-08-25T10:13:00.294Z","0.5.0":"2026-08-26T09:38:22.817Z","0.5.1":"2026-08-26T13:41:02.491Z","0.5.2":"2026-08-28T09:37:33.002Z","0.5.3":"2026-08-28T11:57:26.637Z","0.5.4":"2026-09-14T08:15:20.899Z","0.5.5":"2026-09-16T12:33:01.194Z","0.6.0":"2026-09-18T07:39:40.790Z","0.7.1":"2026-09-18T11:40:03.888Z","0.7.2":"2026-09-18T14:21:07.507Z","0.8.0":"2026-09-22T08:51:19.402Z","0.8.1":"2026-09-23T07:35:16.709Z"},"bugs":{"url":"https://github.com/benchgen-ai/benchgen-openclaw/issues"},"license":"MIT","homepage":"https://github.com/benchgen-ai/benchgen-openclaw#readme","keywords":["openclaw","openclaw-plugin","benchgen","observability","llm","tracing","diagnostics","chat","agent-bridge"],"repository":{"url":"git+https://github.com/benchgen-ai/benchgen-openclaw.git","type":"git"},"description":"Stream OpenClaw agent traces to Benchgen and let Benchgen chat with the agent","maintainers":[{"name":"spel","email":"spelonema@gmail.com"}],"readme":"<h1 align=\"center\" style=\"border-bottom: none\">\n  <div>\n    <a href=\"https://benchgen.com\">\n      <img alt=\"Benchgen logo\" src=\"benchgen-screenshot.jpg\" width=\"720\" />\n    </a>\n    <br />\n    🔭 OpenClaw Benchgen Observability Plugin\n  </div>\n</h1>\n\n<p align=\"center\">\n  Stream <a href=\"https://github.com/openclaw/openclaw\">OpenClaw</a> agent traces to <br/>\n  <a href=\"https://benchgen.com\">Benchgen</a> for observability and training-data capture,<br/>\n  and let Benchgen chat with your agent.\n</p>\n\n<div align=\"center\">\n\n[![License](https://img.shields.io/github/license/benchgen-ai/benchgen-openclaw)](./LICENSE)\n[![npm version](https://img.shields.io/npm/v/%40benchgen%2Fbenchgen-openclaw)](https://www.npmjs.com/package/@benchgen/benchgen-openclaw)\n\n</div>\n\n\n## What is new in 0.8.1\n\nThe shell environment of a Benchgen chat turn now also carries who is asking:\n`BENCHGEN_USER_ID` (the platform account, as the relay's headers name it) and\n`BENCHGEN_USER_NAME`, next to `BENCHGEN_API_URL` and `BENCHGEN_API_TOKEN`. A\nskill that reads data of several users (harness-improve over the agent's own\ntraces) scopes itself by them; they never pass through the model, so a prompt\ncannot rename the caller.\n\n## What is new in 0.8.0\n\nQuestions with options become buttons. When the agent calls OpenClaw's\n`ask_user` tool in a Benchgen chat session, the plugin sends the question and\nits options to Benchgen as a `choices` frame (`{questions: [{id, header,\nquestion, options: [{label, description?}], multiSelect}]}`), and Benchgen's\nchat draws them as buttons under the reply; a click sends the option's label as\nthe user's next message. The tool call itself is still blocked (the interactive\ncontrol would hang the turn), and the block reason now tells the model that the\noptions are on screen, so it ends its reply with a one-line question that names\nthe options and stops. A Benchgen without button support ignores the frame; the\nmodel's one-line question still arrives. Frames of the `ask_user` call are not step frames.\n\n## What is new in 0.7.2\n\nStep frames on every OpenClaw version. Benchgen shows what the agent is doing\n(\"Launching the benchmark run\") from `tool.start` frames, but they relied on the\nhost's `onToolStart` reply option, which OpenClaw 2026.9 does not call, so no\nstep ever arrived. Tool starts are now reported from the `before_tool_call`\nhook, which fires on every version; a host that also calls `onToolStart` is\nde-duplicated. A step frame now carries only a shell tool's command, never the\nwhole parameter object: the exec tool's parameters get the user's API credential\ninjected as environment, and other tools' arguments have no reason to leave the\ngateway.\n\n## What is new in 0.7.1\n\nTurn heartbeat. Benchgen drops a chat turn after 5 minutes without a frame\n(\"The agent went quiet mid-turn\"), and a healthy turn can be silent for longer:\none long tool call, or the model writing a large file, emits nothing until it\ncompletes. The plugin now sends a `turn.progress` frame once a minute between\n`turn.started` and `turn.done`. It carries no text and needs no change on the\nBenchgen side. The relay's hard cap of 15 minutes per turn still applies.\n\n## What is new in 0.7.0\n\nPrivate data guard. One gateway can serve the public BenchGen platform chat\nand a private team channel while internal files sit on the same disk. List the\nprivate locations in `privateData.paths` (or `BENCHGEN_PRIVATE_PATHS`) and the\nsessions that may read them in `privateData.allowSessions` (or\n`BENCHGEN_PRIVATE_ALLOW_SESSIONS`): fragments of the session key, such as a\nTelegram group id or `agent:main:main`. Every other session, platform chat\nincluded, gets the tool call refused, and the log names the session key. It\nis deny by default and it is a guard rail, not a sandbox: it matches the\nliteral path in the tool parameters, so it stops ordinary requests, not a\ndetermined attacker. Hostile users need a separate gateway.\n\n## What is new in 0.6.0\n\nTrace mirror. A gateway can send a copy of every trace to a second Benchgen\nproject, on top of its own: set `mirror.publicKey` and `mirror.secretKey`\n(or `BENCHGEN_MIRROR_PUBLIC_KEY` / `BENCHGEN_MIRROR_SECRET_KEY`). The mirror\ninherits the primary endpoint unless `mirror.baseUrl` says otherwise, and\n`mirror.environment` (for example `dev`) is stamped on the mirrored copy\nonly, so those traces stay recognisable inside the mirror project. Chat is\nnot mirrored. A mirror that points at the primary project is refused, and\n`openclaw benchgen show` prints the effective mirror.\n\n## What is new in 0.5.3\n\n- Per-turn usage for Benchgen's accounting. LiteLLM knows what the gateway spent but not\n  for whom (one key for every user), so the plugin now sums the `model.usage` events of a\n  turn (`usage.js`, fed by the tracer) and sends a `turn.usage` frame on the relay a moment\n  after `turn.done` (`usageSettleMs`, 1500 ms, so the last usage event of the turn is\n  counted): `{conversationId, messageId, sessionKey, agentId, status, sender, usage:\n  {calls, inputTokens, outputTokens, totalTokens, cacheReadTokens, costUsd, model},\n  toolCalls, durationMs}`. Benchgen stores one row per turn and shows turns and tokens per\n  platform user on Administration > Usage. The HTTP endpoint (SSE) does not get the frame,\n  its response is over by then. Token numbers need the model entry to report usage\n  (`compat.supportsUsageInStreaming: true` for a hand-declared LiteLLM model, see 0.5.0).\n\n- The user's platform API credential for the agent's skills. Benchgen's relay may send\n  `auth: { token, apiBase }` with a `message` frame (platform agents only): the token of\n  the user behind the turn and the API root it is good for. The chat bridge keeps it per\n  session key (`authOf`) and a `before_tool_call` hook adds it to every `exec`/`bash` tool\n  call of that session as environment variables, `BENCHGEN_API_URL` and\n  `BENCHGEN_API_TOKEN`, so a skill does `curl -H \"Authorization: Token $BENCHGEN_API_TOKEN\"\n  \"$BENCHGEN_API_URL/submissions/?mine=true\"`. It is never prompt text: no session\n  transcript, trace or model request carries it, and a value the model itself puts into\n  `env` is overridden. A turn without the field clears the previous credential; hosts\n  without `api.on` run without it. Needs the same `hooks.allowConversationAccess` entry as\n  the context block (0.5.0 below).\n\n- Fix: the context block never reached the prompt. OpenClaw 2026.7.2 registers a\n  plugin once per instance in the same gateway process (gateway + pre-warmed agent\n  runtime), and `before_prompt_build` fires in the runtime instance, which has no chat\n  bridge. The per-session blocks now live in a process-global store (`Symbol.for` key)\n  written by the turn runner and read by the hook through `contextForSession`.\n\n## What is new in 0.5.0\n\n- The platform's per-user context block. Benchgen's relay may send `context` with a\n  `message` frame (platform agents only): a short text block with the user's name,\n  credits and their recent datasets, benchmark runs, training jobs and agents. The\n  chat bridge keeps it per session key (`contextOf`) and a `before_prompt_build` hook\n  puts it into the system context of that turn as `prependSystemContext`, so it never\n  lands in the session history or in the user message the model router routes on.\n  Hosts without `api.on` (before 2026.7.2) run without the block. Capped at 8000\n  characters; a turn without the field clears the previous block.\n  Operators: OpenClaw builds that gate typed hooks (the npm `2026.7.2-beta.*` and\n  `2026.8.*` lines) block `before_prompt_build` for a non-bundled plugin and log\n  `typed hook \"before_prompt_build\" blocked` unless the plugin entry allows it:\n\n  ```json\n  \"plugins\": { \"entries\": { \"benchgen\": {\n    \"hooks\": { \"allowConversationAccess\": true, \"allowPromptInjection\": true }\n  } } }\n  ```\n\n- Token usage on generations comes from OpenClaw's `model.usage` event, which the host\n  emits only when the provider returned usage. For a model declared by hand under an\n  OpenAI-compatible provider (LiteLLM, a router) set\n  `compat.supportsUsageInStreaming: true` on the entry, otherwise OpenClaw sends no\n  `stream_options.include_usage`, the stream carries no usage, and the trace shows a\n  generation with `usageReported: false` and zero tokens.\n\n## What is new in 0.4.0\n\nChat turns that arrive through the BenchGen relay now carry the person on the\ntrace: Langfuse `userId` is the BenchGen account (the relay sends the platform\nemail as the sender id), `sessionId` is the BenchGen chat, and the display name\nsits in the trace metadata as `user_name`. Runs without a person (cron, heartbeat,\nCLI) keep the OpenClaw agent id in `userId`, as before. Nothing to configure.\n\n## Why This Plugin\n\nThe plugin runs inside the OpenClaw Gateway process. It subscribes to the\ndiagnostics event stream and turns each conversation turn into one nested trace\n(model calls, tool executions, and retrieval steps) grouped by session. Those\ntraces flow to your Benchgen project, where they can be viewed and exported for\nanalysis, SFT, and RL fine-tuning.\n\n`@benchgen/benchgen-openclaw` adds native Benchgen tracing for OpenClaw runs:\n\n- LLM request/response spans (with token usage and cost)\n- Tool call spans with inputs, outputs, and errors\n- Retrieval / search spans\n- Run-level metadata, grouped by OpenClaw session\n\nPrompt, response, and tool I/O text are recovered best-effort from the\nper-session trajectory transcript, since message content is not delivered over\nthe public diagnostics bus.\n\nThe same plugin also connects the agent to Benchgen for **chat**: Benchgen can\nsend messages to the agent and receive its replies (streamed), through an\noutbound WebSocket the plugin keeps open (works behind NAT) or through a direct\n`POST /benchgen/chat` on the gateway. Chat turns are ordinary agent turns, so\nthey are traced like everything else. See [Chat with Benchgen](#chat-with-benchgen).\n\nIf your gateway is remote, install and configure the plugin on that host.\n\n## Install and first run\n\nPrerequisites:\n\n- OpenClaw `>=2026.6.1` for traces; `>=2026.7.2` for chat (the chat bridge needs\n  `api.runtime.channel.inbound.dispatch`, which `2026.7.1` does not expose; the\n  plugin logs this and keeps streaming traces)\n- Node.js `>=22.12.0`\n\n### 1. Install the plugin in OpenClaw\n\n```bash\nopenclaw plugins install @benchgen/benchgen-openclaw\n```\n\nIf the Gateway is already running, restart it after install.\n\n### 2. Configure the plugin\n\n```bash\nopenclaw benchgen configure\n```\n\nPaste the agent's **public key** and **secret key** from the Observability card\non its Benchgen page. The wizard verifies the keys against the ingest endpoint,\nasks whether Benchgen may chat with the agent (default: yes) and for the chat\nrelay URL (the card's `BENCHGEN_CHAT_URL`; Enter keeps the built-in default,\nwhich is the production relay), and writes it all into your OpenClaw config, no\nmanual JSON editing. Restart the gateway to apply.\n\n### 3. Check effective settings\n\n```bash\nopenclaw benchgen status\n```\n\n### 4. Send a test message\n\n```bash\nopenclaw gateway run\nopenclaw message send \"hello from openclaw\"\n```\n\nThen confirm traces in your Benchgen project.\n\n## Configuration\n\n### Recommended config shape\n\n```json\n{\n  \"plugins\": {\n    \"entries\": {\n      \"benchgen\": {\n        \"enabled\": true,\n        \"config\": {\n          \"enabled\": true,\n          \"publicKey\": \"pk-your-public-key\",\n          \"secretKey\": \"sk-your-secret-key\",\n          \"baseUrl\": \"https://traces.benchgen.com\",\n          \"chat\": {\n            \"enabled\": true,\n            \"sessionScope\": \"conversation\"\n          },\n          \"mirror\": {\n            \"publicKey\": \"pk-second-project\",\n            \"secretKey\": \"sk-second-project\",\n            \"environment\": \"dev\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n`mirror` is optional: leave it out and traces go to the primary project only.\n\nChat keys (all optional, under `config.chat`):\n\n| Key | Description | Default |\n| --- | --- | --- |\n| `enabled` | Chat bridge on/off (relay + gateway endpoint) | `true` |\n| `relay` | Keep an outbound WebSocket to Benchgen so it can reach this gateway behind NAT | `true` |\n| `url` | Relay WebSocket URL; the agent page's Observability card shows the one for your BenchGen environment (`BENCHGEN_CHAT_URL`); `configure` asks for it | `wss://benchgen.com/api/public/openclaw/chat` |\n| `httpEndpoint` | Serve `POST /benchgen/chat` on the gateway port | `true` |\n| `sessionScope` | `\"conversation\"`: one agent session per Benchgen conversation; `\"main\"`: the agent's main session | `\"conversation\"` |\n| `agentId` | Agent that answers when the message names none | routed/default agent |\n\nMirror keys (all optional, under `config.mirror`):\n\n| Key | Description | Default |\n| --- | --- | --- |\n| `enabled` | Mirror on/off | `true` when both keys are set |\n| `publicKey` | Public key of the second project (`BENCHGEN_MIRROR_PUBLIC_KEY`) | none (no mirror) |\n| `secretKey` | Secret key of the second project (`BENCHGEN_MIRROR_SECRET_KEY`) | none (no mirror) |\n| `baseUrl` | Ingest endpoint of the second project (`BENCHGEN_MIRROR_BASE_URL`) | the primary `baseUrl` |\n| `environment` | Label stamped on the mirrored copy only (`BENCHGEN_MIRROR_ENVIRONMENT`) | none |\n\nPrivate data keys (all optional, under `config.privateData`):\n\n| Key | Description | Default |\n| --- | --- | --- |\n| `paths` | Path prefixes only allowed sessions may touch (`BENCHGEN_PRIVATE_PATHS`, comma separated) | none (guard off) |\n| `allowSessions` | Session key fragments that may touch them (`BENCHGEN_PRIVATE_ALLOW_SESSIONS`, comma separated) | none (everyone refused) |\n\n### Environment fallbacks\n\nSet these before starting the gateway; they are used as fallbacks when no\nconfig keys are present:\n\n| Variable | Description | Default |\n| --- | --- | --- |\n| `BENCHGEN_PUBLIC_KEY` | Project public key | none (required) |\n| `BENCHGEN_SECRET_KEY` | Project secret key | none (required) |\n| `BENCHGEN_BASE_URL` | Ingest endpoint | `https://traces.benchgen.com` |\n| `BENCHGEN_CHAT_URL` | Chat relay WebSocket URL | `wss://benchgen.com/api/public/openclaw/chat` |\n| `BENCHGEN_CHAT_ENABLED` | `false` turns the chat bridge off | `true` |\n| `BENCHGEN_MIRROR_PUBLIC_KEY` | Mirror project public key | none (no mirror) |\n| `BENCHGEN_MIRROR_SECRET_KEY` | Mirror project secret key | none (no mirror) |\n| `BENCHGEN_MIRROR_BASE_URL` | Mirror ingest endpoint | the primary endpoint |\n| `BENCHGEN_MIRROR_ENVIRONMENT` | Environment label on mirrored traces | none |\n| `BENCHGEN_PRIVATE_PATHS` | Comma separated private path prefixes | none (guard off) |\n| `BENCHGEN_PRIVATE_ALLOW_SESSIONS` | Comma separated session key fragments allowed to read them | none |\n\n\nConfig precedence: `plugins.entries.benchgen.config` → environment variable →\nbuilt-in default.\n\n## Event mapping\n\n| OpenClaw event | Benchgen entity | Notes |\n| --- | --- | --- |\n| `run.started` | trace start | starts the nested run trace for a session |\n| `context.assembled` | span | records assembled context for the turn |\n| `model.usage` | generation span | writes model output, usage, and cost |\n| `model.call.error` | generation span (error) | closes the span with error details |\n| `tool.execution.started` | tool/retriever span start | captures tool name + input |\n| `tool.execution.completed` | tool/retriever span end | captures output + duration |\n| `tool.execution.error` | tool/retriever span end (error) | captures error + duration |\n| `tool.execution.blocked` | tool/retriever span end (blocked) | captures blocked reason |\n| `run.completed` | trace finalize | closes pending spans and the trace |\n\n## Chat with Benchgen\n\n### What it does\n\nBenchgen sends a message → the plugin runs it as a normal turn of your OpenClaw\nagent (same system prompt, tools, session store and permissions as any channel)\n→ the reply streams back to Benchgen. Two transports, same behavior:\n\n| Transport | Direction | When to use |\n| --- | --- | --- |\n| **Relay** (default on) | plugin → Benchgen, outbound WebSocket, kept alive with reconnect + pings | Always works: the gateway connects out, so it can sit behind NAT / docker / a firewall. |\n| **HTTP endpoint** (default on) | Benchgen → gateway, `POST /benchgen/chat` on the gateway port | When Benchgen can reach the gateway directly; also handy for local testing with `curl`. |\n\nChat turns run under channel `benchgen`. With `sessionScope: \"conversation\"`\neach Benchgen conversation gets its own agent session,\n`agent:<agentId>:benchgen:direct:<conversationId>`, so parallel chats never\nshare context and every turn is traced with that session key and the tag\n`benchgen-chat`; Benchgen matches a chat to its trace by session key.\n\nThe keys that authorize trace ingest are also what authorize chat: the plugin\nauthenticates to the relay with `Authorization: Basic base64(publicKey:secretKey)`,\nand the HTTP endpoint accepts the same header (or `Bearer <secretKey>`). Anyone\nholding the project keys can talk to the agent; set `chat.enabled: false` if\nthat is not wanted.\n\n### Quick check with curl (HTTP endpoint)\n\n```bash\ncurl -sS http://127.0.0.1:18789/benchgen/chat \\\n  -u \"pk-your-public-key:sk-your-secret-key\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"conversationId\":\"demo-1\",\"text\":\"hello from benchgen\"}'\n```\n\n```json\n{\n  \"ok\": true,\n  \"conversationId\": \"demo-1\",\n  \"messageId\": \"…\",\n  \"status\": \"ok\",\n  \"sessionKey\": \"agent:main:benchgen:direct:demo-1\",\n  \"agentId\": \"main\",\n  \"text\": \"Hi! …\",\n  \"replies\": [{ \"text\": \"Hi! …\", \"kind\": \"final\" }]\n}\n```\n\nAdd `-H 'Accept: text/event-stream'` (or `\"stream\": true` in the body) to get\nthe reply as it is produced; the SSE events are the frames described below.\n`GET /benchgen/chat` (same auth) returns the bridge status, including whether\nthe relay is currently connected.\n\n### Chat protocol (relay), version 1\n\nThe plugin opens `chat.url` with headers `Authorization: Basic …`,\n`x-benchgen-plugin: benchgen-openclaw/<version>` and `x-benchgen-protocol: 1`,\nand repeats the keys inside the first frame (`hello.auth`); relays that cannot\nread upgrade headers authenticate from there; a relay ignores every other frame\nuntil a valid `hello` has arrived. All frames are JSON text; every\nplugin→Benchgen frame carries `ts` (epoch ms).\n\n**Plugin → Benchgen**\n\n| `type` | Fields | Meaning |\n| --- | --- | --- |\n| `hello` | `protocol`, `auth{publicKey,secretKey}`, `plugin{name,version}`, `host{openclawVersion}`, `agents[{id,default}]`, `capabilities[]` | Sent first on every (re)connect; nothing else is sent before it. |\n| `turn.started` | `conversationId`, `messageId`, `sessionKey`, `agentId` | The message was accepted and the agent is running. |\n| `reply.partial` | `conversationId`, `messageId`, `text`, `delta?`, `replace?` | Streaming: `text` is the reply-in-progress so far. |\n| `tool.start` | `conversationId`, `messageId`, `name`, `args?` | The agent started a tool call. |\n| `choices` | `conversationId`, `messageId`, `questions[{id, header, question, options[{label, description?}], multiSelect}]` | The agent asked a question with options (`ask_user`); draw them as buttons and send the picked label as the next user message. |\n| `reply` | `conversationId`, `messageId`, `text`, `kind` (`block` \\| `final` \\| `tool`), `mediaUrls?` | A delivered reply message. A turn may deliver several. |\n| `turn.done` | `conversationId`, `messageId`, `status` (`ok` \\| `error` \\| `dropped`), `error?`, `reason?`, `sessionKey`, `agentId`, `replies{tool,block,final}` | Always the last frame of a turn. |\n| `pong` | none | Answer to a `ping`. |\n\n**Benchgen → plugin**\n\n| `type` | Fields | Meaning |\n| --- | --- | --- |\n| `message` | `conversationId` (recommended), `messageId?`, `text` (required), `sender?{id,name}`, `agentId?`, `timestamp?` | Run one turn. Missing ids are generated and echoed back. |\n| `ping` | none | Liveness; the plugin answers `pong`. The plugin also sends WebSocket ping frames itself. |\n| `hello.ack` | `protocol`, `agentId` (BenchGen agent id), `chat{connected,disabled}` | Informational answer to `hello`. |\n| `chat.status` | `connected`, `skipped?`, `error?` | Informational: whether BenchGen (auto-)connected this agent for chat after the hello. |\n\nThe relay closes with `4401` for unknown keys, `4403` for revoked keys, `4408`\nwhen no valid `hello` arrives, and `4409` when a newer socket with the same\nkeys supersedes this one (the plugin reconnects with backoff in every case).\n\nUnknown frame types are ignored. An invalid `message` gets a `turn.done` with\n`status: \"error\"` and the reason. Turns are serialized per `conversationId` and\nrun in parallel across conversations. Frames produced while the relay is\ndisconnected are queued (bounded) and flushed on reconnect.\n\n## How it works\n\nThe plugin runs its trace pipeline on a dedicated, isolated OpenTelemetry\nprovider so it never interferes with OpenClaw's own telemetry. Traces are\nbuffered and flushed in the background, and an idle reaper closes any\nobservations orphaned by dropped events. On shutdown, in-flight traces are\nflushed before the provider is torn down.\n\nChat uses the host's public plugin runtime (`api.runtime.channel.inbound.dispatch`\nand friends, the same entry point OpenClaw's bundled channels use), so no\nOpenClaw core changes are needed and the turn is indistinguishable from one\nthat arrived over Telegram or WebChat. On hosts whose SDK lacks that surface\nthe plugin logs which piece is missing and keeps streaming traces.\n\n## Known limitations\n\nNo OpenClaw core changes are included in this repository and relies on native\nhooks within the OpenClaw ecosystem.\n\nChat: `benchgen` is not a registered OpenClaw channel plugin: it dispatches\nturns through the runtime but has no outbound adapter. So the agent answers\nBenchgen inside a turn, but cannot message Benchgen on its own (heartbeats,\ncron, the `message` tool), and `openclaw channels status` does not list it.\nSlash commands sent from Benchgen run without operator authority.\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}