@agentmark-ai/shared-utils 0.5.1 → 0.6.1
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/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +215 -32
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +213 -32
- package/dist/index.mjs.map +1 -1
- package/dist/trace-io.d.mts +51 -0
- package/dist/trace-io.d.ts +51 -0
- package/dist/trace-io.js +52 -0
- package/dist/trace-io.js.map +1 -0
- package/dist/trace-io.mjs +27 -0
- package/dist/trace-io.mjs.map +1 -0
- package/package.json +24 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical trace-level input/output derivation — the ONE definition of
|
|
3
|
+
* "what is a trace's input and output", shared by every read path that
|
|
4
|
+
* projects spans into a trace summary: the cloud gateway's
|
|
5
|
+
* `transformTraceDetail`, the local CLI's `mapRawTraceToDetail`
|
|
6
|
+
* (`GET /v1/traces/:id`), and the CLI's dataset import-from-traces source
|
|
7
|
+
* mapper. Before this helper existed each call site had its own semantics
|
|
8
|
+
* (root span vs first/last GENERATION span), so the same trace answered
|
|
9
|
+
* differently depending on which endpoint you asked.
|
|
10
|
+
*
|
|
11
|
+
* Layered semantics, per-field:
|
|
12
|
+
*
|
|
13
|
+
* 1. **Root span first.** The WebhookRunner owns the prompt (root) span and
|
|
14
|
+
* records `agentmark.input` / `agentmark.output` on it — the true
|
|
15
|
+
* end-to-end request/response boundary. When the root span carries a
|
|
16
|
+
* value, it wins.
|
|
17
|
+
* 2. **GENERATION fallback.** Traces emitted without the runner (third-party
|
|
18
|
+
* OTEL instrumentation pointed straight at the collector, or pre-runner
|
|
19
|
+
* SDK versions) have no root-span I/O. Fall back to the first GENERATION
|
|
20
|
+
* span's input and the last GENERATION span's output, in timestamp order
|
|
21
|
+
* — the model's view of the run.
|
|
22
|
+
*
|
|
23
|
+
* Fields resolve independently: a trace whose root span has only an output
|
|
24
|
+
* (e.g. written by an older runner that recorded output but not input)
|
|
25
|
+
* gets its input from the GENERATION fallback.
|
|
26
|
+
*/
|
|
27
|
+
/** Minimal span projection the derivation needs — both the camelCase
|
|
28
|
+
* service-layer `Span` and mapped wire spans satisfy it. */
|
|
29
|
+
interface TraceIOSpan {
|
|
30
|
+
/** null/undefined/'' parent marks a root span. */
|
|
31
|
+
parentId?: string | null;
|
|
32
|
+
/** Span classification; only 'GENERATION' participates in the fallback. */
|
|
33
|
+
type?: string | null;
|
|
34
|
+
/** Sort key for first/last GENERATION. ISO strings and epoch numbers both
|
|
35
|
+
* order correctly under `<`. */
|
|
36
|
+
timestamp?: string | number;
|
|
37
|
+
input?: unknown;
|
|
38
|
+
output?: unknown;
|
|
39
|
+
}
|
|
40
|
+
interface TraceIO {
|
|
41
|
+
input?: unknown;
|
|
42
|
+
output?: unknown;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Derive trace-level input/output from a trace's spans. Returns each field
|
|
46
|
+
* only when a value exists — callers spread the result so absent fields stay
|
|
47
|
+
* absent on the wire (`{...deriveTraceIO(spans)}`).
|
|
48
|
+
*/
|
|
49
|
+
declare function deriveTraceIO(spans: readonly TraceIOSpan[]): TraceIO;
|
|
50
|
+
|
|
51
|
+
export { type TraceIO, type TraceIOSpan, deriveTraceIO };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical trace-level input/output derivation — the ONE definition of
|
|
3
|
+
* "what is a trace's input and output", shared by every read path that
|
|
4
|
+
* projects spans into a trace summary: the cloud gateway's
|
|
5
|
+
* `transformTraceDetail`, the local CLI's `mapRawTraceToDetail`
|
|
6
|
+
* (`GET /v1/traces/:id`), and the CLI's dataset import-from-traces source
|
|
7
|
+
* mapper. Before this helper existed each call site had its own semantics
|
|
8
|
+
* (root span vs first/last GENERATION span), so the same trace answered
|
|
9
|
+
* differently depending on which endpoint you asked.
|
|
10
|
+
*
|
|
11
|
+
* Layered semantics, per-field:
|
|
12
|
+
*
|
|
13
|
+
* 1. **Root span first.** The WebhookRunner owns the prompt (root) span and
|
|
14
|
+
* records `agentmark.input` / `agentmark.output` on it — the true
|
|
15
|
+
* end-to-end request/response boundary. When the root span carries a
|
|
16
|
+
* value, it wins.
|
|
17
|
+
* 2. **GENERATION fallback.** Traces emitted without the runner (third-party
|
|
18
|
+
* OTEL instrumentation pointed straight at the collector, or pre-runner
|
|
19
|
+
* SDK versions) have no root-span I/O. Fall back to the first GENERATION
|
|
20
|
+
* span's input and the last GENERATION span's output, in timestamp order
|
|
21
|
+
* — the model's view of the run.
|
|
22
|
+
*
|
|
23
|
+
* Fields resolve independently: a trace whose root span has only an output
|
|
24
|
+
* (e.g. written by an older runner that recorded output but not input)
|
|
25
|
+
* gets its input from the GENERATION fallback.
|
|
26
|
+
*/
|
|
27
|
+
/** Minimal span projection the derivation needs — both the camelCase
|
|
28
|
+
* service-layer `Span` and mapped wire spans satisfy it. */
|
|
29
|
+
interface TraceIOSpan {
|
|
30
|
+
/** null/undefined/'' parent marks a root span. */
|
|
31
|
+
parentId?: string | null;
|
|
32
|
+
/** Span classification; only 'GENERATION' participates in the fallback. */
|
|
33
|
+
type?: string | null;
|
|
34
|
+
/** Sort key for first/last GENERATION. ISO strings and epoch numbers both
|
|
35
|
+
* order correctly under `<`. */
|
|
36
|
+
timestamp?: string | number;
|
|
37
|
+
input?: unknown;
|
|
38
|
+
output?: unknown;
|
|
39
|
+
}
|
|
40
|
+
interface TraceIO {
|
|
41
|
+
input?: unknown;
|
|
42
|
+
output?: unknown;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Derive trace-level input/output from a trace's spans. Returns each field
|
|
46
|
+
* only when a value exists — callers spread the result so absent fields stay
|
|
47
|
+
* absent on the wire (`{...deriveTraceIO(spans)}`).
|
|
48
|
+
*/
|
|
49
|
+
declare function deriveTraceIO(spans: readonly TraceIOSpan[]): TraceIO;
|
|
50
|
+
|
|
51
|
+
export { type TraceIO, type TraceIOSpan, deriveTraceIO };
|
package/dist/trace-io.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/trace-io.ts
|
|
21
|
+
var trace_io_exports = {};
|
|
22
|
+
__export(trace_io_exports, {
|
|
23
|
+
deriveTraceIO: () => deriveTraceIO
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(trace_io_exports);
|
|
26
|
+
function present(v) {
|
|
27
|
+
if (v === null || v === void 0) return false;
|
|
28
|
+
if (typeof v === "string") return v.length > 0;
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
function deriveTraceIO(spans) {
|
|
32
|
+
var _a, _b;
|
|
33
|
+
const rootSpan = (_a = spans.find((s) => !s.parentId)) != null ? _a : spans[0];
|
|
34
|
+
const generationSpans = spans.filter((s) => s.type === "GENERATION").sort((a, b) => {
|
|
35
|
+
var _a2, _b2;
|
|
36
|
+
const ta = (_a2 = a.timestamp) != null ? _a2 : 0;
|
|
37
|
+
const tb = (_b2 = b.timestamp) != null ? _b2 : 0;
|
|
38
|
+
return ta < tb ? -1 : ta > tb ? 1 : 0;
|
|
39
|
+
});
|
|
40
|
+
const input = present(rootSpan == null ? void 0 : rootSpan.input) ? rootSpan == null ? void 0 : rootSpan.input : (_b = generationSpans.find((s) => present(s.input))) == null ? void 0 : _b.input;
|
|
41
|
+
const lastGenWithOutput = [...generationSpans].reverse().find((s) => present(s.output));
|
|
42
|
+
const output = present(rootSpan == null ? void 0 : rootSpan.output) ? rootSpan == null ? void 0 : rootSpan.output : lastGenWithOutput == null ? void 0 : lastGenWithOutput.output;
|
|
43
|
+
return {
|
|
44
|
+
...present(input) ? { input } : {},
|
|
45
|
+
...present(output) ? { output } : {}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
49
|
+
0 && (module.exports = {
|
|
50
|
+
deriveTraceIO
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=trace-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/trace-io.ts"],"sourcesContent":["/**\n * Canonical trace-level input/output derivation — the ONE definition of\n * \"what is a trace's input and output\", shared by every read path that\n * projects spans into a trace summary: the cloud gateway's\n * `transformTraceDetail`, the local CLI's `mapRawTraceToDetail`\n * (`GET /v1/traces/:id`), and the CLI's dataset import-from-traces source\n * mapper. Before this helper existed each call site had its own semantics\n * (root span vs first/last GENERATION span), so the same trace answered\n * differently depending on which endpoint you asked.\n *\n * Layered semantics, per-field:\n *\n * 1. **Root span first.** The WebhookRunner owns the prompt (root) span and\n * records `agentmark.input` / `agentmark.output` on it — the true\n * end-to-end request/response boundary. When the root span carries a\n * value, it wins.\n * 2. **GENERATION fallback.** Traces emitted without the runner (third-party\n * OTEL instrumentation pointed straight at the collector, or pre-runner\n * SDK versions) have no root-span I/O. Fall back to the first GENERATION\n * span's input and the last GENERATION span's output, in timestamp order\n * — the model's view of the run.\n *\n * Fields resolve independently: a trace whose root span has only an output\n * (e.g. written by an older runner that recorded output but not input)\n * gets its input from the GENERATION fallback.\n */\n\n/** Minimal span projection the derivation needs — both the camelCase\n * service-layer `Span` and mapped wire spans satisfy it. */\nexport interface TraceIOSpan {\n /** null/undefined/'' parent marks a root span. */\n parentId?: string | null;\n /** Span classification; only 'GENERATION' participates in the fallback. */\n type?: string | null;\n /** Sort key for first/last GENERATION. ISO strings and epoch numbers both\n * order correctly under `<`. */\n timestamp?: string | number;\n input?: unknown;\n output?: unknown;\n}\n\nexport interface TraceIO {\n input?: unknown;\n output?: unknown;\n}\n\n/** Truthy-and-nonempty check that keeps non-string payloads (objects from\n * already-parsed wire spans) while rejecting '', null, undefined. */\nfunction present(v: unknown): boolean {\n if (v === null || v === undefined) return false;\n if (typeof v === \"string\") return v.length > 0;\n return true;\n}\n\n/**\n * Derive trace-level input/output from a trace's spans. Returns each field\n * only when a value exists — callers spread the result so absent fields stay\n * absent on the wire (`{...deriveTraceIO(spans)}`).\n */\nexport function deriveTraceIO(spans: readonly TraceIOSpan[]): TraceIO {\n const rootSpan = spans.find((s) => !s.parentId) ?? spans[0];\n\n const generationSpans = spans\n .filter((s) => s.type === \"GENERATION\")\n .sort((a, b) => {\n const ta = a.timestamp ?? 0;\n const tb = b.timestamp ?? 0;\n return ta < tb ? -1 : ta > tb ? 1 : 0;\n });\n\n const input = present(rootSpan?.input)\n ? rootSpan?.input\n : generationSpans.find((s) => present(s.input))?.input;\n\n const lastGenWithOutput = [...generationSpans]\n .reverse()\n .find((s) => present(s.output));\n const output = present(rootSpan?.output)\n ? rootSpan?.output\n : lastGenWithOutput?.output;\n\n return {\n ...(present(input) ? { input } : {}),\n ...(present(output) ? { output } : {}),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDA,SAAS,QAAQ,GAAqB;AACpC,MAAI,MAAM,QAAQ,MAAM,OAAW,QAAO;AAC1C,MAAI,OAAO,MAAM,SAAU,QAAO,EAAE,SAAS;AAC7C,SAAO;AACT;AAOO,SAAS,cAAc,OAAwC;AA3DtE;AA4DE,QAAM,YAAW,WAAM,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,MAA7B,YAAkC,MAAM,CAAC;AAE1D,QAAM,kBAAkB,MACrB,OAAO,CAAC,MAAM,EAAE,SAAS,YAAY,EACrC,KAAK,CAAC,GAAG,MAAM;AAhEpB,QAAAA,KAAAC;AAiEM,UAAM,MAAKD,MAAA,EAAE,cAAF,OAAAA,MAAe;AAC1B,UAAM,MAAKC,MAAA,EAAE,cAAF,OAAAA,MAAe;AAC1B,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI;AAAA,EACtC,CAAC;AAEH,QAAM,QAAQ,QAAQ,qCAAU,KAAK,IACjC,qCAAU,SACV,qBAAgB,KAAK,CAAC,MAAM,QAAQ,EAAE,KAAK,CAAC,MAA5C,mBAA+C;AAEnD,QAAM,oBAAoB,CAAC,GAAG,eAAe,EAC1C,QAAQ,EACR,KAAK,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC;AAChC,QAAM,SAAS,QAAQ,qCAAU,MAAM,IACnC,qCAAU,SACV,uDAAmB;AAEvB,SAAO;AAAA,IACL,GAAI,QAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC;AAAA,IAClC,GAAI,QAAQ,MAAM,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,EACtC;AACF;","names":["_a","_b"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// src/trace-io.ts
|
|
2
|
+
function present(v) {
|
|
3
|
+
if (v === null || v === void 0) return false;
|
|
4
|
+
if (typeof v === "string") return v.length > 0;
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
function deriveTraceIO(spans) {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const rootSpan = (_a = spans.find((s) => !s.parentId)) != null ? _a : spans[0];
|
|
10
|
+
const generationSpans = spans.filter((s) => s.type === "GENERATION").sort((a, b) => {
|
|
11
|
+
var _a2, _b2;
|
|
12
|
+
const ta = (_a2 = a.timestamp) != null ? _a2 : 0;
|
|
13
|
+
const tb = (_b2 = b.timestamp) != null ? _b2 : 0;
|
|
14
|
+
return ta < tb ? -1 : ta > tb ? 1 : 0;
|
|
15
|
+
});
|
|
16
|
+
const input = present(rootSpan == null ? void 0 : rootSpan.input) ? rootSpan == null ? void 0 : rootSpan.input : (_b = generationSpans.find((s) => present(s.input))) == null ? void 0 : _b.input;
|
|
17
|
+
const lastGenWithOutput = [...generationSpans].reverse().find((s) => present(s.output));
|
|
18
|
+
const output = present(rootSpan == null ? void 0 : rootSpan.output) ? rootSpan == null ? void 0 : rootSpan.output : lastGenWithOutput == null ? void 0 : lastGenWithOutput.output;
|
|
19
|
+
return {
|
|
20
|
+
...present(input) ? { input } : {},
|
|
21
|
+
...present(output) ? { output } : {}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
deriveTraceIO
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=trace-io.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/trace-io.ts"],"sourcesContent":["/**\n * Canonical trace-level input/output derivation — the ONE definition of\n * \"what is a trace's input and output\", shared by every read path that\n * projects spans into a trace summary: the cloud gateway's\n * `transformTraceDetail`, the local CLI's `mapRawTraceToDetail`\n * (`GET /v1/traces/:id`), and the CLI's dataset import-from-traces source\n * mapper. Before this helper existed each call site had its own semantics\n * (root span vs first/last GENERATION span), so the same trace answered\n * differently depending on which endpoint you asked.\n *\n * Layered semantics, per-field:\n *\n * 1. **Root span first.** The WebhookRunner owns the prompt (root) span and\n * records `agentmark.input` / `agentmark.output` on it — the true\n * end-to-end request/response boundary. When the root span carries a\n * value, it wins.\n * 2. **GENERATION fallback.** Traces emitted without the runner (third-party\n * OTEL instrumentation pointed straight at the collector, or pre-runner\n * SDK versions) have no root-span I/O. Fall back to the first GENERATION\n * span's input and the last GENERATION span's output, in timestamp order\n * — the model's view of the run.\n *\n * Fields resolve independently: a trace whose root span has only an output\n * (e.g. written by an older runner that recorded output but not input)\n * gets its input from the GENERATION fallback.\n */\n\n/** Minimal span projection the derivation needs — both the camelCase\n * service-layer `Span` and mapped wire spans satisfy it. */\nexport interface TraceIOSpan {\n /** null/undefined/'' parent marks a root span. */\n parentId?: string | null;\n /** Span classification; only 'GENERATION' participates in the fallback. */\n type?: string | null;\n /** Sort key for first/last GENERATION. ISO strings and epoch numbers both\n * order correctly under `<`. */\n timestamp?: string | number;\n input?: unknown;\n output?: unknown;\n}\n\nexport interface TraceIO {\n input?: unknown;\n output?: unknown;\n}\n\n/** Truthy-and-nonempty check that keeps non-string payloads (objects from\n * already-parsed wire spans) while rejecting '', null, undefined. */\nfunction present(v: unknown): boolean {\n if (v === null || v === undefined) return false;\n if (typeof v === \"string\") return v.length > 0;\n return true;\n}\n\n/**\n * Derive trace-level input/output from a trace's spans. Returns each field\n * only when a value exists — callers spread the result so absent fields stay\n * absent on the wire (`{...deriveTraceIO(spans)}`).\n */\nexport function deriveTraceIO(spans: readonly TraceIOSpan[]): TraceIO {\n const rootSpan = spans.find((s) => !s.parentId) ?? spans[0];\n\n const generationSpans = spans\n .filter((s) => s.type === \"GENERATION\")\n .sort((a, b) => {\n const ta = a.timestamp ?? 0;\n const tb = b.timestamp ?? 0;\n return ta < tb ? -1 : ta > tb ? 1 : 0;\n });\n\n const input = present(rootSpan?.input)\n ? rootSpan?.input\n : generationSpans.find((s) => present(s.input))?.input;\n\n const lastGenWithOutput = [...generationSpans]\n .reverse()\n .find((s) => present(s.output));\n const output = present(rootSpan?.output)\n ? rootSpan?.output\n : lastGenWithOutput?.output;\n\n return {\n ...(present(input) ? { input } : {}),\n ...(present(output) ? { output } : {}),\n };\n}\n"],"mappings":";AAgDA,SAAS,QAAQ,GAAqB;AACpC,MAAI,MAAM,QAAQ,MAAM,OAAW,QAAO;AAC1C,MAAI,OAAO,MAAM,SAAU,QAAO,EAAE,SAAS;AAC7C,SAAO;AACT;AAOO,SAAS,cAAc,OAAwC;AA3DtE;AA4DE,QAAM,YAAW,WAAM,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,MAA7B,YAAkC,MAAM,CAAC;AAE1D,QAAM,kBAAkB,MACrB,OAAO,CAAC,MAAM,EAAE,SAAS,YAAY,EACrC,KAAK,CAAC,GAAG,MAAM;AAhEpB,QAAAA,KAAAC;AAiEM,UAAM,MAAKD,MAAA,EAAE,cAAF,OAAAA,MAAe;AAC1B,UAAM,MAAKC,MAAA,EAAE,cAAF,OAAAA,MAAe;AAC1B,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI;AAAA,EACtC,CAAC;AAEH,QAAM,QAAQ,QAAQ,qCAAU,KAAK,IACjC,qCAAU,SACV,qBAAgB,KAAK,CAAC,MAAM,QAAQ,EAAE,KAAK,CAAC,MAA5C,mBAA+C;AAEnD,QAAM,oBAAoB,CAAC,GAAG,eAAe,EAC1C,QAAQ,EACR,KAAK,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC;AAChC,QAAM,SAAS,QAAQ,qCAAU,MAAM,IACnC,qCAAU,SACV,uDAAmB;AAEvB,SAAO;AAAA,IACL,GAAI,QAAQ,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC;AAAA,IAClC,GAAI,QAAQ,MAAM,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,EACtC;AACF;","names":["_a","_b"]}
|
package/package.json
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentmark-ai/shared-utils",
|
|
3
3
|
"main": "./dist/index.js",
|
|
4
|
-
"types": "./dist/index.ts",
|
|
5
|
-
"
|
|
4
|
+
"types": "./dist/index.d.ts",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"import": {
|
|
8
|
+
"types": "./dist/index.d.mts",
|
|
9
|
+
"default": "./dist/index.mjs"
|
|
10
|
+
},
|
|
11
|
+
"require": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"./trace-io": {
|
|
17
|
+
"import": {
|
|
18
|
+
"types": "./dist/trace-io.d.mts",
|
|
19
|
+
"default": "./dist/trace-io.mjs"
|
|
20
|
+
},
|
|
21
|
+
"require": {
|
|
22
|
+
"types": "./dist/trace-io.d.ts",
|
|
23
|
+
"default": "./dist/trace-io.js"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"version": "0.6.1",
|
|
6
28
|
"scripts": {
|
|
7
29
|
"build": "tsup",
|
|
8
30
|
"lint": "eslint .",
|