{"_id":"@auto-genesis/telemetry","_rev":"3-c1350f1b480ca1e361a9c11480dc86cc","name":"@auto-genesis/telemetry","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.0":{"name":"@auto-genesis/telemetry","version":"0.0.0","_id":"@auto-genesis/telemetry@0.0.0","maintainers":[{"name":"muhamed-shahabas-autonomize","email":"muhamed@autonomize.ai"},{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"}],"dist":{"shasum":"8374add2d4c2dceaa10af5f7c0fe098321923ddd","tarball":"https://registry.npmjs.org/@auto-genesis/telemetry/-/telemetry-0.0.0.tgz","fileCount":15,"integrity":"sha512-XiB/lxrLXUeEP32E2Sn0fFCbcjstEXDPp77+61/Fjb2+JXYWOyDKDzEZLJUD2CkTJPNvnPKKn6YRQKv8U1wzfA==","signatures":[{"sig":"MEUCIQDYTqVy20lOn63Dtc+A1mR5pEZnK3ebF9gjZwiZQr8xQwIgVj4hwviJu0wroDPo2h1xHb55CL99FFmCCyQkni0u5Z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230920},"main":"./dist/cjs/index.js","type":"module","_from":"file:auto-genesis-telemetry-0.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./register":{"types":"./dist/register.d.ts","import":"./dist/register.js","default":"./dist/register.js","require":"./dist/register.cjs"}},"scripts":{"build":"tsup","clean":"rimraf --no-glob dist","prebuild":"rimraf --no-glob dist"},"_npmUser":{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"},"_resolved":"/tmp/ca67b3ce239f2f0e9f53c25772ebe273/auto-genesis-telemetry-0.0.0.tgz","_integrity":"sha512-XiB/lxrLXUeEP32E2Sn0fFCbcjstEXDPp77+61/Fjb2+JXYWOyDKDzEZLJUD2CkTJPNvnPKKn6YRQKv8U1wzfA==","_npmVersion":"10.8.2","description":"An Observability SDK for Node.js and Nest.js applications. This SDK provides unified instrumentation for traces, metrics, and logs with automatic context propagation.","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@opentelemetry/api":"^1.7.0","@opentelemetry/api-logs":"^0.48.0","@opentelemetry/sdk-logs":"^0.48.0","@opentelemetry/sdk-node":"^0.54.1","@opentelemetry/resources":"^1.27.0","@opentelemetry/sdk-metrics":"^1.21.0","@opentelemetry/semantic-conventions":"^1.27.0","@opentelemetry/exporter-logs-otlp-proto":"^0.48.0","@opentelemetry/exporter-trace-otlp-proto":"^0.54.1","@opentelemetry/auto-instrumentations-node":"^0.52.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.54.1","@opentelemetry/instrumentation-nestjs-core":"^0.41.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","esbuild":"0.19.5","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.0.0_1738566115256_0.530953051260497","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@auto-genesis/telemetry","version":"0.0.1","_id":"@auto-genesis/telemetry@0.0.1","maintainers":[{"name":"muhamed-shahabas-autonomize","email":"muhamed@autonomize.ai"},{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"}],"dist":{"shasum":"2f002a46dab273fc986df3eff415777df8a8c7cf","tarball":"https://registry.npmjs.org/@auto-genesis/telemetry/-/telemetry-0.0.1.tgz","fileCount":15,"integrity":"sha512-hH0nW/BWtUXJWGr9sS3tgexeldwuroDyfRgptPsA88RLagsH4RJ35sH+sDg1zU5vb7/b6JpaD0Kv1QfjGTTVRA==","signatures":[{"sig":"MEYCIQDwrKtYPkQq2dqC0i3xa1WXn6+PTxbHUS4AL7VclDdd6AIhAMBHAhw6c37uAF5PMI0cd4C25YU37kOKyHSPVwR78kIR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234066},"main":"./dist/cjs/index.js","type":"module","_from":"file:auto-genesis-telemetry-0.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./register":{"types":"./dist/register.d.ts","import":"./dist/register.js","default":"./dist/register.js","require":"./dist/register.cjs"}},"scripts":{"build":"tsup","clean":"rimraf --no-glob dist","prebuild":"rimraf --no-glob dist"},"_npmUser":{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"},"_resolved":"/tmp/2d8b1ad08d3b32fdc79caf4fb39751a4/auto-genesis-telemetry-0.0.1.tgz","_integrity":"sha512-hH0nW/BWtUXJWGr9sS3tgexeldwuroDyfRgptPsA88RLagsH4RJ35sH+sDg1zU5vb7/b6JpaD0Kv1QfjGTTVRA==","_npmVersion":"10.8.2","description":"An Observability SDK for Node.js and Nest.js applications. This SDK provides unified instrumentation for traces, metrics, and logs with automatic context propagation.","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@opentelemetry/api":"^1.7.0","@opentelemetry/api-logs":"^0.48.0","@opentelemetry/sdk-logs":"^0.48.0","@opentelemetry/sdk-node":"^0.54.1","@opentelemetry/resources":"^1.27.0","@opentelemetry/sdk-metrics":"^1.21.0","@opentelemetry/semantic-conventions":"^1.27.0","@opentelemetry/exporter-logs-otlp-proto":"^0.48.0","@opentelemetry/exporter-trace-otlp-proto":"^0.54.1","@opentelemetry/auto-instrumentations-node":"^0.52.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.54.1","@opentelemetry/instrumentation-nestjs-core":"^0.41.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","esbuild":"0.19.5","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.0.1_1738568476384_0.1677592626215132","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@auto-genesis/telemetry","version":"0.1.0","_id":"@auto-genesis/telemetry@0.1.0","maintainers":[{"name":"muhamed-shahabas-autonomize","email":"muhamed@autonomize.ai"},{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"}],"dist":{"shasum":"1cc7f7fabfec1f3064c67ed70575d825b6ecc9be","tarball":"https://registry.npmjs.org/@auto-genesis/telemetry/-/telemetry-0.1.0.tgz","fileCount":15,"integrity":"sha512-xCgSQlriYSDvx90AKwb2y8HGlSjkCDl8uyfvlSz6vzRyyhChRTPgLwpngFaxwL2gI37o5up9ROHpSm8jHh3R1w==","signatures":[{"sig":"MEYCIQC/cOqpYHcsVKzTHwZcD65Jvu7wONJGbcwFv7ya60E+fQIhAIQYCvQj7lKlnhFS0q+OqvoeYwJHNEcZ4N4EFzhdf3D8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234129},"main":"./dist/cjs/index.js","type":"module","_from":"file:auto-genesis-telemetry-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./register":{"types":"./dist/register.d.ts","import":"./dist/register.js","default":"./dist/register.js","require":"./dist/register.cjs"}},"scripts":{"build":"tsup","clean":"rimraf --no-glob dist","prebuild":"rimraf --no-glob dist"},"_npmUser":{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"},"_resolved":"/tmp/057726ee68419d736e18309fad3ac11e/auto-genesis-telemetry-0.1.0.tgz","_integrity":"sha512-xCgSQlriYSDvx90AKwb2y8HGlSjkCDl8uyfvlSz6vzRyyhChRTPgLwpngFaxwL2gI37o5up9ROHpSm8jHh3R1w==","_npmVersion":"10.8.2","description":"An Observability SDK for Node.js and Nest.js applications. This SDK provides unified instrumentation for traces, metrics, and logs with automatic context propagation.","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@opentelemetry/api":"^1.7.0","@opentelemetry/api-logs":"^0.48.0","@opentelemetry/sdk-logs":"^0.48.0","@opentelemetry/sdk-node":"^0.54.1","@opentelemetry/resources":"^1.27.0","@opentelemetry/sdk-metrics":"^1.21.0","@opentelemetry/semantic-conventions":"^1.27.0","@opentelemetry/exporter-logs-otlp-proto":"^0.48.0","@opentelemetry/exporter-trace-otlp-proto":"^0.54.1","@opentelemetry/auto-instrumentations-node":"^0.52.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.54.1","@opentelemetry/instrumentation-nestjs-core":"^0.41.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","esbuild":"0.19.5","ts-node":"^10.9.2","typescript":"^5.7.2","@types/node":"^20.9.0"},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.1.0_1738570251060_0.8585256381608699","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@auto-genesis/telemetry","version":"0.1.1","type":"module","description":"An Observability SDK for Node.js and Nest.js applications. This SDK provides unified instrumentation for traces, metrics, and logs with automatic context propagation.","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./register":{"types":"./dist/register.d.ts","import":"./dist/register.js","require":"./dist/register.cjs","default":"./dist/register.js"}},"main":"./dist/cjs/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@opentelemetry/api":"^1.7.0","@opentelemetry/api-logs":"^0.48.0","@opentelemetry/auto-instrumentations-node":"^0.52.0","@opentelemetry/exporter-logs-otlp-proto":"^0.48.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.54.1","@opentelemetry/exporter-trace-otlp-proto":"^0.54.1","@opentelemetry/instrumentation-nestjs-core":"^0.41.0","@opentelemetry/resources":"^1.27.0","@opentelemetry/sdk-logs":"^0.48.0","@opentelemetry/sdk-metrics":"^1.21.0","@opentelemetry/sdk-node":"^0.54.1","@opentelemetry/semantic-conventions":"^1.27.0"},"devDependencies":{"esbuild":"0.19.5","@types/node":"^20.9.0","ts-node":"^10.9.2","tsup":"^7.2.0","typescript":"^5.7.2"},"scripts":{"prebuild":"rimraf --no-glob dist","build":"tsup","clean":"rimraf --no-glob dist"},"_id":"@auto-genesis/telemetry@0.1.1","_integrity":"sha512-rToOuvp7DmeHh0BQCSNoOJga9tx2tynULf2IwugeXFnHiLle75JD6KkQzcsnLMPI/zxjdcP5GFjQv+pZ/FbpcQ==","_resolved":"/tmp/eb86b1d163c14e0deb943b432fbe106e/auto-genesis-telemetry-0.1.1.tgz","_from":"file:auto-genesis-telemetry-0.1.1.tgz","_nodeVersion":"20.18.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-rToOuvp7DmeHh0BQCSNoOJga9tx2tynULf2IwugeXFnHiLle75JD6KkQzcsnLMPI/zxjdcP5GFjQv+pZ/FbpcQ==","shasum":"2f76d22d2d0e99f36a5c400929bafdf82419a1bd","tarball":"https://registry.npmjs.org/@auto-genesis/telemetry/-/telemetry-0.1.1.tgz","fileCount":15,"unpackedSize":277282,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBJ9VXA3MEfNAU/MZqYuna+9pxftE1oAymjLj/mLgiYmAiEAwXVB+SpRkKDvtMiuEdkoQ2XGP3Zd383lvtfLa3lS1MU="}]},"_npmUser":{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"},"directories":{},"maintainers":[{"name":"muhamed-shahabas-autonomize","email":"muhamed@autonomize.ai"},{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/telemetry_0.1.1_1739869720667_0.2732753586001877"},"_hasShrinkwrap":false}},"time":{"created":"2025-02-03T07:01:55.169Z","modified":"2025-02-18T09:08:41.114Z","0.0.0":"2025-02-03T07:01:55.442Z","0.0.1":"2025-02-03T07:41:16.561Z","0.1.0":"2025-02-03T08:10:51.281Z","0.1.1":"2025-02-18T09:08:40.907Z"},"description":"An Observability SDK for Node.js and Nest.js applications. This SDK provides unified instrumentation for traces, metrics, and logs with automatic context propagation.","maintainers":[{"name":"muhamed-shahabas-autonomize","email":"muhamed@autonomize.ai"},{"name":"autonomizecloud","email":"autonomizecloud@autonomize.ai"}],"readme":"# Autonomize Telemetry (@auto-genesis/telemetry)\n\nA lightweight, easy-to-use OpenTelemetry SDK for Node.js and Nest.js applications. This SDK provides unified instrumentation for traces, metrics, and logs with automatic context propagation and built-in support for popular frameworks.\n\n## Features\n\n### Metrics Collection\n\n- Track custom metrics with counters, histograms, and up/down counters\n- Configurable metric export intervals\n- Pre-configured metric attributes\n- Direct access to OpenTelemetry metrics API\n\n### Distributed Tracing\n\n- Automatic trace context propagation\n- Built-in span creation and management\n- Manual context propagation across services\n- Cross-language trace continuity (JavaScript/Python)\n- Custom attribute support\n- Support for error recording\n- Direct access to OpenTelemetry trace API\n\n### Structured Logging\n\n- Automatic trace correlation\n- Multiple severity levels (INFO, ERROR, WARN, DEBUG)\n- Custom attributes support\n- Error stack trace handling\n\n### Auto-Instrumentation\n\n- Initialization through env setup\n- No code changes required\n- HTTP client and server\n- Express.js framework\n- NestJS core components\n- Custom request hooks\n- Health check endpoint filtering\n\n## Installation\n\n````bash\n# Using npm\nnpm install @auto-genesis/telemetry\n\n# Using yarn\nyarn add @auto-genesis/telemetry\n\n# Using pnpm\npnpm add @auto-genesis/telemetry\n\n## Quick Start\n\n### Auto-Instrumentation\n\nThe SDK supports automatic instrumentation of your Node.js application. To enable it:\n\n1. Set the NODE_OPTIONS environment variable:\n\n```bash\nNODE_OPTIONS=\"--require @auto-genesis/telemetry/register\"\n````\n\n2. Configure your environment variables (see Configuration section)\n\n3. Start your application normally:\n\n```bash\nnode app.js # you start script here\n```\n\n### Manual Initialization\n\nIf you prefer manual control over the SDK initialization:\n\n```typescript\nimport { Telemetry } from '@auto-genesis/telemetry';\n\nconst telemetry = new Telemetry({\n  serviceName: 'my-service',\n  environment: 'production',\n  version: '1.0.0',\n  otlpEndpoint: 'http://otlpendpoint:3000',\n});\n\nawait telemetry.start();\n\n// Your application code here\n\n// On shutdown\nawait telemetry.shutdown();\n```\n\n## Configuration\n\n### TelemetryConfig Options\n\n| Option           | Type   | Required | Default                 | Description                                 |\n| ---------------- | ------ | -------- | ----------------------- | ------------------------------------------- |\n| serviceName      | string | Yes      | -                       | Unique identifier for your service          |\n| environment      | string | Yes      | -                       | Deployment environment (e.g., 'production') |\n| version          | string | No       | undefined               | Service version                             |\n| otlpEndpoint     | string | No       | 'http://localhost:4318' | OpenTelemetry collector endpoint            |\n| metricIntervalMs | number | No       | 5000                    | Metric export interval in milliseconds      |\n\n#### Updated Configuration Options\n\n| Environment Variable             | Description                          | Default Value           | Type    |\n| -------------------------------- | ------------------------------------ | ----------------------- | ------- |\n| TELEMETRY_SERVICE_NAME           | Name of your service                 | 'unknown-service'       | string  |\n| TELEMETRY_SERVICE_VERSION        | Version of your service              | '0.0.0'                 | string  |\n| TELEMETRY_ENVIRONMENT            | Deployment environment               | 'development'           | string  |\n| TELEMETRY_EXPORTER_OTLP_ENDPOINT | OpenTelemetry Collector endpoint     | 'http://localhost:4318' | string  |\n| TELEMETRY_HTTP_ENABLED           | Enable HTTP instrumentation          | true                    | boolean |\n| TELEMETRY_EXPRESS_ENABLED        | Enable Express instrumentation       | true                    | boolean |\n| TELEMETRY_NESTJS_ENABLED         | Enable NestJS instrumentation        | false                   | boolean |\n| TELEMETRY_LOG_LEVEL              | Log level (ERROR, WARN, INFO, DEBUG) | 'INFO'                  | string  |\n| TELEMETRY_METRIC_EXPORT_INTERVAL | Metrics export interval in ms        | 5000                    | number  |\n\n### Example .env file\n\n```env\n# Basic Service Configuration\nTELEMETRY_SERVICE_NAME=my-service\nTELEMETRY_SERVICE_VERSION=1.0.0\nTELEMETRY_ENVIRONMENT=development\n\n# OpenTelemetry Collector Endpoint\nTELEMETRY_EXPORTER_OTLP_ENDPOINT=http://localhost:4318\n\n# Instrumentation Configuration\nTELEMETRY_HTTP_ENABLED=true\nTELEMETRY_EXPRESS_ENABLED=true\nTELEMETRY_NESTJS_ENABLED=true\n\n# Logging Configuration\nTELEMETRY_LOG_LEVEL=INFO\n\n# Metrics Configuration\nTELEMETRY_METRIC_EXPORT_INTERVAL=5000\n```\n\n## Usage Examples\n\n### Metrics (telemetry.metrics)\n\n| Metric Type   | Description            | Usage Example                                |\n| ------------- | ---------------------- | -------------------------------------------- |\n| Counter       | Only increases         | `telemetry.metrics.createCounter(...)`       |\n| Histogram     | Distribution of values | `telemetry.metrics.createHistogram(...)`     |\n| UpDownCounter | Can increase/decrease  | `telemetry.metrics.createUpDownCounter(...)` |\n\n---\n\n```typescript\nimport { Telemetry } from '@auto-genesis/telemetry';\n\nconst telemetry = new Telemetry();\n\n// Create counter\nconst requestCounter = telemetry.metrics.createCounter({\n  name: 'http.requests.total',\n  description: 'Total number of HTTP requests',\n  unit: 'requests',\n});\n\n// Record metrics\nrequestCounter.add(1, { 'http.method': 'GET' });\n\n// Create a histogram (distribution of values)\nconst histogram = telemetry.metrics.createHistogram({\n  name: 'metric_name',\n  description: 'metric description',\n  unit: 'unit',\n});\n\n// Create an up/down counter (can increase/decrease)\nconst upDownCounter = telemetry.metrics.createUpDownCounter({\n  name: 'metric_name',\n  description: 'metric description',\n  unit: 'unit',\n});\n\n// Access OpenTelemetry metrics API\nconst metricsAPI = telemetry.metrics.getMetrics();\n```\n\n### Tracing (telemetry.tracing)\n\n```typescript\nimport { Telemetry } from '@auto-genesis/telemetry';\n\nconst telemetry = new Telemetry();\n\n// Access OpenTelemetry trace API and context\nconst trace = telemetry.tracing.getTrace();\nconst context = telemetry.tracing.getContext();\nconst activeSpan = telemetry.tracing.getActiveSpan();\n\n// Create a traced operation\nawait telemetry.tracing.createSpan('my-operation', async () => {\n  // Your code here\n  await doSomething();\n});\n\n// Add attributes to current span\ntelemetry.tracing.addAttributes({\n  'custom.attribute': 'value',\n});\n\n// Record errors\ntry {\n  await riskyOperation();\n} catch (error) {\n  telemetry.tracing.recordError(error);\n  throw error;\n}\n\n// Manual context propagation across services\n// Service A (sending trace context)\nconst traceCarrier = telemetry.tracing.injectCurrentContext();\n// Send traceCarrier to Service B via HTTP, message queue, etc.\n\n// Service B (receiving trace context)\nconst extractedContext = telemetry.tracing.extractContext(receivedCarrier);\nawait telemetry.tracing.createSpan(\n  'service-b-operation',\n  async () => {\n    // This span will be connected to the trace from Service A\n    await processRequest();\n  },\n  {\n    context: extractedContext,\n    attributes: { service: 'service-b' },\n  },\n);\n```\n\n### Cross-Language Tracing Example\n\n```typescript\n// JavaScript Service (sending to Python service)\n// 1. Create a span and prepare context for transport\nconst traceCarrier = telemetry.tracing.injectCurrentContext();\n\n// 2. Send request to Python service with context\nconst response = await axios.post('http://python-service/endpoint', {\n  data: requestData,\n  _traceContext: traceCarrier  // Include trace context in request\n});\n\n// Python Service (receiving from JavaScript)\n\"\"\"\nfrom opentelemetry import trace, context\nfrom opentelemetry.propagate import extract\n\n@app.route('/endpoint', methods=['POST'])\ndef handle_request():\n    # 1. Extract trace context from request\n    data = request.json\n    carrier = data.get('_traceContext', {})\n    ctx = extract(carrier)\n\n    # 2. Create a span with the extracted context\n    with tracer.start_as_current_span(\"process-request\", context=ctx) as span:\n        # This span will be connected to the JavaScript trace\n        result = process_data(data['data'])\n\n        # 3. When sending response, include context for continuation\n        response_carrier = {}\n        inject(response_carrier)\n        return jsonify({\n            'result': result,\n            '_traceContext': response_carrier\n        })\n\"\"\"\n\n// Back to JavaScript service (receiving response from Python)\n// 3. Extract context from Python service response\nconst pythonContext = telemetry.tracing.extractContext(response.data._traceContext);\n\n// 4. Continue the trace\nawait telemetry.tracing.createSpan('process-python-response', async () => {\n  // This span will be connected to both previous spans\n  processResult(response.data.result);\n}, {\n  context: pythonContext\n});\n```\n\n### Logging (telemetry.logging)\n\n```typescript\nimport { Telemetry } from '@auto-genesis/telemetry';\n\nconst telemetry = new Telemetry();\n\n// Log with different levels\ntelemetry.logging.info('Operation successful', { operation: 'data-sync' });\ntelemetry.logging.error('Operation failed', new Error('Sync failed'));\ntelemetry.logging.debug('Debug information', { details: 'some debug data' });\n```\n\n## NestJS Integration\n\n```typescript\nimport Telemetry from '@auto-genesis/telemetry';\n\nasync function bootstrap() {\n  const telemetry = new Telemetry({\n    serviceName: 'nest-service',\n    environment: process.env.NODE_ENV,\n  });\n\n  await telemetry.start();\n\n  const app = await NestFactory.create(AppModule);\n  await telemetry.listen(3000);\n\n  // Graceful shutdown\n  process.on('SIGTERM', async () => {\n    await telemetry.shutdown();\n    await app.close();\n  });\n}\n```\n\n## Context Propagation Interface\n\nThe SDK provides a standard interface for propagating trace context across service boundaries:\n\n```typescript\n// Carrier interface for transporting trace context\ninterface TraceCarrier {\n  traceparent?: string; // W3C Trace Context format\n  tracestate?: string; // Additional trace state information\n}\n```\n\n## Playground\n\nTo test new features or debug locally:\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/autonomize-ai/autonomize-sdk-js.git\n   cd autonomize-sdk-js\n   ```\n\n2. Set up the playground:\n\n   ```bash\n   cd playground\n   cp .env.example .env   # Configure your environment variables\n   pnpm install\n   ```\n\n3. Run the OTel playground:\n   ```bash\n   pnpm dev:otel\n   ```\n\nThis will start a development environment where you can test SDK features without publishing to npm.\n\n## Requirements\n\n| Requirement             | Version       |\n| ----------------------- | ------------- |\n| Node.js                 | >= 14.x       |\n| OpenTelemetry Collector | Latest stable |\n\n## Dependencies\n\n| Package                                    | Version |\n| ------------------------------------------ | ------- |\n| @opentelemetry/api                         | ^1.7.0  |\n| @opentelemetry/sdk-node                    | ^0.54.1 |\n| @opentelemetry/auto-instrumentations-node  | ^0.52.0 |\n| @opentelemetry/instrumentation-nestjs-core | ^0.41.0 |\n\nSee `package.json` for the complete list of dependencies.\n\n### Additional Resources\n\n- [OpenTelemetry Documentation](https://opentelemetry.io/docs/)\n- [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/)\n- [OpenTelemetry Specification](https://opentelemetry.io/docs/specs/otel/)\n","readmeFilename":"README.md"}