@alumnium/core 0.24.0-alpha.1 → 0.24.0-alpha.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/package.json +5 -6
- package/src/internal.cjs +73 -78
- package/src/internal.cjs.map +6 -5
- package/src/internal.js +73 -74
- package/src/internal.js.map +6 -5
- package/src/telemetry/Tracer.d.ts +5 -0
- package/src/telemetry/loadTelemetry.d.ts +20 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alumnium/core",
|
|
3
|
-
"version": "0.24.0-alpha.
|
|
3
|
+
"version": "0.24.0-alpha.2",
|
|
4
4
|
"description": "Alumnium core: Alumni, agents, environment, telemetry, storage, accessibility trees, tools and driver contracts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Alex Rodionov <p0deje@gmail.com>",
|
|
@@ -47,12 +47,7 @@
|
|
|
47
47
|
"@js-fns/xxhash": "^0.1.0",
|
|
48
48
|
"@logtape/file": "^2.0.2",
|
|
49
49
|
"@logtape/logtape": "^2.0.2",
|
|
50
|
-
"@logtape/otel": "^2.0.5",
|
|
51
50
|
"@opentelemetry/api": "^1.9.1",
|
|
52
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.215.0",
|
|
53
|
-
"@opentelemetry/resources": "^2.7.0",
|
|
54
|
-
"@opentelemetry/sdk-trace-base": "^2.7.0",
|
|
55
|
-
"@opentelemetry/sdk-trace-node": "^2.7.0",
|
|
56
51
|
"alwaysly": "^0.4.0",
|
|
57
52
|
"cac": "^7.0.0",
|
|
58
53
|
"case-anything": "^3.1.2",
|
|
@@ -68,9 +63,13 @@
|
|
|
68
63
|
"zod": "^4.4.1"
|
|
69
64
|
},
|
|
70
65
|
"peerDependencies": {
|
|
66
|
+
"@alumnium/telemetry": "0.24.0-alpha.2",
|
|
71
67
|
"ai": "^7.0.78"
|
|
72
68
|
},
|
|
73
69
|
"peerDependenciesMeta": {
|
|
70
|
+
"@alumnium/telemetry": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
74
73
|
"ai": {
|
|
75
74
|
"optional": true
|
|
76
75
|
}
|
package/src/internal.cjs
CHANGED
|
@@ -1186,7 +1186,6 @@ var import_node_path3 = __toESM(require("node:path"), 1);
|
|
|
1186
1186
|
var import_node_util = require("node:util");
|
|
1187
1187
|
var import_file = require("@logtape/file");
|
|
1188
1188
|
var import_logtape = require("@logtape/logtape");
|
|
1189
|
-
var import_otel = require("@logtape/otel");
|
|
1190
1189
|
|
|
1191
1190
|
// core/src/utils/fs.ts
|
|
1192
1191
|
var import_node_fs = require("node:fs");
|
|
@@ -1244,12 +1243,22 @@ class Instrumentation {
|
|
|
1244
1243
|
}
|
|
1245
1244
|
}
|
|
1246
1245
|
|
|
1246
|
+
// core/src/telemetry/loadTelemetry.ts
|
|
1247
|
+
var telemetryPromise;
|
|
1248
|
+
function loadTelemetry() {
|
|
1249
|
+
return (telemetryPromise ??= import("@alumnium/telemetry").then(
|
|
1250
|
+
(module2) => module2,
|
|
1251
|
+
() => {
|
|
1252
|
+
console.warn(
|
|
1253
|
+
'ALUMNIUM_TRACE is enabled, but traces and logs aren\'t exported without the "@alumnium/telemetry" package. Install it, e.g. `npm install @alumnium/telemetry`.',
|
|
1254
|
+
);
|
|
1255
|
+
return;
|
|
1256
|
+
},
|
|
1257
|
+
));
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1247
1260
|
// core/src/telemetry/Tracer.ts
|
|
1248
1261
|
var import_api = require("@opentelemetry/api");
|
|
1249
|
-
var import_exporter_trace_otlp_http = require("@opentelemetry/exporter-trace-otlp-http");
|
|
1250
|
-
var import_resources = require("@opentelemetry/resources");
|
|
1251
|
-
var import_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
|
|
1252
|
-
var import_sdk_trace_node = require("@opentelemetry/sdk-trace-node");
|
|
1253
1262
|
var import_nanoid = require("nanoid");
|
|
1254
1263
|
|
|
1255
1264
|
// core/src/typeUtils.ts
|
|
@@ -1273,47 +1282,40 @@ class Tracer {
|
|
|
1273
1282
|
}
|
|
1274
1283
|
const spanMethod = (spanName, ...args) => {
|
|
1275
1284
|
const [attrs, bodyFnOrKey] = this.#normalizeSpanArgs(args);
|
|
1276
|
-
const
|
|
1285
|
+
const tracer = this.#configure();
|
|
1277
1286
|
if (typeof bodyFnOrKey === "string" || !bodyFnOrKey) {
|
|
1278
1287
|
const key = bodyFnOrKey || import_nanoid.nanoid();
|
|
1279
|
-
if (!
|
|
1288
|
+
if (!tracer) {
|
|
1280
1289
|
const span = this.#dummySpan;
|
|
1281
1290
|
this.#spans.set(key, span);
|
|
1282
1291
|
return span;
|
|
1283
1292
|
}
|
|
1284
|
-
const otelSpan =
|
|
1285
|
-
spanName,
|
|
1286
|
-
traceAttrs(attrs),
|
|
1287
|
-
);
|
|
1293
|
+
const otelSpan = tracer.startSpan(spanName, traceAttrs(attrs));
|
|
1288
1294
|
return this.#span(otelSpan, key);
|
|
1289
1295
|
}
|
|
1290
1296
|
const bodyFn = bodyFnOrKey;
|
|
1291
|
-
if (!
|
|
1292
|
-
return
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
throw error;
|
|
1314
|
-
}
|
|
1315
|
-
},
|
|
1316
|
-
);
|
|
1297
|
+
if (!tracer) return bodyFn(this.#dummySpan);
|
|
1298
|
+
return tracer.startActiveSpan(spanName, traceAttrs(attrs), (otelSpan) => {
|
|
1299
|
+
const span = this.#span(otelSpan);
|
|
1300
|
+
try {
|
|
1301
|
+
const result = bodyFn(span);
|
|
1302
|
+
if (result instanceof Promise)
|
|
1303
|
+
return result
|
|
1304
|
+
.then((res) => {
|
|
1305
|
+
span.succeed();
|
|
1306
|
+
return res;
|
|
1307
|
+
})
|
|
1308
|
+
.catch((error) => {
|
|
1309
|
+
span.fail(error);
|
|
1310
|
+
throw error;
|
|
1311
|
+
});
|
|
1312
|
+
span.succeed();
|
|
1313
|
+
return result;
|
|
1314
|
+
} catch (error) {
|
|
1315
|
+
span.fail(error);
|
|
1316
|
+
throw error;
|
|
1317
|
+
}
|
|
1318
|
+
});
|
|
1317
1319
|
};
|
|
1318
1320
|
return {
|
|
1319
1321
|
span: spanMethod,
|
|
@@ -1325,8 +1327,8 @@ class Tracer {
|
|
|
1325
1327
|
}
|
|
1326
1328
|
},
|
|
1327
1329
|
event: (eventName, ...args) => {
|
|
1328
|
-
const
|
|
1329
|
-
if (!
|
|
1330
|
+
const tracer = this.#configure();
|
|
1331
|
+
if (!tracer) return;
|
|
1330
1332
|
const attrs = args[0] || {};
|
|
1331
1333
|
const fullEventName = `${moduleName}.${eventName}`;
|
|
1332
1334
|
const eventAttrs = Tracer.#compactAttrs(attrs);
|
|
@@ -1337,7 +1339,7 @@ class Tracer {
|
|
|
1337
1339
|
activeSpan.addEvent(fullEventName, eventAttrs);
|
|
1338
1340
|
return;
|
|
1339
1341
|
}
|
|
1340
|
-
const span =
|
|
1342
|
+
const span = tracer.startSpan(fullEventName, {
|
|
1341
1343
|
attributes: eventAttrs,
|
|
1342
1344
|
});
|
|
1343
1345
|
span.addEvent(fullEventName, eventAttrs);
|
|
@@ -1378,9 +1380,6 @@ class Tracer {
|
|
|
1378
1380
|
}),
|
|
1379
1381
|
};
|
|
1380
1382
|
}
|
|
1381
|
-
static #tracer(provider) {
|
|
1382
|
-
return provider.getTracer(this.serviceName);
|
|
1383
|
-
}
|
|
1384
1383
|
static #compactAttrs(attrs) {
|
|
1385
1384
|
return Object.fromEntries(
|
|
1386
1385
|
Object.entries(attrs).filter(([, value]) => value != null),
|
|
@@ -1406,10 +1405,14 @@ class Tracer {
|
|
|
1406
1405
|
}
|
|
1407
1406
|
}
|
|
1408
1407
|
}
|
|
1408
|
+
static async init() {
|
|
1409
|
+
this.#configure();
|
|
1410
|
+
await this.#tracing;
|
|
1411
|
+
}
|
|
1409
1412
|
static async flush() {
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
return this.#flush(
|
|
1413
|
+
this.#configure();
|
|
1414
|
+
const tracing = await this.#tracing;
|
|
1415
|
+
if (tracing) return this.#flush(tracing);
|
|
1413
1416
|
}
|
|
1414
1417
|
static #spans = new Map();
|
|
1415
1418
|
static #dummySpan = {
|
|
@@ -1485,33 +1488,25 @@ class Tracer {
|
|
|
1485
1488
|
);
|
|
1486
1489
|
otelSpan.setStatus(otelStatus);
|
|
1487
1490
|
}
|
|
1488
|
-
static async #flush(
|
|
1491
|
+
static async #flush(tracing) {
|
|
1489
1492
|
this.#spans.forEach((span) => {
|
|
1490
1493
|
span.fail("Span not ended before flush");
|
|
1491
1494
|
});
|
|
1492
|
-
await
|
|
1495
|
+
await tracing.flush().catch(() => {});
|
|
1493
1496
|
}
|
|
1494
|
-
static #
|
|
1497
|
+
static #tracing;
|
|
1495
1498
|
static #configure() {
|
|
1496
|
-
if (this.#
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
),
|
|
1506
|
-
],
|
|
1507
|
-
});
|
|
1508
|
-
provider.register();
|
|
1509
|
-
process.once("beforeExit", () => void this.#flush(provider));
|
|
1510
|
-
this.#provider = provider;
|
|
1511
|
-
} else {
|
|
1512
|
-
this.#provider = null;
|
|
1499
|
+
if (this.#tracing === undefined) {
|
|
1500
|
+
this.#tracing = this.enabled
|
|
1501
|
+
? loadTelemetry().then((telemetry) => {
|
|
1502
|
+
const tracing = telemetry?.startTracing(this.serviceName);
|
|
1503
|
+
if (tracing)
|
|
1504
|
+
process.once("beforeExit", () => void this.#flush(tracing));
|
|
1505
|
+
return tracing;
|
|
1506
|
+
})
|
|
1507
|
+
: null;
|
|
1513
1508
|
}
|
|
1514
|
-
return this.#
|
|
1509
|
+
return this.#tracing ? import_api.trace.getTracer(this.serviceName) : null;
|
|
1515
1510
|
}
|
|
1516
1511
|
}
|
|
1517
1512
|
|
|
@@ -1564,6 +1559,7 @@ class Logger {
|
|
|
1564
1559
|
await this.#flush();
|
|
1565
1560
|
process.exit(1);
|
|
1566
1561
|
}
|
|
1562
|
+
await Tracer.init();
|
|
1567
1563
|
}
|
|
1568
1564
|
static #level;
|
|
1569
1565
|
static set level(newLevel) {
|
|
@@ -1641,11 +1637,10 @@ class Logger {
|
|
|
1641
1637
|
this.#flush();
|
|
1642
1638
|
});
|
|
1643
1639
|
}
|
|
1644
|
-
|
|
1640
|
+
const telemetry = Tracer.enabled ? await loadTelemetry() : undefined;
|
|
1641
|
+
if (telemetry) {
|
|
1645
1642
|
mainSinks.push("otel");
|
|
1646
|
-
sinks.otel =
|
|
1647
|
-
serviceName: Instrumentation.serviceName,
|
|
1648
|
-
});
|
|
1643
|
+
sinks.otel = telemetry.getLogSink(Instrumentation.serviceName);
|
|
1649
1644
|
}
|
|
1650
1645
|
return {
|
|
1651
1646
|
sinks,
|
|
@@ -9229,7 +9224,7 @@ function usesAdaptiveThinking(modelName) {
|
|
|
9229
9224
|
// core/package.json
|
|
9230
9225
|
var package_default = {
|
|
9231
9226
|
name: "@alumnium/core",
|
|
9232
|
-
version: "0.24.0-alpha.
|
|
9227
|
+
version: "0.24.0-alpha.2",
|
|
9233
9228
|
description:
|
|
9234
9229
|
"Alumnium core: Alumni, agents, environment, telemetry, storage, accessibility trees, tools and driver contracts",
|
|
9235
9230
|
license: "MIT",
|
|
@@ -9245,12 +9240,7 @@ var package_default = {
|
|
|
9245
9240
|
"@js-fns/xxhash": "^0.1.0",
|
|
9246
9241
|
"@logtape/file": "^2.0.2",
|
|
9247
9242
|
"@logtape/logtape": "^2.0.2",
|
|
9248
|
-
"@logtape/otel": "^2.0.5",
|
|
9249
9243
|
"@opentelemetry/api": "^1.9.1",
|
|
9250
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.215.0",
|
|
9251
|
-
"@opentelemetry/resources": "^2.7.0",
|
|
9252
|
-
"@opentelemetry/sdk-trace-base": "^2.7.0",
|
|
9253
|
-
"@opentelemetry/sdk-trace-node": "^2.7.0",
|
|
9254
9244
|
alwaysly: "^0.4.0",
|
|
9255
9245
|
cac: "^7.0.0",
|
|
9256
9246
|
"case-anything": "^3.1.2",
|
|
@@ -9266,13 +9256,18 @@ var package_default = {
|
|
|
9266
9256
|
zod: "^4.4.1",
|
|
9267
9257
|
},
|
|
9268
9258
|
devDependencies: {
|
|
9259
|
+
"@alumnium/telemetry": "workspace:*",
|
|
9269
9260
|
ai: "^7.0.78",
|
|
9270
9261
|
oxfmt: "^0.65.0",
|
|
9271
9262
|
},
|
|
9272
9263
|
peerDependencies: {
|
|
9264
|
+
"@alumnium/telemetry": "workspace:*",
|
|
9273
9265
|
ai: "^7.0.78",
|
|
9274
9266
|
},
|
|
9275
9267
|
peerDependenciesMeta: {
|
|
9268
|
+
"@alumnium/telemetry": {
|
|
9269
|
+
optional: true,
|
|
9270
|
+
},
|
|
9276
9271
|
ai: {
|
|
9277
9272
|
optional: true,
|
|
9278
9273
|
},
|
|
@@ -9291,5 +9286,5 @@ function sleep(ms) {
|
|
|
9291
9286
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
9292
9287
|
}
|
|
9293
9288
|
|
|
9294
|
-
//# debugId=
|
|
9289
|
+
//# debugId=7F39F76FB547C9B864756E2164756E21
|
|
9295
9290
|
//# sourceMappingURL=internal.cjs.map
|