{"_id":"@loongsuite/otel-util-genai","_rev":"16-2eb69c3650203ab59cbed5866ce6e964","name":"@loongsuite/otel-util-genai","dist-tags":{"beta":"0.1.0-beta.13","latest":"0.1.1"},"versions":{"0.1.0-beta.0":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.0","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.0","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"b9c6e560b40e085e86fa47b319522c1c1e67a4c4","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.0.tgz","fileCount":103,"integrity":"sha512-DLJAEm0jbU4LgBXeQlBTvrnu0AfhtC2TqcJ030HbhexrQoB9TdMgIoMY+2zO26dqqwKdDWXjFEKjdlaKjDugfg==","signatures":[{"sig":"MEUCIHliC/e+fsB9qYilXPAwNuoQQxdb7wG03kf+yAHwWsplAiEAmUobEqOsDJ49qX8bdeLPo4Lvp2ojtVA/hDcfmIIH75A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":330021},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.0_1779889213593_0.6075319001526545","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.1":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.1","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.1","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"9d5f928976f2f4a7251d8499ff9493917933a1c7","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.1.tgz","fileCount":103,"integrity":"sha512-wCSok+o4/z2VHLgdRGgMwFCOZ+MHPMdyA+9XtNc4owniwXoSt0k1Rw0WJsShc/bxYC20Owgb5cz42IAOKZl8rQ==","signatures":[{"sig":"MEQCIA3QemefDOnmAZ7CTdXfpPugJWEZGnNBS+weC4AOC5DZAiABRE+1zgvOh4HXXNoBsugmU8R4jR1cCuTvjlGCELPM6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":341239},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.1_1779939687795_0.9807446456189612","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.2":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.2","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.2","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"bc5bf1d7f352890487a59499921d5a8dab29ffb9","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.2.tgz","fileCount":103,"integrity":"sha512-OB9UkGZFlInZOkdoiwLhIZj3m/BRtzvN4YY+ZCEuAS2eB/g01fx4X7EmNXO87hsdyStfnIVikPs5wLZvy7ut4g==","signatures":[{"sig":"MEQCIB9QCs0qsfnrQGCyRCjzxZ2AUS0Xyp7J4IAqh8AVRWTjAiBV1e1EYWyLlwpsFcrIrK9YUfaYtzC1w6cr78HUm7dRdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352992},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.2_1780301215639_0.2026439017386894","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.3":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.3","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.3","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"fb68a99e638ff612388b0269c96d7933f55b0b08","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.3.tgz","fileCount":103,"integrity":"sha512-SzjI28ohrz1vGiu5dIirKxPQEtAZ6iE9GDnZKFyfxY3YyewSEB2LGNGAqsgLY7J27s6uv4nB0JoeuYWnufo0UQ==","signatures":[{"sig":"MEUCIQCLSCa0rV4Zc5L5oOFOXwFlQBn7kMTbUKiPB2sftNJ4lwIgd7XM0nrOhy24K3xmKkVHYUkZrDX2QHEBVCD7xVibBk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353623},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.3_1780304228134_0.9229177283463732","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.4":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.4","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.4","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"bfa237d387e56327aad36c762f9e570ff3572872","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.4.tgz","fileCount":103,"integrity":"sha512-PnIHRbl/EyI1unO2JoWjL2PY2ZGwXw7/XNOIkp6LytbC5+ro/GscS7t2pxAh3S7PF/iru+yLmTmcxp+B2RQd8w==","signatures":[{"sig":"MEYCIQDnXDmF1zc1ZNBEzmXouqvSr/qZQRdN4Z0MXn57FOkB1AIhAP1U47HQXA/uykKD6eDZV4XCneUNX3mIPD05rgtYJ2dC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":354633},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.4_1780579635736_0.4772571563717303","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.5":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.5","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.5","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"3382830e90be6f05622b76959778610a1baff6ae","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.5.tgz","fileCount":103,"integrity":"sha512-kQqW49LIdTPI/oRqit7/fXC80V6vtAmuituvd5dGCCshS3EnVwM6SNfB05BNb8ughcRyeMdOgwGFmHgA2OOLAg==","signatures":[{"sig":"MEUCIAkrNLP8XjUlRtY7Hx8z6m3Lg/rvab5Mmjh6pU2azFzyAiEAz96LvH/7UnAFmATuytXmyL8Qum++Y6QD35rAgC5iaTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":359863},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.5_1780993315251_0.7494200979368801","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.6":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.6","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.6","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"83b9c84d6696ba648651036c750c889c777770ff","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.6.tgz","fileCount":103,"integrity":"sha512-cyqRI2mK5BPO/UInanQrtaIhA8fmm4ebzEbXxYJeNRs3QziscZHX5TQWzEiW6xgtWdabs0Y+grcLCyeds+Qypg==","signatures":[{"sig":"MEUCIAOw0B3Gqa/Qzr2XU+ozYEMuKhlNALTuKGKJ8ZWAQBkDAiEA89bqjMASEigi7mhzrzf6yvvcQ6kOCC+3FeCLY3JNdAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363916},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.6_1781611878949_0.40808404350450767","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.7":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.7","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.7","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"9863c0d55283e6b2fe6c76b83bda856b72e87956","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.7.tgz","fileCount":103,"integrity":"sha512-0piH4ENgkvXR4jCVTcotdI9ty/S+O1L2otkuefqNYieo0q0/lTLF+xwDSX6sCBaYOU3qEGwjPznbRTfvgDyUdw==","signatures":[{"sig":"MEUCIQCN/9/rFtg2Txk9vOTzbHjhnfjRx5qbyKLBHy0XKvnUKAIgeMDcJzZGY8iHTMy3P5ojuflsl7EXtV74sY+IkutOKj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":364825},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.7_1782290532578_0.8050221024730655","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.8":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.8","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.8","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"c4f84346531cd66d5b3027d7ceca5bf4b00e2ccf","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.8.tgz","fileCount":103,"integrity":"sha512-YQdBxoVBGyU6MMbnp14i3D5H3R0+uPFe/3z18DQo26EL1TtMgILTcLtq27Vf751duKZRa9Uw7gu0rss6W0+PVA==","signatures":[{"sig":"MEUCIBRTDLzaqJxUiH/b4CaT5+Prv+BaJWeD1qLS6irla/85AiEA2Q1DC2qMm/3wnI8M3xFlRXWS43fDthcJYalTovYEeDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":365388},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.8_1782293656963_0.13264775496677084","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.9":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.9","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.9","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js-plugins/issues"},"dist":{"shasum":"56170c282e3d2e441ecefb4c3433845cbe525f66","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.9.tgz","fileCount":103,"integrity":"sha512-XbepHcGnhMKJh1gqee0zxkliE5fI+kSy3TCWjpSzgnwKEECy2hz+KoyxbP6H+CI6TxdUdD8XqY/kR/ZcCBAK6g==","signatures":[{"sig":"MEYCIQD71lDuPgKOcRI6iOPArjhmH0f5YF53Nplt522YxQqqoAIhAO/W3wXdyF2gSEO8hqjeV5jm/jtjXSugTHna1iO4di9V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378120},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5abd032ffe56ea38f0397b1be96ce97a14e03bc","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js-plugins.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.9_1783578075741_0.803361356974758","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.10":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.10","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.10","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js/issues"},"dist":{"shasum":"c37abcc4c3c3046c4551bd8ca421aa5013cea67d","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.10.tgz","fileCount":103,"integrity":"sha512-Bn71zvFXD/9jR7dVs+dfdgFOWaIZoSNjvhfGSWLoZMH3zLjMTJTOlhXY3GYVGnFZ3CCOjtnt89f4IJrgaVEJeA==","signatures":[{"sig":"MEQCIDHefkyGX55sdBxPR9RR36DVEurfTmQo4oWFojcjuJwBAiBgv9bKGf387KUfzwP09dwnC1hUsiCw2DlmM3kAivmxMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385079},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a4970aaec5e9bfdfca3a7375baedee7ebb01d94b","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.10_1784098720771_0.636446391601867","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.11":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.11","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.11","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js/issues"},"dist":{"shasum":"aee142c97d60e7a4536050c78c9a5fc942c22280","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.11.tgz","fileCount":107,"integrity":"sha512-kUbbiwjbMBxDV9rvuza5Jq5YhOThs4LsP1Xpme1iWRFxr63fwodMnTjMZrXFYAdg/dNvFoH7mbCmYV+gorCvDw==","signatures":[{"sig":"MEUCIQCjmhjDZMgILb0tyxiJcuW3Wah6O8Oz5/Llj0Y78TZcrQIgDOl53O62V5iq3O3JMA4Ex9Mi6T7WuUJv1BknB2Hq5gQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425653},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"bfcc26d733ed2fe303d6075b00fada6ee4a24902","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.11_1784624534954_0.7621934787189344","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.12":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.12","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.12","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js/issues"},"dist":{"shasum":"a93d6b681835f79bd9c2964e817481d63999688a","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.12.tgz","fileCount":107,"integrity":"sha512-aRNBWVPEcmbk8njRwqvNxEBicgUip16gnVkoHyOibR5z3ptKUNmMHw86GTeQ81pF1YJN6MsvGwrVyOfsLxs/TQ==","signatures":[{"sig":"MEUCIETMLNNLebxdcON/aj5G5sKU9xyjZ4D+nK3rJ6gFCycVAiEAuzS5FG2RmD6k1FBRR7LlbxB4tcoHT9T6xzSETAWJKkg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435316},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b384e13f315abe39fb56afbf8fdc9258799ce76a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.12_1784792005252_0.6088875783821379","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.13":{"name":"@loongsuite/otel-util-genai","version":"0.1.0-beta.13","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0-beta.13","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js/issues"},"dist":{"shasum":"d931c9562211907342b6f84e45daf3c7ce32b8f0","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0-beta.13.tgz","fileCount":111,"integrity":"sha512-uOhfykO7iNX9bXINBk0KIMwXjawzAQHw5XrkXh2i2hdUrBQjma6PRleg6hpF0oB6D+XvwhHyK62/b9Qe+KL7rQ==","signatures":[{"sig":"MEQCIHDOSkCv7sVzfjhT8HKifIQC1uaDJIxLumrZ4A5cf8C9AiA+QIWIZO/Nmb2FNmqyxpEu2F2+T+bOAmbqlI/GJ6SFzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":457985},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"872fa529e167bc6c3e6bcafceedd7a52faff9a9f","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0-beta.13_1784797734178_0.2666253685233855","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@loongsuite/otel-util-genai","version":"0.1.0","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"license":"Apache-2.0","_id":"@loongsuite/otel-util-genai@0.1.0","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"homepage":"https://github.com/alibaba/loongsuite-js/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js/issues"},"dist":{"shasum":"289526513ef240c1c3fe0285edebac16ba87930c","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.0.tgz","fileCount":111,"integrity":"sha512-DQCvGSk2ZbJR5aTkPVd1UyT6s5Yz1D7Ng1ttkFH0oMaBoAQUkaU5Qj4t1UPVX+9aadBaQzFs9WKdll0kQxwtwg==","signatures":[{"sig":"MEUCIQCV8VcvjwtKNO260KOjOjejtDHkCZJy7aogALo3Y758/AIgd6TS3NWAj/r03HL5zOFkvAslS7g0DDVsuomiBQ7sfo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462828},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"584d5687f578067e09513c904edd449a7b38bd0e","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"repository":{"url":"git+https://github.com/alibaba/loongsuite-js.git","type":"git","directory":"opentelemetry-util-genai"},"_npmVersion":"11.12.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.3","typescript":"^5.0.0","@types/node":"^20.0.0","@opentelemetry/api":"^1.9.0","@vitest/coverage-v8":"^4.1.3","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/otel-util-genai_0.1.0_1785220220353_0.3937806186295152","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@loongsuite/otel-util-genai","version":"0.1.1","description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","type":"module","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/alibaba/loongsuite-js.git","directory":"opentelemetry-util-genai"},"homepage":"https://github.com/alibaba/loongsuite-js/tree/main/opentelemetry-util-genai#readme","bugs":{"url":"https://github.com/alibaba/loongsuite-js/issues"},"publishConfig":{"access":"public"},"keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","dev":"tsc --watch","clean":"rm -rf dist","prepublishOnly":"npm run build","test":"vitest run","test:coverage":"vitest run --coverage"},"engines":{"node":">=20"},"dependencies":{"@opentelemetry/semantic-conventions":"^1.40.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^1.30.0 || ^2.10.0"},"peerDependenciesMeta":{"@opentelemetry/sdk-trace-base":{"optional":true}},"devDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/sdk-trace-base":"^1.30.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.1.3","typescript":"^5.0.0","vitest":"^4.1.3"},"gitHead":"7a23a2e9f6ff3dfcdfffeb8c1e692fa5380df97f","_id":"@loongsuite/otel-util-genai@0.1.1","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-lkZJ+p7ODJATbIDvcyYJ4xJRIl3gLxzKnwSR8pR5zSV+72GpPJq1GM7vU3S0aoSsAb/9onkBh05TfKhV8wW29w==","shasum":"5ed77b98c165da687b351fa7075e0f9209769925","tarball":"https://registry.npmjs.org/@loongsuite/otel-util-genai/-/otel-util-genai-0.1.1.tgz","fileCount":111,"unpackedSize":463368,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCvoLFFNPxYCu5ct1ysvYmXsADT0rsWOk5X35UzE/jdwgIgSEd1jlIhwRJwh4/GbWvrO98k/rY5FLpGDBxZC3/ujAo="}]},"_npmUser":{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},"directories":{},"maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/otel-util-genai_0.1.1_1786786377924_0.3473535774396357"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-27T13:40:13.401Z","modified":"2026-08-15T09:32:58.263Z","0.1.0-beta.0":"2026-05-27T13:40:13.787Z","0.1.0-beta.1":"2026-05-28T03:41:27.937Z","0.1.0-beta.2":"2026-06-01T08:06:55.801Z","0.1.0-beta.3":"2026-06-01T08:57:08.265Z","0.1.0-beta.4":"2026-06-04T13:27:15.879Z","0.1.0-beta.5":"2026-06-09T08:21:55.391Z","0.1.0-beta.6":"2026-06-16T12:11:19.097Z","0.1.0-beta.7":"2026-06-24T08:42:12.713Z","0.1.0-beta.8":"2026-06-24T09:34:17.166Z","0.1.0-beta.9":"2026-07-09T06:21:15.891Z","0.1.0-beta.10":"2026-07-15T06:58:40.919Z","0.1.0-beta.11":"2026-07-21T09:02:15.083Z","0.1.0-beta.12":"2026-07-23T07:33:25.404Z","0.1.0-beta.13":"2026-07-23T09:08:54.303Z","0.1.0":"2026-07-28T06:30:20.583Z","0.1.1":"2026-08-15T09:32:58.068Z"},"bugs":{"url":"https://github.com/alibaba/loongsuite-js/issues"},"license":"Apache-2.0","homepage":"https://github.com/alibaba/loongsuite-js/tree/main/opentelemetry-util-genai#readme","keywords":["opentelemetry","otel","genai","llm","agent","observability","tracing","instrumentation","loongsuite"],"repository":{"type":"git","url":"git+https://github.com/alibaba/loongsuite-js.git","directory":"opentelemetry-util-genai"},"description":"OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more","maintainers":[{"name":"fangxiu.wf","email":"fangxiu.wf@alibaba-inc.com"},{"name":"guangli.fj","email":"guangli.fj@alibaba-inc.com"},{"name":"yunjin4","email":"xiashujin.xsj@alibaba-inc.com"}],"readme":"# @loongsuite/otel-util-genai\n\nOpenTelemetry GenAI utility library for Node.js — standardized telemetry collection for Generative AI operations including LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory, Entry, and ReAct Step.\n\nThis is the Node.js equivalent of the Python `opentelemetry-util-genai` package, following the same semantic conventions and API design patterns.\n\n## Installation\n\n```bash\nnpm install @loongsuite/otel-util-genai@0.1.1\n```\n\n## Features\n\n- **LLM (Chat/Completion)**: Track LLM requests with full message content, token usage, and streaming TTFT\n- **Agent**: Create and invoke agents with tool definitions and conversation context\n- **Embedding**: Monitor embedding generation with dimension counts and encoding formats\n- **Tool Execution**: Trace tool calls with arguments and results\n- **Retrieval**: Observe document retrieval from vector stores with query and results\n- **Rerank**: Track document reranking operations with scoring details\n- **Memory**: Record memory operations (add, search, update, delete, etc.)\n- **Entry**: Mark AI application system entry points with session/user context\n- **ReAct Step**: Track individual Reasoning-Acting iterations in agents\n\n## Quick Start\n\n### Using TelemetryHandler (LLM only)\n\n```typescript\nimport {\n  TelemetryHandler,\n  createLLMInvocation,\n} from \"@loongsuite/otel-util-genai\";\n\nconst handler = new TelemetryHandler();\n\n// Callback pattern (recommended)\nawait handler.llm(\n  createLLMInvocation({\n    requestModel: \"gpt-4\",\n    provider: \"openai\",\n    inputMessages: [\n      { role: \"user\", parts: [{ type: \"text\", content: \"Hello!\" }] },\n    ],\n  }),\n  async (inv) => {\n    // Call your LLM API here...\n    inv.outputMessages = [\n      {\n        role: \"assistant\",\n        parts: [{ type: \"text\", content: \"Hi there!\" }],\n        finishReason: \"stop\",\n      },\n    ];\n    inv.inputTokens = 5;\n    inv.outputTokens = 10;\n  },\n);\n\n// Or manual start/stop pattern\nconst inv = createLLMInvocation({ requestModel: \"gpt-4\", provider: \"openai\" });\nhandler.startLlm(inv);\ntry {\n  // Call your LLM API...\n  inv.inputTokens = 5;\n  inv.outputTokens = 10;\n  handler.stopLlm(inv);\n} catch (err) {\n  handler.failLlm(inv, {\n    message: String(err),\n    type: err instanceof Error ? err.constructor.name : \"Error\",\n  });\n}\n```\n\n### Using ExtendedTelemetryHandler (All operations)\n\n```typescript\nimport {\n  ExtendedTelemetryHandler,\n  createEmbeddingInvocation,\n  createRetrievalInvocation,\n  createInvokeAgentInvocation,\n  createMemoryInvocation,\n} from \"@loongsuite/otel-util-genai\";\n\nconst handler = new ExtendedTelemetryHandler();\n\n// Embedding\nhandler.embedding(\n  createEmbeddingInvocation(\"text-embedding-3-small\"),\n  (inv) => {\n    inv.inputTokens = 100;\n    inv.dimensionCount = 1536;\n  },\n);\n\n// Retrieval\nhandler.retrieval(\n  createRetrievalInvocation({ dataSourceId: \"my_vector_store\", topK: 5 }),\n  (inv) => {\n    inv.documents = [\n      { id: \"doc1\", score: 0.95, content: \"...\" },\n      { id: \"doc2\", score: 0.87, content: \"...\" },\n    ];\n  },\n);\n\n// Agent\nawait handler.invokeAgent(\n  createInvokeAgentInvocation(\"openai\", { agentName: \"research-agent\" }),\n  async (inv) => {\n    // ... agent invocation\n    inv.inputTokens = 500;\n    inv.outputTokens = 200;\n  },\n);\n\n// Memory\nhandler.memory(createMemoryInvocation(\"search\", { userId: \"user-1\" }), (inv) => {\n  inv.outputMessages = [{ content: \"remembered context\" }];\n});\n```\n\n## Environment Variables\n\n| Variable | Description | Default |\n|---|---|---|\n| `OTEL_SEMCONV_STABILITY_OPT_IN` | Set to `gen_ai_latest_experimental` to enable experimental features | - |\n| `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT` | Content capturing mode: `NO_CONTENT`, `SPAN_ONLY`, `EVENT_ONLY`, `SPAN_AND_EVENT` | `NO_CONTENT` |\n| `OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT` | Whether to emit `gen_ai.client.inference.operation.details` events: `true`/`false` | Based on content mode |\n\n## Multimodal messages\n\nThe TypeScript API uses idiomatic camelCase fields. When message content is\ncaptured, the SDK serializes them with the GenAI message schema names:\n\n```typescript\nconst inputMessages = [\n  {\n    role: \"user\",\n    parts: [\n      { type: \"text\", content: \"Describe this image.\" },\n      {\n        type: \"uri\",\n        mimeType: \"image/jpeg\",\n        modality: \"image\",\n        uri: \"https://example.com/image.jpg\",\n      },\n    ],\n  },\n];\n```\n\nThe resulting `gen_ai.input.messages` JSON uses `mime_type`. File parts\nsimilarly use `file_id` instead of the public `fileId` field.\n\nIn `SPAN_ONLY` and `SPAN_AND_EVENT` modes, URI parts are also summarized\nautomatically in `gen_ai.input.multimodal_metadata` and\n`gen_ai.output.multimodal_metadata`. Only final URI parts are included in\nthese summaries, matching the Python util behavior. Text, Blob, Base64Blob,\nand File parts remain in the message JSON but are not included in the URI\nmetadata summaries.\n\nThis package records telemetry; it does not upload media, convert provider\nfile references, or make model requests. Applications must map the provider's\nactual request and response objects to the corresponding message parts.\n\n## Supported Operation Types\n\n| Operation | Span Kind | `gen_ai.operation.name` | Handler Method |\n|---|---|---|---|\n| LLM Chat | LLM | `chat` | `llm()` / `startLlm()` |\n| Create Agent | AGENT | `create_agent` | `createAgent()` / `startCreateAgent()` |\n| Invoke Agent | AGENT | `invoke_agent` | `invokeAgent()` / `startInvokeAgent()` |\n| Embedding | EMBEDDING | `embeddings` | `embedding()` / `startEmbedding()` |\n| Execute Tool | TOOL | `execute_tool` | `executeTool()` / `startExecuteTool()` |\n| Retrieval | RETRIEVER | `retrieval` | `retrieval()` / `startRetrieval()` |\n| Rerank | RERANKER | `rerank_documents` | `rerank()` / `startRerank()` |\n| Memory | MEMORY | `memory_operation` | `memory()` / `startMemory()` |\n| Entry | ENTRY | `enter` | `entry()` / `startEntry()` |\n| ReAct Step | STEP | `react` | `reactStep()` / `startReactStep()` |\n\n## Semantic Conventions\n\nThis library follows the [OpenTelemetry GenAI Semantic Conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/) with LoongSuite extensions for:\n\n- `gen_ai.span.kind` — Logical span kind classification\n- Extended operation names (`retrieval`, `rerank_documents`, `enter`, `react`)\n- Memory operation attributes (`gen_ai.memory.*`)\n- Cache token usage (`gen_ai.usage.cache_creation.input_tokens`, `gen_ai.usage.cache_read.input_tokens`)\n- Total token calculation (`gen_ai.usage.total_tokens`)\n- Time to first token (`gen_ai.response.time_to_first_token`)\n\n## API Reference\n\n### Core Classes\n\n- **`TelemetryHandler`** — Manages LLM invocation lifecycles with span, metrics, and event emission\n- **`ExtendedTelemetryHandler`** — Extends `TelemetryHandler` with support for all GenAI operation types\n\n### Factory Functions\n\n- `createLLMInvocation(init?)` — Create an LLM invocation with defaults\n- `createEmbeddingInvocation(requestModel, init?)` — Create an embedding invocation\n- `createExecuteToolInvocation(toolName, init?)` — Create a tool execution invocation\n- `createCreateAgentInvocation(provider, init?)` — Create an agent creation invocation\n- `createInvokeAgentInvocation(provider, init?)` — Create an agent invocation\n- `createRetrievalInvocation(init?)` — Create a retrieval invocation\n- `createRerankInvocation(provider, init?)` — Create a rerank invocation\n- `createMemoryInvocation(operation, init?)` — Create a memory invocation\n- `createEntryInvocation(init?)` — Create an entry invocation\n- `createReactStepInvocation(init?)` — Create a ReAct step invocation\n\n### Singleton Accessors\n\n- `getTelemetryHandler(options?)` — Get or create the default `TelemetryHandler`\n- `getExtendedTelemetryHandler(options?)` — Get or create the default `ExtendedTelemetryHandler`\n\n## Event Log → Trace conversion\n\nThe package can convert a flat list of records that follow the\n[loongsuite-pilot AI event schema](https://github.com/alibaba/loongsuite-pilot)\ninto an OTel span tree (`ENTRY → AGENT → STEP → LLM/TOOL`) that satisfies the\nARMS GenAI semantic conventions. This lets agent plugins keep emitting only\nevent logs and delegate trace shape to this SDK.\n\n```ts\nimport { readFileSync } from \"node:fs\";\nimport {\n  BasicTracerProvider,\n  BatchSpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\nimport { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport {\n  ExtendedTelemetryHandler,\n  convertEventLogToTrace,\n} from \"@loongsuite/otel-util-genai\";\n\nconst provider = new BasicTracerProvider({\n  spanProcessors: [new BatchSpanProcessor(new OTLPTraceExporter())],\n});\nconst handler = new ExtendedTelemetryHandler({ tracerProvider: provider });\n\nconst records = JSON.parse(readFileSync(\"turn-events.json\", \"utf-8\"));\nconst { traceIds, spanCount, warnings } = convertEventLogToTrace(records, {\n  handler,\n  strict: false,\n});\nawait provider.forceFlush();\n\nconsole.log(`Exported ${spanCount} spans across ${traceIds.length} traces`);\nif (warnings.length) console.warn(warnings);\n```\n\n### Helper: returning `ReadableSpan[]` directly\n\nIf you don't already own a TracerProvider — for example you're building a\ndownstream pilot/exporter that needs the span data as values to feed into\nyour own `OTLPTraceExporter` — use the helper:\n\n```ts\nimport { convertEventLogToReadableSpans } from \"@loongsuite/otel-util-genai\";\nimport { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-proto\";\n\nconst exporter = new OTLPTraceExporter({ url, headers });\nconst { spans, traceIds, warnings } = await convertEventLogToReadableSpans(records);\nexporter.export(spans, (result) => {\n  if (result.code !== 0) console.error(\"export failed\", result.error);\n});\n```\n\nThe helper internally spins up a private `BasicTracerProvider` +\n`InMemorySpanExporter`, runs the conversion, captures finished spans, and\ntears the provider down. It is never registered globally, so it cannot\npollute the host process's OTel context. Requires\n`@opentelemetry/sdk-trace-base` at runtime (declared as an optional peer\ndep — install it in the consumer package).\n\nThe optional peer supports `@opentelemetry/sdk-trace-base` 1.30.x and\n2.10.x (including later compatible releases within each major range).\n\n### Behavior summary\n\n- Records are grouped by `gen_ai.turn.id` (one OTel trace per turn) then by\n  `gen_ai.step.id` (one STEP span per step).\n- Each `llm.request` + `llm.response` pair becomes one LLM span; each\n  `tool.call` + `tool.result` pair becomes one TOOL span.\n- `trace_id` on the records is honored — generated spans inherit it via a\n  synthetic parent context. If `trace_id` is missing the SDK allocates one.\n- `gen_ai.input.messages_delta` is accumulated across the whole turn to\n  reconstruct full `gen_ai.input.messages` for each LLM span.\n- `gen_ai.usage.total_tokens` prefers the upstream-reported value; it falls\n  back to `input + output` only when the upstream did not provide a usable\n  total (missing, or `0` while input/output are non-zero).\n- `strict: true` throws `EventLogConversionError` on the first issue;\n  otherwise non-fatal problems are returned in `warnings`.\n\n### Passing custom event fields through to spans\n\n`passthroughKeys` is an allowlist of event-log field names to copy verbatim\nonto the generated spans (the field name is used as the span attribute name —\nno renaming). Both `convertEventLogToTrace` and\n`convertEventLogToReadableSpans` accept it.\n\n```ts\nconvertEventLogToTrace(records, {\n  handler,\n  passthroughKeys: [\n    \"deployment.env\",             // turn-level tag → broadcast to every span\n    \"gen_ai.request.temperature\", // per-record → each LLM span gets its own value\n  ],\n});\n```\n\n- **Turn-level**: a field resolved once per turn is written to every span of\n  that turn (ENTRY/AGENT/STEP/LLM/TOOL).\n- **Per-record**: LLM and TOOL spans additionally read the field off their own\n  source records, overriding the turn-level value on collision.\n- **Fill-only**: a pass-through field is only written when the span does not\n  already carry that attribute, so converter-managed attributes (token usage,\n  model, common attributes, ...) are never overwritten. To override those,\n  build the invocation directly and use `invocation.attributes` instead.\n- Prefer listing small scalar fields (env / id / temperature / custom tags);\n  avoid large payload fields such as `gen_ai.input.messages`.\n- Omit `passthroughKeys` to keep behavior unchanged.\n\n### Skill attributes and automatic detection\n\nSkill-related operations reuse existing TOOL spans and are represented by\n`gen_ai.skill.name`, `gen_ai.skill.id`, `gen_ai.skill.version`, and\n`gen_ai.skill.description`; no new Skill span is created. Event-log conversion\ndetects first-class Skill tools by default and recognizes reads, resource\naccess, and script execution from `skills/<name>` paths (including their\ndescendants) in tool-call arguments.\n\n```ts\nconvertEventLogToTrace(records, {\n  handler,\n  skillDetection: {\n    toolNames: [\"Skill\", \"load_skill\", \"read_skill\"],\n    pathHeuristic: true,\n  },\n});\n```\n\nSet `skillDetection: false` to disable inference; explicit\n`gen_ai.skill.*` fields are still preserved. See\n[`docs/skill-support.md`](docs/skill-support.md) for precedence, configuration,\nboundaries, and examples.\n\n### Streaming conversion (`createTurnStreamSession`)\n\n`convertEventLogToTrace` converts a whole turn at once — it must hold every\nrecord of the turn in memory. For **very long turns** (thousands of ReAct steps)\nthis can exhaust memory. `createTurnStreamSession` converts a single turn\n**incrementally**: ENTRY/AGENT are opened on the first `push` and kept open,\neach completed STEP is converted and its child spans exported (and freed) as it\nfinalizes, and ENTRY/AGENT are closed on `end()` with the turn-level aggregates.\nThe live-span and unfinalized-event working set is bounded by the grace window.\nCompact finalized IDs remain O(step count), and accumulated input messages\nremain O(total input size); streaming avoids retaining completed spans and the\nbatch converter's retained O(N²) message snapshots rather than claiming\nconstant memory for arbitrary input content.\n\n```ts\nimport { createTurnStreamSession } from \"@loongsuite/otel-util-genai\";\n\nconst session = createTurnStreamSession({\n  handler,\n  passthroughKeys,\n  // Optional, but authoritative when supplied:\n  traceId,\n  parentSpanId,\n});\nsession.push(batch1); // feed records incrementally (e.g. per poll); complete steps convert now\nsession.push(batch2);\nconst result = session.end(); // close ENTRY/AGENT, flush the last steps\n\n// result: { traceId?, spanCount, lateDroppedRecordCount, warnings }\nif (result.lateDroppedRecordCount > 0) raiseAlarm(result.warnings);\n```\n\n- **One session per turn.** `push`/`end` must be called serially (the session\n  holds mutable state). The batch converter remains the right choice for\n  bounded, already-complete turns.\n- **Trace context must be known before ENTRY starts.** Optional `traceId` and\n  `parentSpanId` constructor options are authoritative. When omitted, the first\n  valid event context observed before the first parent record starts ENTRY is\n  used; otherwise the SDK allocates a trace ID. Context arriving after ENTRY\n  starts cannot re-parent existing spans and produces\n  `LATE_TRACE_CONTEXT_IGNORED`. `parentSpanId` requires `traceId`.\n- **`graceSteps` (default 2)** — look-back window: a step is finalized only once\n  `graceSteps` newer `gen_ai.step.id`s have appeared (or at `end()`). This\n  tolerates bounded out-of-order emission (e.g. a step's trailing `tool.result`\n  sharing the next step's millisecond). Records arriving for an\n  already-finalized step are dropped, counted in `lateDroppedRecordCount`, and\n  reported via a `LATE_STEP_DROP` warning — see `EVENT_LOG_TO_TRACE_SPEC.md`\n  §2.5 for the ordering expectation this places on producers.\n- Subagent records are released when their parent TOOL finalizes. Child records\n  arriving later are dropped with `LATE_SUBAGENT_DROP`; children that never\n  find a parent are dropped at `end()` with `UNMATCHED_SUBAGENT_DROP`.\n- **`session.pendingRecordCount`** — all parent-step, subagent, and user-input\n  records currently retained by the session. Parent-step retention is governed\n  by the grace window, but a single open step may contain many records.\n- The batch `convertEventLogToTrace` is unchanged and shares the same underlying\n  conversion, so both paths produce equivalent spans.\n\n## Examples\n\nThe [Node.js GenAI instrumentation\ndemo](examples/nodejs-genai-util-demo/README.md) includes offline tests, a real\nDashScope tool-calling flow, multimodal and Event Log OTLP export, and a\nseparate ARMS Node.js probe validation application. Credentials and OTLP\nconnection details are supplied only through environment variables.\n\n## License\n\nApache License 2.0\n","readmeFilename":"README.md"}