{"_id":"@amlexiahq/node","_rev":"3-67ee02372f8d44dd9f4e1964552d5df0","name":"@amlexiahq/node","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@amlexiahq/node","version":"1.0.0","keywords":["amlexia","observability","apm","opentelemetry","express","fastify"],"license":"SEE LICENSE IN LICENSE","_id":"@amlexiahq/node@1.0.0","maintainers":[{"name":"amlexia","email":"login@amlexia.com"}],"homepage":"https://amlexia.com","bugs":{"url":"https://github.com/amlexiahq/amlexia/issues"},"dist":{"shasum":"3ccac846980d5483657cd6f68f0a71456660af3c","tarball":"https://registry.npmjs.org/@amlexiahq/node/-/node-1.0.0.tgz","fileCount":29,"integrity":"sha512-UbjFaVeDNe154Ue4Z0NTW8+LpBfe6yhlHknuhCQxPBzvsa3uhk+OFy4sKnpMF3mVUlDvdroxW4ZQMQFgYAawpg==","signatures":[{"sig":"MEUCIG3JZpvCqx8rLCPX8VshqNKRfGwmdeEbuuJGdhvlmCNrAiEA2Pjfd/upWLEH7ooexWki+/79RMKtGyoQImrR9thOfr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26385},"main":"./dist/index.js","type":"module","_from":"file:amlexiahq-node-1.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/hono.d.ts","import":"./dist/hono.js"},"./next":{"types":"./dist/next.d.ts","import":"./dist/next.js"},"./otel":{"types":"./dist/otel-bridge.d.ts","import":"./dist/otel-bridge.js"},"./express":{"types":"./dist/express.d.ts","import":"./dist/express.js"},"./fastify":{"types":"./dist/fastify.d.ts","import":"./dist/fastify.js"},"./tracing":{"types":"./dist/tracing.d.ts","import":"./dist/tracing.js"}},"scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"amlexia","email":"login@amlexia.com"},"_resolved":"C:\\Users\\myhvc\\AppData\\Local\\Temp\\7e443d3d7d95254a77586529d210655b\\amlexiahq-node-1.0.0.tgz","_integrity":"sha512-UbjFaVeDNe154Ue4Z0NTW8+LpBfe6yhlHknuhCQxPBzvsa3uhk+OFy4sKnpMF3mVUlDvdroxW4ZQMQFgYAawpg==","repository":{"url":"git+https://github.com/amlexiahq/amlexia.git","type":"git","directory":"sdks/nodejs"},"_npmVersion":"11.6.0","description":"Amlexia Node.js SDK for API observability","directories":{},"_nodeVersion":"24.8.0","dependencies":{"@amlexiahq/shared":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.3","@types/express":"^5.0.1"},"peerDependencies":{"hono":">=4.0.0","express":">=4.0.0","fastify":">=4.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true},"fastify":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/node_1.0.0_1779180265328_0.2240036485199104","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@amlexiahq/node","version":"1.0.1","keywords":["amlexia","observability","apm","monitoring","opentelemetry","express","fastify","hono","nextjs","api","tracing"],"author":{"name":"Amlexia","email":"support@amlexia.com"},"license":"SEE LICENSE IN LICENSE","_id":"@amlexiahq/node@1.0.1","maintainers":[{"name":"amlexia","email":"login@amlexia.com"}],"homepage":"https://amlexia.com","bugs":{"url":"https://amlexia.com/contact","email":"support@amlexia.com"},"dist":{"shasum":"d2fbd2461da889e33ce28a5b14c77c7ebb24fc18","tarball":"https://registry.npmjs.org/@amlexiahq/node/-/node-1.0.1.tgz","fileCount":30,"integrity":"sha512-ri3chkwP6XouL/kqrIZrXOX2Ia8IZneHmJtrQSzyi0quxpvSUHO8bZrtvPDBg105KGbq6/+5cPqelNDpOtUDhg==","signatures":[{"sig":"MEYCIQC/Prugj7kjWXZME/8nPg79szYs32sVa/nKnBrkwDJ9KQIhAKVJI/0d9AbjacpJEvbwx3FWF/e3iABOsNWz9pYOExmy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29126},"main":"./dist/index.js","type":"module","_from":"file:amlexiahq-node-1.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hono":{"types":"./dist/hono.d.ts","import":"./dist/hono.js"},"./next":{"types":"./dist/next.d.ts","import":"./dist/next.js"},"./otel":{"types":"./dist/otel-bridge.d.ts","import":"./dist/otel-bridge.js"},"./express":{"types":"./dist/express.d.ts","import":"./dist/express.js"},"./fastify":{"types":"./dist/fastify.d.ts","import":"./dist/fastify.js"},"./tracing":{"types":"./dist/tracing.d.ts","import":"./dist/tracing.js"}},"scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"amlexia","email":"login@amlexia.com"},"_resolved":"C:\\Users\\myhvc\\AppData\\Local\\Temp\\aee6ea8b29a075b2d21e245abe348025\\amlexiahq-node-1.0.1.tgz","_integrity":"sha512-ri3chkwP6XouL/kqrIZrXOX2Ia8IZneHmJtrQSzyi0quxpvSUHO8bZrtvPDBg105KGbq6/+5cPqelNDpOtUDhg==","repository":{"url":"git+https://github.com/amlexiahq/amlexia.git","type":"git","directory":"sdks/nodejs"},"_npmVersion":"11.6.0","description":"Official Amlexia Node.js SDK — monitor APIs, AI providers, payments, and infrastructure with traces, latency, and provider intelligence.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"@amlexiahq/shared":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^22.15.3","@types/express":"^5.0.1"},"peerDependencies":{"hono":">=4.0.0","express":">=4.0.0","fastify":">=4.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true},"fastify":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/node_1.0.1_1779181443615_0.41864507659799166","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@amlexiahq/node","version":"1.0.2","bin":{"amlexia":"bin/amlexia.js"},"description":"Official Amlexia Node.js SDK — monitor APIs, AI providers, payments, and infrastructure with traces, latency, and provider intelligence.","author":{"name":"Amlexia","email":"support@amlexia.com"},"maintainers":[{"name":"amlexia","email":"login@amlexia.com"}],"homepage":"https://amlexia.com","bugs":{"url":"https://amlexia.com/contact","email":"support@amlexia.com"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./express":{"types":"./dist/express.d.ts","import":"./dist/express.js"},"./fastify":{"types":"./dist/fastify.d.ts","import":"./dist/fastify.js"},"./hono":{"types":"./dist/hono.d.ts","import":"./dist/hono.js"},"./tracing":{"types":"./dist/tracing.d.ts","import":"./dist/tracing.js"},"./otel":{"types":"./dist/otel-bridge.d.ts","import":"./dist/otel-bridge.js"},"./next":{"types":"./dist/next.d.ts","import":"./dist/next.js"}},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/amlexiahq/amlexia.git","directory":"sdks/nodejs"},"keywords":["amlexia","observability","apm","monitoring","opentelemetry","express","fastify","hono","nextjs","api","tracing"],"license":"SEE LICENSE IN LICENSE","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"dependencies":{"@amlexiahq/shared":"workspace:*"},"peerDependencies":{"express":">=4.0.0","fastify":">=4.0.0","hono":">=4.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"fastify":{"optional":true},"hono":{"optional":true}},"devDependencies":{"@types/express":"^5.0.1","@types/node":"^22.15.3","typescript":"^5.8.3"},"_id":"@amlexiahq/node@1.0.2","gitHead":"4ce89bc24bfe4bcbf4369bb6f1a4d13c5828d2cc","_nodeVersion":"24.8.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-yb5fdaMQN3HOBtEQTSuFp9WuC456/l0KZCnidlBfBOUiHbUx8ukldIk4lrLzqnGXzQU5t+LbmhvCORCUEz7MsA==","shasum":"d21037d2488164701f2cff668b1001776061c7da","tarball":"https://registry.npmjs.org/@amlexiahq/node/-/node-1.0.2.tgz","fileCount":49,"unpackedSize":49683,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGZ1HDjIC8NYYA97aQeuvxi48l0aNQhRzxHgioWCffpoAiAYL60Xhgbd2bb1uNrfgJwcyJSbUPmgihlj63T8hQJqAQ=="}]},"_npmUser":{"name":"amlexia","email":"login@amlexia.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node_1.0.2_1779229974259_0.25163757876222914"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-19T08:44:25.219Z","modified":"2026-05-19T22:32:54.513Z","1.0.0":"2026-05-19T08:44:25.484Z","1.0.1":"2026-05-19T09:04:03.758Z","1.0.2":"2026-05-19T22:32:54.390Z"},"bugs":{"url":"https://amlexia.com/contact","email":"support@amlexia.com"},"author":{"name":"Amlexia","email":"support@amlexia.com"},"license":"SEE LICENSE IN LICENSE","homepage":"https://amlexia.com","keywords":["amlexia","observability","apm","monitoring","opentelemetry","express","fastify","hono","nextjs","api","tracing"],"repository":{"type":"git","url":"git+https://github.com/amlexiahq/amlexia.git","directory":"sdks/nodejs"},"description":"Official Amlexia Node.js SDK — monitor APIs, AI providers, payments, and infrastructure with traces, latency, and provider intelligence.","maintainers":[{"name":"amlexia","email":"login@amlexia.com"}],"readme":"# @amlexiahq/node\r\n\r\nOfficial **Node.js SDK** for [Amlexia](https://amlexia.com). Ship traces, latency, errors, and provider metrics from Express, Fastify, Hono, Next.js, or custom code.\r\n\r\n```bash\r\nnpm install @amlexiahq/node\r\n```\r\n\r\n**License:** Proprietary — not open source. See [LICENSE](./LICENSE).  \r\n**Support:** support@amlexia.com\r\n\r\n---\r\n\r\n## Table of contents\r\n\r\n- [Installation](#installation)\r\n- [Quick start](#quick-start)\r\n- [AmlexiaClient](#amlexiaclient)\r\n- [track() fields](#track-fields)\r\n- [Environment variables](#environment-variables)\r\n- [Express](#express)\r\n- [Fastify](#fastify)\r\n- [Hono](#hono)\r\n- [Next.js](#nextjs)\r\n- [Distributed tracing](#distributed-tracing)\r\n- [OpenTelemetry bridge](#opentelemetry-bridge)\r\n- [Errors and retries](#errors-and-retries)\r\n- [Best practices](#best-practices)\r\n\r\nCross-SDK docs: [Environment variables](../../docs/ENVIRONMENT_VARIABLES.md) · [Event fields](../../docs/EVENT_FIELDS.md)\r\n\r\n---\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @amlexiahq/node\r\n```\r\n\r\nPeer dependencies (install only what you use):\r\n\r\n```bash\r\nnpm install express   # for @amlexiahq/node/express\r\nnpm install fastify   # for @amlexiahq/node/fastify\r\nnpm install hono      # for @amlexiahq/node/hono\r\n```\r\n\r\n---\r\n\r\n## Quick start\r\n\r\n```typescript\r\nimport { AmlexiaClient } from '@amlexiahq/node';\r\n\r\nconst client = new AmlexiaClient({\r\n  sdkKey: process.env.AMLEXIA_SDK_KEY!,\r\n  ingestUrl: process.env.AMLEXIA_INGEST_URL ?? 'https://ingest.amlexia.com',\r\n});\r\n\r\nclient.track({\r\n  endpoint: 'GET /api/health',\r\n  method: 'GET',\r\n  statusCode: 200,\r\n  latencyMs: 8,\r\n});\r\n\r\n// Graceful shutdown — flushes buffered events\r\nprocess.on('SIGTERM', () => void client.shutdown());\r\n```\r\n\r\n---\r\n\r\n## AmlexiaClient\r\n\r\n### Constructor options\r\n\r\n```typescript\r\nnew AmlexiaClient({\r\n  sdkKey: string;              // Required — project SDK key (am_...)\r\n  ingestUrl?: string;         // Default: https://ingest.amlexia.com\r\n  flushIntervalMs?: number;   // Default: 5000 — auto-flush interval\r\n  maxBatchSize?: number;      // Default: 50 — flush when buffer reaches this size\r\n  maxRetries?: number;        // Default: 5 — retries per batch on failure\r\n});\r\n```\r\n\r\n| Option | Default | Description |\r\n|--------|---------|-------------|\r\n| `sdkKey` | — | **Required.** From dashboard → Project → SDK key |\r\n| `ingestUrl` | `https://ingest.amlexia.com` | Base URL without trailing slash |\r\n| `flushIntervalMs` | `5000` | Background flush interval (ms) |\r\n| `maxBatchSize` | `50` | Max events per HTTP request |\r\n| `maxRetries` | `5` | Exponential backoff retries (cap 30s delay) |\r\n\r\n### Methods\r\n\r\n| Method | Description |\r\n|--------|-------------|\r\n| `track(event: TrackEvent): void` | Queue one event (sync). Flushes early if batch is full |\r\n| `flush(): Promise<void>` | Send current buffer immediately |\r\n| `shutdown(): Promise<void>` | Stop timer, flush all remaining events |\r\n\r\n---\r\n\r\n## track() fields\r\n\r\n### Required\r\n\r\n```typescript\r\nclient.track({\r\n  endpoint: 'POST /v1/chat',  // Route or operation name\r\n  method: 'POST',\r\n  statusCode: 200,\r\n  latencyMs: 430,\r\n});\r\n```\r\n\r\n### Optional (common)\r\n\r\n```typescript\r\nclient.track({\r\n  endpoint: 'POST /v1/chat',\r\n  method: 'POST',\r\n  statusCode: 200,\r\n  latencyMs: 430,\r\n  timestamp: Math.floor(Date.now() / 1000), // Unix seconds\r\n  provider: 'openai',\r\n  providerCategory: 'ai',\r\n  modelName: 'gpt-4o',\r\n  tokensInput: 120,\r\n  tokensOutput: 80,\r\n  totalTokens: 200,\r\n  costUsd: 0.0024,\r\n  errorMessage: null,\r\n  metadata: { plan: 'pro' },\r\n  traceId: '...',\r\n  spanId: '...',\r\n  parentSpanId: '...',\r\n  sessionId: 'sess_abc',\r\n  userId: 'user_123',\r\n  environment: 'production',\r\n  releaseVersion: '1.4.0',\r\n  serviceName: 'api',\r\n  operationName: '/v1/chat',\r\n  requestSizeBytes: 1024,\r\n  responseSizeBytes: 4096,\r\n  streamingLatencyMs: 1200,\r\n  firstTokenLatencyMs: 180,\r\n  cacheHit: false,\r\n  retryCount: 0,\r\n  isWebhook: false,\r\n});\r\n```\r\n\r\nFull reference: [Event fields](../../docs/EVENT_FIELDS.md).\r\n\r\n---\r\n\r\n## Environment variables\r\n\r\n| Variable | Description |\r\n|----------|-------------|\r\n| `AMLEXIA_SDK_KEY` | **Required** — SDK key |\r\n| `AMLEXIA_INGEST_URL` | Ingest base URL (optional) |\r\n| `AMLEXIA_RELEASE` | Default release on trace context |\r\n| `NODE_ENV` | Default environment on trace context |\r\n\r\nSee [ENVIRONMENT_VARIABLES.md](../../docs/ENVIRONMENT_VARIABLES.md).\r\n\r\n---\r\n\r\n## Express\r\n\r\n```typescript\r\nimport express from 'express';\r\nimport { AmlexiaClient } from '@amlexiahq/node';\r\nimport { AmlexiaMiddleware } from '@amlexiahq/node/express';\r\n\r\nconst client = new AmlexiaClient({ sdkKey: process.env.AMLEXIA_SDK_KEY! });\r\nconst app = express();\r\n\r\napp.use(AmlexiaMiddleware(client, { serviceName: 'api' }));\r\n\r\napp.get('/users/:id', (req, res) => {\r\n  res.json({ ok: true });\r\n});\r\n\r\napp.listen(3000);\r\n```\r\n\r\n### Middleware options\r\n\r\n| Option | Default | Description |\r\n|--------|---------|-------------|\r\n| `serviceName` | `'api'` | `serviceName` on tracked events |\r\n\r\n### Behavior\r\n\r\n- Creates trace + span per request\r\n- Sets response header `traceparent` (W3C format)\r\n- Normalizes paths (`/users/42` → `/users/:id`)\r\n- Auto-detects provider from route/host hints\r\n- Tracks on `res.finish` with status and latency\r\n\r\n### Session / user headers\r\n\r\n| Header | Attached to event |\r\n|--------|-------------------|\r\n| `x-session-id` | `sessionId` |\r\n| `x-user-id` | `userId` |\r\n\r\n---\r\n\r\n## Fastify\r\n\r\n```typescript\r\nimport Fastify from 'fastify';\r\nimport { AmlexiaClient } from '@amlexiahq/node';\r\nimport { amlexiaPlugin } from '@amlexiahq/node/fastify';\r\n\r\nconst client = new AmlexiaClient({ sdkKey: process.env.AMLEXIA_SDK_KEY! });\r\nconst app = Fastify();\r\n\r\nawait app.register(amlexiaPlugin(client, { serviceName: 'api' }));\r\n```\r\n\r\nSame options and behavior as Express (`serviceName`, path normalization, `traceparent`).\r\n\r\n---\r\n\r\n## Hono\r\n\r\n```typescript\r\nimport { Hono } from 'hono';\r\nimport { AmlexiaClient } from '@amlexiahq/node';\r\nimport { amlexiaHonoMiddleware } from '@amlexiahq/node/hono';\r\n\r\nconst client = new AmlexiaClient({ sdkKey: process.env.AMLEXIA_SDK_KEY! });\r\nconst app = new Hono();\r\n\r\napp.use('*', amlexiaHonoMiddleware(client, { serviceName: 'api' }));\r\n```\r\n\r\n---\r\n\r\n## Next.js\r\n\r\nWrap App Router route handlers:\r\n\r\n```typescript\r\nimport { AmlexiaClient } from '@amlexiahq/node';\r\nimport { withAmlexia } from '@amlexiahq/node/next';\r\n\r\nconst client = new AmlexiaClient({ sdkKey: process.env.AMLEXIA_SDK_KEY! });\r\n\r\nexport const GET = withAmlexia(\r\n  client,\r\n  async (request) => {\r\n    return Response.json({ ok: true });\r\n  },\r\n  { route: '/api/hello', serviceName: 'nextjs' },\r\n);\r\n```\r\n\r\n### `withAmlexia` options\r\n\r\n| Option | Description |\r\n|--------|-------------|\r\n| `route` | Static route pattern for cardinality control (e.g. `/api/users/[id]`) |\r\n| `serviceName` | Default `nextjs` |\r\n\r\nTracks status, latency, and errors (including thrown exceptions → 500).\r\n\r\n---\r\n\r\n## Distributed tracing\r\n\r\n```typescript\r\nimport {\r\n  createTraceContext,\r\n  childSpan,\r\n  applyTraceToEvent,\r\n} from '@amlexiahq/node/tracing';\r\n\r\nconst trace = createTraceContext({\r\n  sessionId: 'sess_1',\r\n  userId: 'user_1',\r\n  environment: 'production',\r\n  releaseVersion: process.env.AMLEXIA_RELEASE,\r\n});\r\n\r\nconst span = childSpan(trace);\r\n\r\nclient.track(\r\n  applyTraceToEvent(\r\n    {\r\n      endpoint: 'POST /internal/job',\r\n      method: 'POST',\r\n      statusCode: 200,\r\n      latencyMs: 100,\r\n    },\r\n    span,\r\n  ),\r\n);\r\n```\r\n\r\n| Function | Description |\r\n|----------|-------------|\r\n| `createTraceContext(partial?)` | New trace id + span id; fills env from `NODE_ENV` / `AMLEXIA_RELEASE` |\r\n| `childSpan(parent)` | New span under parent |\r\n| `applyTraceToEvent(event, ctx)` | Merges trace fields into a `TrackEvent` |\r\n\r\n---\r\n\r\n## OpenTelemetry bridge\r\n\r\nMap OTEL spans into Amlexia events (sends via `/v1/events`, not a separate OTEL ingest):\r\n\r\n```typescript\r\nimport { AmlexiaClient } from '@amlexiahq/node';\r\nimport { exportOtelSpans, type OtelSpanInput } from '@amlexiahq/node/otel';\r\n\r\nconst spans: OtelSpanInput[] = [/* from your OTEL exporter */];\r\nexportOtelSpans(client, spans);\r\n```\r\n\r\n`OtelSpanInput` fields: `traceId`, `spanId`, `parentSpanId`, `name`, `startTimeUnixNano`, `endTimeUnixNano`, `status`, `attributes`.\r\n\r\n---\r\n\r\n## Errors and retries\r\n\r\n| HTTP status | Behavior |\r\n|-------------|----------|\r\n| `401` | Throws `Invalid SDK key` (no retry) |\r\n| `4xx` (other) | Throws with body (no retry) |\r\n| `5xx` / network | Retries with exponential backoff |\r\n\r\nFailed batches are **re-queued** to the buffer after exhausted retries.\r\n\r\n---\r\n\r\n## Best practices\r\n\r\n1. **One client per process** — reuse a singleton `AmlexiaClient`.\r\n2. **Call `shutdown()`** on SIGTERM/SIGINT in servers and serverless `finally` blocks.\r\n3. **Use middleware** for HTTP so paths are normalized and traces are consistent.\r\n4. **Never expose `AMLEXIA_SDK_KEY` in browsers** — instrument backend only.\r\n5. **Set `releaseVersion`** via `AMLEXIA_RELEASE` for deploy correlation.\r\n6. **Avoid high-cardinality endpoints** — use parameterized routes, not raw URLs with IDs in middleware-covered apps.\r\n\r\n---\r\n\r\n## Package exports\r\n\r\n| Import path | Contents |\r\n|-------------|----------|\r\n| `@amlexiahq/node` | `AmlexiaClient`, types |\r\n| `@amlexiahq/node/express` | `AmlexiaMiddleware` |\r\n| `@amlexiahq/node/fastify` | `amlexiaPlugin` |\r\n| `@amlexiahq/node/hono` | `amlexiaHonoMiddleware` |\r\n| `@amlexiahq/node/next` | `withAmlexia` |\r\n| `@amlexiahq/node/tracing` | `createTraceContext`, `childSpan`, `applyTraceToEvent` |\r\n| `@amlexiahq/node/otel` | `exportOtelSpans` |\r\n\r\n---\r\n\r\n## Links\r\n\r\n- [Getting started](../../docs/GETTING_STARTED.md)\r\n- [Amlexia dashboard](https://app.amlexia.com)\r\n- [Terms](https://amlexia.com/terms) · [Privacy](https://amlexia.com/privacy)\r\n","readmeFilename":"README.md"}