@tokenjam/sdk 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -13
- package/dist/client.d.ts +2 -2
- package/dist/client.js +3 -3
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +1 -1
- package/dist/semconv.d.ts +10 -10
- package/dist/semconv.js +10 -10
- package/dist/semconv.js.map +1 -1
- package/dist/semconv.test.js +4 -4
- package/dist/semconv.test.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
TypeScript SDK for [TokenJam](https://github.com/Metabuilder-Labs/tokenjam) — local-first, OTel-native observability for AI agents.
|
|
4
4
|
|
|
5
|
-
Communicates with a running `
|
|
5
|
+
Communicates with a running `tj serve` instance via HTTP. No in-process OTel pipeline — spans are built with `SpanBuilder` and sent by `TjClient`.
|
|
6
6
|
|
|
7
7
|
> **Note:** Provider auto-instrumentation (the `patch_anthropic()`, `patch_openai()`, etc. convenience wrappers from the Python SDK) does not exist in this package. Every LLM call and tool call must be manually instrumented using `SpanBuilder`.
|
|
8
8
|
|
|
@@ -12,11 +12,11 @@ Communicates with a running `ocw serve` instance via HTTP. No in-process OTel pi
|
|
|
12
12
|
npm install @tokenjam/sdk
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
Requires Node.js >= 18. Start the
|
|
15
|
+
Requires Node.js >= 18. Start the TokenJam server before sending spans:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
pip install tokenjam
|
|
19
|
-
|
|
19
|
+
tj serve
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Quick start
|
|
@@ -25,8 +25,8 @@ ocw serve
|
|
|
25
25
|
import { TjClient, SpanBuilder, SpanStatus } from "@tokenjam/sdk";
|
|
26
26
|
|
|
27
27
|
const client = new TjClient({
|
|
28
|
-
ingestSecret: "your-ingest-secret", // from
|
|
29
|
-
serviceName: "my-agent", // shown as agent ID in
|
|
28
|
+
ingestSecret: "your-ingest-secret", // from tj.toml security.ingest_secret
|
|
29
|
+
serviceName: "my-agent", // shown as agent ID in tj status
|
|
30
30
|
}).start();
|
|
31
31
|
|
|
32
32
|
// Record an LLM call
|
|
@@ -56,9 +56,9 @@ new TjClient(options: TjClientOptions)
|
|
|
56
56
|
|
|
57
57
|
| Option | Type | Default | Description |
|
|
58
58
|
|---|---|---|---|
|
|
59
|
-
| `ingestSecret` | `string` | required | Bearer token from `security.ingest_secret` in `
|
|
60
|
-
| `baseUrl` | `string` | `http://127.0.0.1:7391` |
|
|
61
|
-
| `serviceName` | `string` | `"
|
|
59
|
+
| `ingestSecret` | `string` | required | Bearer token from `security.ingest_secret` in `tj.toml` |
|
|
60
|
+
| `baseUrl` | `string` | `http://127.0.0.1:7391` | `tj serve` base URL |
|
|
61
|
+
| `serviceName` | `string` | `"tj-ts-sdk"` | Reported as `service.name` in OTLP resource attributes; used as fallback agent ID |
|
|
62
62
|
| `batchSize` | `number` | `50` | Max spans buffered before auto-flush |
|
|
63
63
|
| `flushIntervalMs` | `number` | `5000` | Interval between automatic flushes (ms) |
|
|
64
64
|
| `maxRetries` | `number` | `3` | Retry attempts on network errors and 5xx responses; 4xx errors are not retried |
|
|
@@ -135,9 +135,9 @@ GenAIAttributes.REQUEST_MODEL // "gen_ai.request.model"
|
|
|
135
135
|
GenAIAttributes.CACHE_CREATE_TOKENS // "gen_ai.usage.cache_creation_tokens"
|
|
136
136
|
// ...
|
|
137
137
|
|
|
138
|
-
//
|
|
139
|
-
TjAttributes.COST_USD // "
|
|
140
|
-
TjAttributes.SANDBOX_EVENT // "
|
|
138
|
+
// tj-specific attribute name strings
|
|
139
|
+
TjAttributes.COST_USD // "tokenjam.cost_usd"
|
|
140
|
+
TjAttributes.SANDBOX_EVENT // "tokenjam.sandbox.event"
|
|
141
141
|
// ...
|
|
142
142
|
|
|
143
143
|
// Claude Code OTel log event names and attribute constants
|
|
@@ -148,7 +148,7 @@ ClaudeCodeEvents.INPUT_TOKENS // "input_tokens"
|
|
|
148
148
|
// ...
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
Use `ClaudeCodeEvents` when writing agents that consume Claude Code's own OTel log output (e.g. via the `
|
|
151
|
+
Use `ClaudeCodeEvents` when writing agents that consume Claude Code's own OTel log output (e.g. via the `tj` MCP server or a log subscriber).
|
|
152
152
|
|
|
153
153
|
## SpanKind and SpanStatus
|
|
154
154
|
|
|
@@ -173,6 +173,6 @@ Unlike the Python SDK (`pip install tokenjam`), this package does **not** includ
|
|
|
173
173
|
- **Session management** (`@watch()` decorator / `AgentSession` context manager) — you must manually build and send `invoke_agent` session spans.
|
|
174
174
|
- **Provider auto-instrumentation** — no `patchAnthropic()`, `patchOpenAI()`, etc. Every LLM call requires an explicit `SpanBuilder`.
|
|
175
175
|
- **Framework patches** — no LangChain JS, OpenAI Agents SDK, or Vercel AI SDK integration.
|
|
176
|
-
- **In-process OTel pipeline** — all telemetry goes over HTTP to `
|
|
176
|
+
- **In-process OTel pipeline** — all telemetry goes over HTTP to `tj serve`.
|
|
177
177
|
|
|
178
178
|
See the [Python SDK docs](https://github.com/Metabuilder-Labs/tokenjam#python-sdk) for the full-featured in-process instrumentation path.
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IngestResult, Span } from "./types.js";
|
|
2
2
|
export interface TjClientOptions {
|
|
3
|
-
/** Base URL of the
|
|
3
|
+
/** Base URL of the TokenJam server (default: http://127.0.0.1:7391) */
|
|
4
4
|
baseUrl?: string;
|
|
5
5
|
/** Ingest secret for authentication */
|
|
6
6
|
ingestSecret: string;
|
|
@@ -8,7 +8,7 @@ export interface TjClientOptions {
|
|
|
8
8
|
batchSize?: number;
|
|
9
9
|
/** Flush interval in milliseconds (default: 5000) */
|
|
10
10
|
flushIntervalMs?: number;
|
|
11
|
-
/** Service name reported in OTLP resource attributes (default: "
|
|
11
|
+
/** Service name reported in OTLP resource attributes (default: "tj-ts-sdk") */
|
|
12
12
|
serviceName?: string;
|
|
13
13
|
/** Maximum retry attempts on network errors or 5xx responses (default: 3) */
|
|
14
14
|
maxRetries?: number;
|
package/dist/client.js
CHANGED
|
@@ -78,7 +78,7 @@ class TjClient {
|
|
|
78
78
|
this.ingestSecret = options.ingestSecret;
|
|
79
79
|
this.batchSize = options.batchSize ?? 50;
|
|
80
80
|
this.flushIntervalMs = options.flushIntervalMs ?? 5000;
|
|
81
|
-
this.serviceName = options.serviceName ?? "
|
|
81
|
+
this.serviceName = options.serviceName ?? "tj-ts-sdk";
|
|
82
82
|
this.maxRetries = options.maxRetries ?? 3;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
@@ -182,7 +182,7 @@ class TjClient {
|
|
|
182
182
|
return (await response.json());
|
|
183
183
|
}
|
|
184
184
|
const text = await response.text().catch(() => "");
|
|
185
|
-
const error = new Error(`
|
|
185
|
+
const error = new Error(`TokenJam ingest failed: ${response.status} ${response.statusText} — ${text}`);
|
|
186
186
|
// 4xx: not retriable (auth/validation failure)
|
|
187
187
|
if (response.status >= 400 && response.status < 500) {
|
|
188
188
|
throw error;
|
|
@@ -190,7 +190,7 @@ class TjClient {
|
|
|
190
190
|
// 5xx: retriable
|
|
191
191
|
lastError = error;
|
|
192
192
|
}
|
|
193
|
-
throw lastError ?? new Error("
|
|
193
|
+
throw lastError ?? new Error("TokenJam ingest failed after retries");
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
exports.TjClient = TjClient;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.test.js
CHANGED
|
@@ -10,7 +10,7 @@ const client_js_1 = require("./client.js");
|
|
|
10
10
|
const span_builder_js_1 = require("./span-builder.js");
|
|
11
11
|
/**
|
|
12
12
|
* Spin up a local HTTP server that captures requests, so we can test
|
|
13
|
-
* the client without a real
|
|
13
|
+
* the client without a real TokenJam server.
|
|
14
14
|
*/
|
|
15
15
|
function createMockServer() {
|
|
16
16
|
const requests = [];
|
package/dist/semconv.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenTelemetry GenAI Semantic Convention attribute names.
|
|
3
|
-
* Mirrors
|
|
3
|
+
* Mirrors tokenjam/otel/semconv.py — keep in sync.
|
|
4
4
|
*/
|
|
5
5
|
export declare const GenAIAttributes: {
|
|
6
6
|
readonly AGENT_ID: "gen_ai.agent.id";
|
|
@@ -26,18 +26,18 @@ export declare const GenAIAttributes: {
|
|
|
26
26
|
readonly SPAN_LLM_CALL: "gen_ai.llm.call";
|
|
27
27
|
};
|
|
28
28
|
export declare const TjAttributes: {
|
|
29
|
-
readonly COST_USD: "
|
|
30
|
-
readonly ALERT_TYPE: "
|
|
31
|
-
readonly ALERT_SEVERITY: "
|
|
32
|
-
readonly SANDBOX_EVENT: "
|
|
33
|
-
readonly EGRESS_HOST: "
|
|
34
|
-
readonly EGRESS_PORT: "
|
|
35
|
-
readonly FILESYSTEM_PATH: "
|
|
36
|
-
readonly SYSCALL_NAME: "
|
|
29
|
+
readonly COST_USD: "tokenjam.cost_usd";
|
|
30
|
+
readonly ALERT_TYPE: "tokenjam.alert.type";
|
|
31
|
+
readonly ALERT_SEVERITY: "tokenjam.alert.severity";
|
|
32
|
+
readonly SANDBOX_EVENT: "tokenjam.sandbox.event";
|
|
33
|
+
readonly EGRESS_HOST: "tokenjam.sandbox.egress_host";
|
|
34
|
+
readonly EGRESS_PORT: "tokenjam.sandbox.egress_port";
|
|
35
|
+
readonly FILESYSTEM_PATH: "tokenjam.sandbox.filesystem_path";
|
|
36
|
+
readonly SYSCALL_NAME: "tokenjam.sandbox.syscall_name";
|
|
37
37
|
};
|
|
38
38
|
/**
|
|
39
39
|
* Event names and attribute constants from Claude Code's OTel log exporter.
|
|
40
|
-
* Mirrors ClaudeCodeEvents in
|
|
40
|
+
* Mirrors ClaudeCodeEvents in tokenjam/otel/semconv.py — keep in sync.
|
|
41
41
|
*/
|
|
42
42
|
export declare const ClaudeCodeEvents: {
|
|
43
43
|
readonly API_REQUEST: "claude_code.api_request";
|
package/dist/semconv.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ClaudeCodeEvents = exports.TjAttributes = exports.GenAIAttributes = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* OpenTelemetry GenAI Semantic Convention attribute names.
|
|
6
|
-
* Mirrors
|
|
6
|
+
* Mirrors tokenjam/otel/semconv.py — keep in sync.
|
|
7
7
|
*/
|
|
8
8
|
exports.GenAIAttributes = {
|
|
9
9
|
AGENT_ID: "gen_ai.agent.id",
|
|
@@ -29,18 +29,18 @@ exports.GenAIAttributes = {
|
|
|
29
29
|
SPAN_LLM_CALL: "gen_ai.llm.call",
|
|
30
30
|
};
|
|
31
31
|
exports.TjAttributes = {
|
|
32
|
-
COST_USD: "
|
|
33
|
-
ALERT_TYPE: "
|
|
34
|
-
ALERT_SEVERITY: "
|
|
35
|
-
SANDBOX_EVENT: "
|
|
36
|
-
EGRESS_HOST: "
|
|
37
|
-
EGRESS_PORT: "
|
|
38
|
-
FILESYSTEM_PATH: "
|
|
39
|
-
SYSCALL_NAME: "
|
|
32
|
+
COST_USD: "tokenjam.cost_usd",
|
|
33
|
+
ALERT_TYPE: "tokenjam.alert.type",
|
|
34
|
+
ALERT_SEVERITY: "tokenjam.alert.severity",
|
|
35
|
+
SANDBOX_EVENT: "tokenjam.sandbox.event",
|
|
36
|
+
EGRESS_HOST: "tokenjam.sandbox.egress_host",
|
|
37
|
+
EGRESS_PORT: "tokenjam.sandbox.egress_port",
|
|
38
|
+
FILESYSTEM_PATH: "tokenjam.sandbox.filesystem_path",
|
|
39
|
+
SYSCALL_NAME: "tokenjam.sandbox.syscall_name",
|
|
40
40
|
};
|
|
41
41
|
/**
|
|
42
42
|
* Event names and attribute constants from Claude Code's OTel log exporter.
|
|
43
|
-
* Mirrors ClaudeCodeEvents in
|
|
43
|
+
* Mirrors ClaudeCodeEvents in tokenjam/otel/semconv.py — keep in sync.
|
|
44
44
|
*/
|
|
45
45
|
exports.ClaudeCodeEvents = {
|
|
46
46
|
// Event names (logRecord body values)
|
package/dist/semconv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../src/semconv.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,eAAe,GAAG;IAC7B,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,mBAAmB;IAC/B,aAAa,EAAE,sBAAsB;IACrC,aAAa,EAAE,sBAAsB;IACrC,aAAa,EAAE,sBAAsB;IACrC,YAAY,EAAE,qBAAqB;IACnC,YAAY,EAAE,2BAA2B;IACzC,aAAa,EAAE,4BAA4B;IAC3C,iBAAiB,EAAE,gCAAgC;IACnD,mBAAmB,EAAE,oCAAoC;IACzD,SAAS,EAAE,kBAAkB;IAC7B,gBAAgB,EAAE,yBAAyB;IAC3C,UAAU,EAAE,mBAAmB;IAC/B,WAAW,EAAE,oBAAoB;IACjC,eAAe,EAAE,wBAAwB;IACzC,cAAc,EAAE,uBAAuB;IACvC,kBAAkB,EAAE,2BAA2B;IAC/C,iBAAiB,EAAE,cAAc;IACjC,iBAAiB,EAAE,cAAc;IACjC,cAAc,EAAE,kBAAkB;IAClC,aAAa,EAAE,iBAAiB;CACxB,CAAC;AAEE,QAAA,YAAY,GAAG;IAC1B,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"semconv.js","sourceRoot":"","sources":["../src/semconv.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,eAAe,GAAG;IAC7B,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,mBAAmB;IAC/B,aAAa,EAAE,sBAAsB;IACrC,aAAa,EAAE,sBAAsB;IACrC,aAAa,EAAE,sBAAsB;IACrC,YAAY,EAAE,qBAAqB;IACnC,YAAY,EAAE,2BAA2B;IACzC,aAAa,EAAE,4BAA4B;IAC3C,iBAAiB,EAAE,gCAAgC;IACnD,mBAAmB,EAAE,oCAAoC;IACzD,SAAS,EAAE,kBAAkB;IAC7B,gBAAgB,EAAE,yBAAyB;IAC3C,UAAU,EAAE,mBAAmB;IAC/B,WAAW,EAAE,oBAAoB;IACjC,eAAe,EAAE,wBAAwB;IACzC,cAAc,EAAE,uBAAuB;IACvC,kBAAkB,EAAE,2BAA2B;IAC/C,iBAAiB,EAAE,cAAc;IACjC,iBAAiB,EAAE,cAAc;IACjC,cAAc,EAAE,kBAAkB;IAClC,aAAa,EAAE,iBAAiB;CACxB,CAAC;AAEE,QAAA,YAAY,GAAG;IAC1B,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,qBAAqB;IACjC,cAAc,EAAE,yBAAyB;IACzC,aAAa,EAAE,wBAAwB;IACvC,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,8BAA8B;IAC3C,eAAe,EAAE,kCAAkC;IACnD,YAAY,EAAE,+BAA+B;CACrC,CAAC;AAEX;;;GAGG;AACU,QAAA,gBAAgB,GAAG;IAC9B,sCAAsC;IACtC,WAAW,EAAE,yBAAyB;IACtC,WAAW,EAAE,yBAAyB;IACtC,SAAS,EAAE,uBAAuB;IAClC,WAAW,EAAE,yBAAyB;IACtC,aAAa,EAAE,2BAA2B;IAE1C,oDAAoD;IACpD,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAEhC,yBAAyB;IACzB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,qBAAqB,EAAE,uBAAuB;IAE9C,yBAAyB;IACzB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,wBAAwB;IAE1C,uBAAuB;IACvB,gBAAgB,EAAE,aAAa;IAC/B,OAAO,EAAE,SAAS;IAElB,2BAA2B;IAC3B,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,QAAQ;CACjB,CAAC"}
|
package/dist/semconv.test.js
CHANGED
|
@@ -23,10 +23,10 @@ const semconv_js_1 = require("./semconv.js");
|
|
|
23
23
|
});
|
|
24
24
|
});
|
|
25
25
|
(0, node_test_1.describe)("TjAttributes", () => {
|
|
26
|
-
(0, node_test_1.it)("has
|
|
27
|
-
strict_1.default.equal(semconv_js_1.TjAttributes.COST_USD, "
|
|
28
|
-
strict_1.default.equal(semconv_js_1.TjAttributes.ALERT_TYPE, "
|
|
29
|
-
strict_1.default.equal(semconv_js_1.TjAttributes.SANDBOX_EVENT, "
|
|
26
|
+
(0, node_test_1.it)("has tj-specific attribute keys", () => {
|
|
27
|
+
strict_1.default.equal(semconv_js_1.TjAttributes.COST_USD, "tokenjam.cost_usd");
|
|
28
|
+
strict_1.default.equal(semconv_js_1.TjAttributes.ALERT_TYPE, "tokenjam.alert.type");
|
|
29
|
+
strict_1.default.equal(semconv_js_1.TjAttributes.SANDBOX_EVENT, "tokenjam.sandbox.event");
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
32
|
//# sourceMappingURL=semconv.test.js.map
|
package/dist/semconv.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semconv.test.js","sourceRoot":"","sources":["../src/semconv.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyC;AACzC,gEAAwC;AACxC,6CAA6D;AAE7D,IAAA,oBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,cAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC1D,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QACpE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QACpE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;QACxE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;QAC1E,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC5D,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAC/D,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACjE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAA,cAAE,EAAC,
|
|
1
|
+
{"version":3,"file":"semconv.test.js","sourceRoot":"","sources":["../src/semconv.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyC;AACzC,gEAAwC;AACxC,6CAA6D;AAE7D,IAAA,oBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,cAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC1D,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QACpE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QACpE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;QACxE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;QAC1E,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC5D,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAC/D,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACjE,gBAAM,CAAC,KAAK,CAAC,4BAAe,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,oBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAA,cAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,gBAAM,CAAC,KAAK,CAAC,yBAAY,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACzD,gBAAM,CAAC,KAAK,CAAC,yBAAY,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QAC7D,gBAAM,CAAC,KAAK,CAAC,yBAAY,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.js
CHANGED