@qlever-llc/trellis 0.10.10 → 0.10.12

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.
Files changed (131) hide show
  1. package/esm/client.d.ts +2 -0
  2. package/esm/client.d.ts.map +1 -1
  3. package/esm/client.js +2 -0
  4. package/esm/client_connect.d.ts +3 -2
  5. package/esm/client_connect.d.ts.map +1 -1
  6. package/esm/client_connect.js +4 -1
  7. package/esm/errors/TrellisError.d.ts +3 -3
  8. package/esm/errors/TrellisError.js +3 -3
  9. package/esm/server/health.d.ts.map +1 -1
  10. package/esm/server/health.js +34 -3
  11. package/esm/server/internal_jobs/job-manager.d.ts.map +1 -1
  12. package/esm/server/internal_jobs/job-manager.js +32 -1
  13. package/esm/server/runtime.d.ts +3 -0
  14. package/esm/server/runtime.d.ts.map +1 -1
  15. package/esm/server/service.d.ts +15 -0
  16. package/esm/server/service.d.ts.map +1 -1
  17. package/esm/server/service.js +41 -3
  18. package/esm/server.d.ts.map +1 -1
  19. package/esm/server.js +99 -10
  20. package/esm/service/deno.d.ts +1 -1
  21. package/esm/service/deno.d.ts.map +1 -1
  22. package/esm/service/mod.d.ts +1 -1
  23. package/esm/service/mod.d.ts.map +1 -1
  24. package/esm/service/node.d.ts +1 -1
  25. package/esm/service/node.d.ts.map +1 -1
  26. package/esm/service/outbox_inbox.d.ts.map +1 -1
  27. package/esm/service/outbox_inbox.js +14 -0
  28. package/esm/telemetry/core.d.ts.map +1 -1
  29. package/esm/telemetry/core.js +1 -1
  30. package/esm/telemetry/env.d.ts.map +1 -1
  31. package/esm/telemetry/env.js +6 -1
  32. package/esm/telemetry/init.d.ts +3 -0
  33. package/esm/telemetry/init.d.ts.map +1 -0
  34. package/esm/telemetry/init.js +7 -0
  35. package/esm/telemetry/metrics.d.ts +34 -0
  36. package/esm/telemetry/metrics.d.ts.map +1 -0
  37. package/esm/telemetry/metrics.js +181 -0
  38. package/esm/telemetry/mod.d.ts +3 -0
  39. package/esm/telemetry/mod.d.ts.map +1 -1
  40. package/esm/telemetry/mod.js +2 -0
  41. package/esm/telemetry/runtime.d.ts +2 -0
  42. package/esm/telemetry/runtime.d.ts.map +1 -0
  43. package/esm/telemetry/runtime.js +134 -0
  44. package/esm/telemetry.d.ts +3 -0
  45. package/esm/telemetry.d.ts.map +1 -0
  46. package/esm/telemetry.js +2 -0
  47. package/esm/transfer.d.ts.map +1 -1
  48. package/esm/transfer.js +27 -16
  49. package/esm/trellis.d.ts +28 -4
  50. package/esm/trellis.d.ts.map +1 -1
  51. package/esm/trellis.js +575 -80
  52. package/package.json +7 -5
  53. package/script/client.d.ts +2 -0
  54. package/script/client.d.ts.map +1 -1
  55. package/script/client.js +2 -0
  56. package/script/client_connect.d.ts +3 -2
  57. package/script/client_connect.d.ts.map +1 -1
  58. package/script/client_connect.js +4 -1
  59. package/script/errors/TrellisError.d.ts +3 -3
  60. package/script/errors/TrellisError.js +3 -3
  61. package/script/server/health.d.ts.map +1 -1
  62. package/script/server/health.js +34 -3
  63. package/script/server/internal_jobs/job-manager.d.ts.map +1 -1
  64. package/script/server/internal_jobs/job-manager.js +32 -1
  65. package/script/server/runtime.d.ts +3 -0
  66. package/script/server/runtime.d.ts.map +1 -1
  67. package/script/server/service.d.ts +15 -0
  68. package/script/server/service.d.ts.map +1 -1
  69. package/script/server/service.js +40 -2
  70. package/script/server.d.ts.map +1 -1
  71. package/script/server.js +98 -9
  72. package/script/service/deno.d.ts +1 -1
  73. package/script/service/deno.d.ts.map +1 -1
  74. package/script/service/mod.d.ts +1 -1
  75. package/script/service/mod.d.ts.map +1 -1
  76. package/script/service/node.d.ts +1 -1
  77. package/script/service/node.d.ts.map +1 -1
  78. package/script/service/outbox_inbox.d.ts.map +1 -1
  79. package/script/service/outbox_inbox.js +14 -0
  80. package/script/telemetry/core.d.ts.map +1 -1
  81. package/script/telemetry/core.js +1 -1
  82. package/script/telemetry/env.d.ts.map +1 -1
  83. package/script/telemetry/env.js +6 -1
  84. package/script/telemetry/init.d.ts +3 -0
  85. package/script/telemetry/init.d.ts.map +1 -0
  86. package/script/telemetry/init.js +10 -0
  87. package/script/telemetry/metrics.d.ts +34 -0
  88. package/script/telemetry/metrics.d.ts.map +1 -0
  89. package/script/telemetry/metrics.js +186 -0
  90. package/script/telemetry/mod.d.ts +3 -0
  91. package/script/telemetry/mod.d.ts.map +1 -1
  92. package/script/telemetry/mod.js +7 -1
  93. package/script/telemetry/runtime.d.ts +2 -0
  94. package/script/telemetry/runtime.d.ts.map +1 -0
  95. package/script/telemetry/runtime.js +137 -0
  96. package/script/telemetry.d.ts +3 -0
  97. package/script/telemetry.d.ts.map +1 -0
  98. package/script/telemetry.js +18 -0
  99. package/script/transfer.d.ts.map +1 -1
  100. package/script/transfer.js +28 -17
  101. package/script/trellis.d.ts +28 -4
  102. package/script/trellis.d.ts.map +1 -1
  103. package/script/trellis.js +606 -110
  104. package/src/client.ts +4 -0
  105. package/src/client_connect.ts +11 -9
  106. package/src/errors/TrellisError.ts +4 -4
  107. package/src/server/health.ts +41 -3
  108. package/src/server/internal_jobs/job-manager.ts +35 -5
  109. package/src/server/runtime.ts +4 -0
  110. package/src/server/service.ts +75 -3
  111. package/src/server.ts +124 -14
  112. package/src/service/deno.ts +1 -0
  113. package/src/service/mod.ts +1 -0
  114. package/src/service/node.ts +1 -0
  115. package/src/service/outbox_inbox.ts +14 -0
  116. package/src/telemetry/core.ts +1 -1
  117. package/src/telemetry/env.ts +5 -1
  118. package/src/telemetry/init.ts +8 -0
  119. package/src/telemetry/metrics.ts +294 -0
  120. package/src/telemetry/mod.ts +7 -0
  121. package/src/telemetry/runtime.ts +218 -0
  122. package/src/telemetry.ts +2 -0
  123. package/src/transfer.ts +69 -30
  124. package/src/trellis.ts +652 -141
  125. package/esm/tracing.d.ts +0 -5
  126. package/esm/tracing.d.ts.map +0 -1
  127. package/esm/tracing.js +0 -8
  128. package/script/tracing.d.ts +0 -5
  129. package/script/tracing.d.ts.map +0 -1
  130. package/script/tracing.js +0 -27
  131. package/src/tracing.ts +0 -28
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/script/server.js CHANGED
@@ -19,6 +19,7 @@ const ulid_1 = require("ulid");
19
19
  const codec_js_1 = require("./codec.js");
20
20
  const index_js_1 = require("./errors/index.js");
21
21
  const server_logger_js_1 = require("./server_logger.js");
22
+ const mod_js_1 = require("./telemetry/mod.js");
22
23
  const trellis_js_1 = require("./trellis.js");
23
24
  function isJsonValue(value) {
24
25
  if (value === null || typeof value === "string" || typeof value === "number" ||
@@ -82,6 +83,29 @@ function asOptionalStringRecordPointerValue(input, pointer) {
82
83
  }
83
84
  return (0, result_1.ok)(Object.fromEntries(entries));
84
85
  }
86
+ function traceIdFromTraceparent(traceparent) {
87
+ const [version, traceId, parentId, flags, extra] = traceparent?.split("-") ??
88
+ [];
89
+ if (extra !== undefined ||
90
+ !/^[0-9a-f]{2}$/u.test(version ?? "") ||
91
+ version === "ff" ||
92
+ !/^[0-9a-f]{32}$/u.test(traceId ?? "") ||
93
+ traceId === "00000000000000000000000000000000" ||
94
+ !/^[0-9a-f]{16}$/u.test(parentId ?? "") ||
95
+ parentId === "0000000000000000" ||
96
+ !/^[0-9a-f]{2}$/u.test(flags ?? "")) {
97
+ return undefined;
98
+ }
99
+ return traceId;
100
+ }
101
+ function recordOperationServerError(error, attributes) {
102
+ (0, mod_js_1.recordTrellisError)(error, {
103
+ messagingSystem: "nats",
104
+ surface: "operation",
105
+ direction: "server",
106
+ ...attributes,
107
+ });
108
+ }
85
109
  class TrellisServiceRuntime extends trellis_js_1.Trellis {
86
110
  constructor(name, nats, auth, opts) {
87
111
  super(name, nats, auth, { ...opts, log: opts?.log ?? server_logger_js_1.serverLogger });
@@ -121,7 +145,7 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
121
145
  event: { type: "completed" },
122
146
  }),
123
147
  fail: (operationId, error) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyOperationUpdate).call(this, operationId, "failed", {
124
- patch: { error: { type: error.name, message: error.message } },
148
+ patch: { error: error.toSerializable() },
125
149
  event: { type: "failed" },
126
150
  }),
127
151
  cancel: (operationId) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyOperationUpdate).call(this, operationId, "cancelled", {
@@ -179,7 +203,7 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
179
203
  }
180
204
  runtime.waiters.clear();
181
205
  };
182
- const makeOperation = (runtime) => {
206
+ const makeOperation = (runtime, context) => {
183
207
  const ensureActive = () => {
184
208
  if (runtime.terminal) {
185
209
  return (0, result_1.err)(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_operationAlreadyTerminalError).call(this, runtime));
@@ -244,8 +268,16 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
244
268
  const active = ensureActive();
245
269
  if (active)
246
270
  return active;
271
+ const annotatedError = (0, trellis_js_1.annotateHandlerBoundaryError)(error, {
272
+ operation: String(operation),
273
+ requestId: context.requestId,
274
+ service: this.name,
275
+ contractId: this.contractId,
276
+ contractDigest: this.contractDigest,
277
+ traceId: context.traceId,
278
+ });
247
279
  const snapshot = (0, trellis_js_1.buildRuntimeOperationSnapshot)(runtime, "failed", {
248
- error: { type: error.name, message: error.message },
280
+ error: annotatedError.toSerializable(),
249
281
  completedAt: now(),
250
282
  });
251
283
  runtime.sequence += 1;
@@ -390,29 +422,50 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
390
422
  const validated = await authenticate(msg, true);
391
423
  const value = validated.take();
392
424
  if ((0, result_1.isErr)(value)) {
425
+ recordOperationServerError(value.error, {
426
+ operation: String(operation),
427
+ phase: "start",
428
+ });
393
429
  this.respondWithError(msg, value.error);
394
430
  continue;
395
431
  }
396
432
  let transferSession;
397
433
  if (ctx.transfer) {
398
434
  if (!__classPrivateFieldGet(this, _TrellisServiceRuntime_transferSupport, "f")) {
399
- this.respondWithError(msg, new index_js_1.UnexpectedError({
435
+ const error = new index_js_1.UnexpectedError({
400
436
  cause: new Error(`Operation '${String(operation)}' declared transfer support but no runtime transfer support is configured`),
401
- }));
437
+ });
438
+ recordOperationServerError(error, {
439
+ operation: String(operation),
440
+ phase: "start",
441
+ });
442
+ this.respondWithError(msg, error);
402
443
  continue;
403
444
  }
404
445
  const key = asStringPointerValue(String(operation), value.input, ctx.transfer.key, "key").take();
405
446
  if ((0, result_1.isErr)(key)) {
447
+ recordOperationServerError(key.error, {
448
+ operation: String(operation),
449
+ phase: "start",
450
+ });
406
451
  this.respondWithError(msg, key.error);
407
452
  continue;
408
453
  }
409
454
  const contentType = asOptionalStringPointerValue(value.input, ctx.transfer.contentType).take();
410
455
  if ((0, result_1.isErr)(contentType)) {
456
+ recordOperationServerError(contentType.error, {
457
+ operation: String(operation),
458
+ phase: "start",
459
+ });
411
460
  this.respondWithError(msg, contentType.error);
412
461
  continue;
413
462
  }
414
463
  const metadata = asOptionalStringRecordPointerValue(value.input, ctx.transfer.metadata).take();
415
464
  if ((0, result_1.isErr)(metadata)) {
465
+ recordOperationServerError(metadata.error, {
466
+ operation: String(operation),
467
+ phase: "start",
468
+ });
416
469
  this.respondWithError(msg, metadata.error);
417
470
  continue;
418
471
  }
@@ -429,6 +482,10 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
429
482
  ...(metadata !== undefined ? { metadata } : {}),
430
483
  }).take();
431
484
  if ((0, result_1.isErr)(openedTransferValue)) {
485
+ recordOperationServerError(openedTransferValue.error, {
486
+ operation: String(operation),
487
+ phase: "start",
488
+ });
432
489
  this.respondWithError(msg, openedTransferValue.error);
433
490
  continue;
434
491
  }
@@ -486,7 +543,11 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
486
543
  };
487
544
  msg.respond(JSON.stringify(accepted));
488
545
  void (async () => {
489
- const op = makeOperation(runtime);
546
+ const operationContext = {
547
+ requestId: msg.headers?.get("request-id"),
548
+ traceId: traceIdFromTraceparent(msg.headers?.get("traceparent")),
549
+ };
550
+ const op = makeOperation(runtime, operationContext);
490
551
  try {
491
552
  const handlerResult = await handler(transferSession
492
553
  ? {
@@ -504,7 +565,19 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
504
565
  ? handlerResult.take()
505
566
  : handlerResult;
506
567
  if ((0, result_1.isErr)(handlerOutcome)) {
507
- await op.fail(handlerOutcome.error);
568
+ const error = (0, trellis_js_1.annotateHandlerBoundaryError)(handlerOutcome.error, {
569
+ operation: String(operation),
570
+ requestId: operationContext.requestId,
571
+ service: this.name,
572
+ contractId: this.contractId,
573
+ contractDigest: this.contractDigest,
574
+ traceId: operationContext.traceId,
575
+ });
576
+ recordOperationServerError(error, {
577
+ operation: String(operation),
578
+ phase: "handler_result",
579
+ });
580
+ await op.fail(error);
508
581
  return;
509
582
  }
510
583
  if ((0, trellis_js_1.isOperationDeferred)(handlerOutcome)) {
@@ -522,7 +595,19 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
522
595
  }
523
596
  }
524
597
  catch (cause) {
525
- await op.fail(new index_js_1.UnexpectedError({ cause }));
598
+ const error = (0, trellis_js_1.annotateHandlerBoundaryError)(cause, {
599
+ operation: String(operation),
600
+ requestId: operationContext.requestId,
601
+ service: this.name,
602
+ contractId: this.contractId,
603
+ contractDigest: this.contractDigest,
604
+ traceId: operationContext.traceId,
605
+ });
606
+ recordOperationServerError(error, {
607
+ operation: String(operation),
608
+ phase: "handler_throw",
609
+ });
610
+ await op.fail(error);
526
611
  }
527
612
  })();
528
613
  }
@@ -721,7 +806,7 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
721
806
  event: { type: "completed" },
722
807
  }),
723
808
  fail: (error) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "failed", {
724
- patch: { error: { type: error.name, message: error.message } },
809
+ patch: { error: error.toSerializable() },
725
810
  event: { type: "failed" },
726
811
  }),
727
812
  cancel: () => {
@@ -993,6 +1078,10 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
993
1078
  const trellisError = error instanceof result_1.BaseError
994
1079
  ? error
995
1080
  : new index_js_1.UnexpectedError({ cause: error });
1081
+ recordOperationServerError(trellisError, {
1082
+ operation,
1083
+ phase: "control",
1084
+ });
996
1085
  msg.respond(JSON.stringify({
997
1086
  kind: "error",
998
1087
  error: trellisError.toSerializable(),
@@ -1,3 +1,3 @@
1
1
  import "../_dnt.polyfills.js";
2
- export { type BoundTrellisService, type FeedHandler, type HealthCheckHandler, type HealthInfoHandler, type JobArgs, type JobHandler, type JobQueue, type JobResult, type JobsFacadeOf, type OperationHandler, type OperationRegistration, type RpcHandler, type ServiceContract, type ServiceEventHandler, type Trellis, TrellisService, type TrellisServiceConnectOpts, } from "../server/service.js";
2
+ export { type BoundTrellisService, type FeedHandler, type HealthCheckHandler, type HealthInfoHandler, type JobArgs, type JobHandler, type JobQueue, type JobResult, type JobsFacadeOf, type OperationHandler, type OperationRegistration, type RpcHandler, type ServiceContract, type ServiceEventHandler, type Trellis, TrellisService, type TrellisServiceConnectOpts, type TrellisServiceConnectTelemetryOpts, } from "../server/service.js";
3
3
  //# sourceMappingURL=deno.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deno.d.ts","sourceRoot":"","sources":["../../src/service/deno.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,cAAc,EACd,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"deno.d.ts","sourceRoot":"","sources":["../../src/service/deno.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,cAAc,EACd,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,GACxC,MAAM,sBAAsB,CAAC"}
@@ -10,7 +10,7 @@ import "../_dnt.polyfills.js";
10
10
  export { createHealthHeartbeat, type HealthCheckFn, type HealthCheckResult, type HealthHeartbeat, type HealthResponse, runAllHealthChecks, runAllServiceHealthChecks, runHealthCheck, runServiceHealthCheck, ServiceHealth, type ServiceHealthCheck, type ServiceHealthCheckFn, type ServiceHealthInfo, type ServiceHealthInfoFn, } from "../server/health.js";
11
11
  export { mountStandardHealthRpc } from "../server/health_rpc.js";
12
12
  export { HealthCheckResultSchema, HealthHeartbeatHeaderSchema, HealthHeartbeatSchema, HealthHeartbeatServiceSchema, HealthInfoSchema, HealthResponseSchema, HealthRpcSchema, } from "../server/health_schemas.js";
13
- export { type BoundTrellisService, type FeedHandler, type HealthCheckHandler, type HealthInfoHandler, type JobArgs, type JobHandler, type JobQueue, type JobResult, type JobsFacadeOf, type OperationHandler, type OperationRegistration, type RpcHandler, type ServiceContract, type ServiceEventHandler, StoreHandle, type Trellis, TrellisService, type TrellisServiceConnectOpts, } from "../server/service.js";
13
+ export { type BoundTrellisService, type FeedHandler, type HealthCheckHandler, type HealthInfoHandler, type JobArgs, type JobHandler, type JobQueue, type JobResult, type JobsFacadeOf, type OperationHandler, type OperationRegistration, type RpcHandler, type ServiceContract, type ServiceEventHandler, StoreHandle, type Trellis, TrellisService, type TrellisServiceConnectOpts, type TrellisServiceConnectTelemetryOpts, } from "../server/service.js";
14
14
  export { createPostgresOutboxSchema, createSqliteOutboxSchema, createSqlOutboxAdapter, defaultSqlOutboxTables, dispatchOutbox, type InboxRepository, type KvOutboxRecord, KvOutboxRecordSchema, MemoryInboxRepository, MemoryOutboxRepository, NatsKvInboxRepository, NatsKvOutboxRepository, OutboxDispatcher, type OutboxDispatcherOptions, type OutboxDispatchResult, type OutboxKvEntry, type OutboxKvStore, type OutboxMessage, type OutboxMessageState, outboxMessageToPrepared, type OutboxRepository, type SqlDialect, type SqlExecutor, SqlInboxRepository, type SqlOutboxAdapter, SqlOutboxRepository, type SqlOutboxTables, type SqlRow, } from "./outbox_inbox.js";
15
15
  export { createEventContext, type EventContext, type EventHandler, type GroupedSubscription, isGroupedSubscription, type MultiEventSubscription, type MultiSubscribeOpts, type OrderingGroup, type SingleSubscription, type SubscribeOpts, } from "../server/subscription.js";
16
16
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/service/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EACL,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC5B,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,WAAW,EACX,KAAK,OAAO,EACZ,cAAc,EACd,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,MAAM,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/service/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EACL,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC5B,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,WAAW,EACX,KAAK,OAAO,EACZ,cAAc,EACd,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,GACxC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,MAAM,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,2BAA2B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import "../_dnt.polyfills.js";
2
- export { type BoundTrellisService, type FeedHandler, type HealthCheckHandler, type HealthInfoHandler, type JobArgs, type JobHandler, type JobQueue, type JobResult, type JobsFacadeOf, type OperationHandler, type OperationRegistration, type RpcHandler, type ServiceContract, type ServiceEventHandler, type Trellis, TrellisService, type TrellisServiceConnectOpts, } from "../server/service.js";
2
+ export { type BoundTrellisService, type FeedHandler, type HealthCheckHandler, type HealthInfoHandler, type JobArgs, type JobHandler, type JobQueue, type JobResult, type JobsFacadeOf, type OperationHandler, type OperationRegistration, type RpcHandler, type ServiceContract, type ServiceEventHandler, type Trellis, TrellisService, type TrellisServiceConnectOpts, type TrellisServiceConnectTelemetryOpts, } from "../server/service.js";
3
3
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/service/node.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,cAAc,EACd,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/service/node.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,cAAc,EACd,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,GACxC,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"outbox_inbox.d.ts","sourceRoot":"","sources":["../../src/service/outbox_inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbox_inbox.d.ts","sourceRoot":"","sources":["../../src/service/outbox_inbox.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ exports.outboxMessageToPrepared = outboxMessageToPrepared;
21
21
  const result_1 = require("@qlever-llc/result");
22
22
  const typebox_1 = require("typebox");
23
23
  const kv_js_1 = require("../kv.js");
24
+ const mod_js_1 = require("../telemetry/mod.js");
24
25
  exports.defaultSqlOutboxTables = Object.freeze({
25
26
  outbox: "trellis_outbox",
26
27
  inbox: "trellis_inbox",
@@ -554,6 +555,12 @@ _OutboxDispatcher_repository = new WeakMap(), _OutboxDispatcher_runtime = new We
554
555
  });
555
556
  }
556
557
  catch (error) {
558
+ (0, mod_js_1.recordTrellisError)(error, {
559
+ surface: "outbox",
560
+ direction: "dispatcher",
561
+ operation: "batch",
562
+ phase: "dispatch",
563
+ });
557
564
  __classPrivateFieldGet(this, _OutboxDispatcher_instances, "m", _OutboxDispatcher_scheduleRetryWakeup).call(this);
558
565
  try {
559
566
  __classPrivateFieldGet(this, _OutboxDispatcher_options, "f").onError?.(error);
@@ -590,6 +597,13 @@ async function dispatchOutbox(repository, runtime, options = {}) {
590
597
  const result = await runtime.publishPrepared(outboxMessageToPrepared(message));
591
598
  const value = result.take();
592
599
  if ((0, result_1.isErr)(value)) {
600
+ (0, mod_js_1.recordTrellisError)(value.error, {
601
+ surface: "outbox",
602
+ direction: "dispatcher",
603
+ operation: message.event,
604
+ phase: "publish",
605
+ messagingSystem: "nats",
606
+ });
593
607
  failed += 1;
594
608
  await repository.markFailed(message.id, {
595
609
  error: value.error.message,
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/telemetry/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,OAAO,EACP,KAAK,IAAI,EACT,QAAQ,EACR,cAAc,EACd,KAAK,EACL,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,SAAS,CAAC,KAAK,SAAgC,GAAG,MAAM,CAEvE;AAED,wBAAgB,aAAa,IAAI,IAAI,GAAG,SAAS,CAEhD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEtD;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/telemetry/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,OAAO,EACP,KAAK,IAAI,EACT,QAAQ,EACR,cAAc,EACd,KAAK,EACL,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,SAAS,CAAC,KAAK,SAAkC,GAAG,MAAM,CAEzE;AAED,wBAAgB,aAAa,IAAI,IAAI,GAAG,SAAS,CAEhD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEtD;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "context", { enumerable: true, get: function () {
10
10
  Object.defineProperty(exports, "SpanKind", { enumerable: true, get: function () { return api_1.SpanKind; } });
11
11
  Object.defineProperty(exports, "SpanStatusCode", { enumerable: true, get: function () { return api_1.SpanStatusCode; } });
12
12
  Object.defineProperty(exports, "trace", { enumerable: true, get: function () { return api_1.trace; } });
13
- function getTracer(scope = "@qlever-llc/trellis/tracing") {
13
+ function getTracer(scope = "@qlever-llc/trellis/telemetry") {
14
14
  return api_1.trace.getTracer(scope);
15
15
  }
16
16
  function getActiveSpan() {
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/telemetry/env.ts"],"names":[],"mappings":"AAYA,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUtD"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/telemetry/env.ts"],"names":[],"mappings":"AAYA,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CActD"}
@@ -39,7 +39,12 @@ const dntShim = __importStar(require("../_dnt.shims.js"));
39
39
  function getEnv(key) {
40
40
  const deno = dntShim.dntGlobalThis;
41
41
  if (deno.Deno?.env?.get) {
42
- return deno.Deno.env.get(key);
42
+ try {
43
+ return deno.Deno.env.get(key);
44
+ }
45
+ catch {
46
+ return undefined;
47
+ }
43
48
  }
44
49
  const processGlobal = dntShim.dntGlobalThis;
45
50
  return processGlobal.process?.env?.[key];
@@ -0,0 +1,3 @@
1
+ /** Initializes Trellis telemetry for a service runtime. */
2
+ export declare function initTelemetry(serviceName: string): void;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/telemetry/init.ts"],"names":[],"mappings":"AAGA,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAGvD"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initTelemetry = initTelemetry;
4
+ const result_js_1 = require("./result.js");
5
+ const runtime_js_1 = require("./runtime.js");
6
+ /** Initializes Trellis telemetry for a service runtime. */
7
+ function initTelemetry(serviceName) {
8
+ (0, result_js_1.configureErrorTraceId)();
9
+ (0, runtime_js_1.initTelemetryRuntime)(serviceName);
10
+ }
@@ -0,0 +1,34 @@
1
+ import { type Meter } from "@opentelemetry/api";
2
+ /** Low-cardinality attributes accepted by {@link recordTrellisError}. */
3
+ export type TrellisErrorMetricAttributes = {
4
+ /** Stable Trellis surface name, such as `rpc`, `jobs`, or `operations`. */
5
+ surface?: string;
6
+ /** Stable flow direction such as `client`, `server`, `publish`, or `consume`. */
7
+ direction?: string;
8
+ /** Stable operation kind or method name. Do not pass IDs, subjects, or URLs. */
9
+ operation?: string;
10
+ /** Stable lifecycle phase such as `encode`, `send`, `auth`, or `handler`. */
11
+ phase?: string;
12
+ /** Stable local Trellis error type override when the thrown value does not expose one. */
13
+ errorType?: string;
14
+ /** Stable wrapped remote Trellis error type override. */
15
+ remoteErrorType?: string;
16
+ /** Stable auth failure reason, such as `missing_session_key`. */
17
+ authReason?: string;
18
+ /** Static messaging system name, when already known. */
19
+ messagingSystem?: string;
20
+ /** Static messaging operation name, when already known. */
21
+ messagingOperation?: string;
22
+ };
23
+ /** Returns the shared Trellis OpenTelemetry meter. */
24
+ export declare function getTrellisMeter(): Meter;
25
+ /** Records one Trellis error with only stable, low-cardinality attributes. */
26
+ export declare function recordTrellisError(error: unknown, attributes?: TrellisErrorMetricAttributes): void;
27
+ /**
28
+ * Builds sanitized, low-cardinality attributes for `trellis.errors`.
29
+ *
30
+ * @internal Exported for focused tests; runtime callers should use
31
+ * {@link recordTrellisError}.
32
+ */
33
+ export declare function buildTrellisErrorMetricAttributes(error: unknown, attributes?: TrellisErrorMetricAttributes): Record<string, string>;
34
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/telemetry/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAW,MAAM,oBAAoB,CAAC;AAiDzD,yEAAyE;AACzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AASF,sDAAsD;AACtD,wBAAgB,eAAe,IAAI,KAAK,CAEvC;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,UAAU,GAAE,4BAAiC,GAC5C,IAAI,CAWN;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,OAAO,EACd,UAAU,GAAE,4BAAiC,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsDxB"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTrellisMeter = getTrellisMeter;
4
+ exports.recordTrellisError = recordTrellisError;
5
+ exports.buildTrellisErrorMetricAttributes = buildTrellisErrorMetricAttributes;
6
+ const api_1 = require("@opentelemetry/api");
7
+ const TRELLIS_METER_NAME = "@qlever-llc/trellis";
8
+ const MAX_ATTRIBUTE_LENGTH = 96;
9
+ const LOW_CARDINALITY_PATTERN = /^[A-Za-z0-9_.:-]+$/;
10
+ const UUID_PATTERN = /(^|[_.:-])[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}($|[_.:-])/i;
11
+ const ULID_PATTERN = /(^|[_.:-])[0-7][0-9A-HJKMNP-TV-Z]{25}($|[_.:-])/i;
12
+ const LONG_HEX_SEGMENT_PATTERN = /(^|[_.:-])[0-9a-f]{12,}($|[_.:-])/i;
13
+ const TRELLIS_SUBJECT_PREFIX_PATTERN = /^(rpc|events|feeds|operations|jobs|state|kv|store|resources|transfer)\.v\d+\./;
14
+ const AUTH_REASONS = new Set([
15
+ "invalid_request",
16
+ "missing_session_key",
17
+ "missing_proof",
18
+ "session_not_found",
19
+ "session_expired",
20
+ "invalid_signature",
21
+ "user_not_found",
22
+ "user_already_exists",
23
+ "username_taken",
24
+ "identity_already_exists",
25
+ "identity_not_found",
26
+ "user_inactive",
27
+ "unknown_device",
28
+ "device_deployment_not_found",
29
+ "device_deployment_disabled",
30
+ "device_activation_revoked",
31
+ "unknown_service",
32
+ "service_disabled",
33
+ "iat_out_of_range",
34
+ "invalid_binding_token",
35
+ "session_corrupted",
36
+ "session_already_bound",
37
+ "authtoken_already_used",
38
+ "oauth_session_key_mismatch",
39
+ "reply_subject_mismatch",
40
+ "insufficient_permissions",
41
+ "forbidden",
42
+ "last_admin_required",
43
+ "missing_flow_id",
44
+ "device_activation_flow_not_found",
45
+ "device_activation_flow_expired",
46
+ "device_activation_rejected",
47
+ "device_identity_key_mismatch",
48
+ "invalid_device_qr_mac",
49
+ ]);
50
+ /** Returns the shared Trellis OpenTelemetry meter. */
51
+ function getTrellisMeter() {
52
+ return api_1.metrics.getMeter(TRELLIS_METER_NAME);
53
+ }
54
+ /** Records one Trellis error with only stable, low-cardinality attributes. */
55
+ function recordTrellisError(error, attributes = {}) {
56
+ getTrellisMeter().createCounter("trellis.errors", {
57
+ description: "Trellis errors observed by runtime instrumentation.",
58
+ unit: "{error}",
59
+ }).add(1, buildTrellisErrorMetricAttributes(error, attributes));
60
+ }
61
+ /**
62
+ * Builds sanitized, low-cardinality attributes for `trellis.errors`.
63
+ *
64
+ * @internal Exported for focused tests; runtime callers should use
65
+ * {@link recordTrellisError}.
66
+ */
67
+ function buildTrellisErrorMetricAttributes(error, attributes = {}) {
68
+ const serializable = serializableErrorData(error);
69
+ const metricAttributes = {
70
+ "exception.type": exceptionType(error),
71
+ "trellis.error.type": trellisErrorType(error, serializable, attributes.errorType),
72
+ };
73
+ const remoteErrorType = lowCardinalityValue(attributes.remoteErrorType) ??
74
+ remoteSerializableErrorType(serializable);
75
+ if (remoteErrorType) {
76
+ metricAttributes["trellis.remote_error.type"] = remoteErrorType;
77
+ }
78
+ setLowCardinalityAttribute(metricAttributes, "trellis.surface", attributes.surface);
79
+ setLowCardinalityAttribute(metricAttributes, "trellis.direction", attributes.direction);
80
+ setLowCardinalityAttribute(metricAttributes, "trellis.operation", attributes.operation);
81
+ setLowCardinalityAttribute(metricAttributes, "trellis.phase", attributes.phase);
82
+ setLowCardinalityAttribute(metricAttributes, "trellis.auth.reason", boundedAuthReason(attributes.authReason) ?? authReason(serializable));
83
+ setLowCardinalityAttribute(metricAttributes, "messaging.system", attributes.messagingSystem);
84
+ setLowCardinalityAttribute(metricAttributes, "messaging.operation", attributes.messagingOperation);
85
+ return metricAttributes;
86
+ }
87
+ function trellisErrorType(error, serializable, override) {
88
+ const overrideType = lowCardinalityValue(override);
89
+ if (overrideType)
90
+ return overrideType;
91
+ const serializableType = lowCardinalityValue(serializable?.type);
92
+ if (serializableType)
93
+ return serializableType;
94
+ const objectType = objectStringProperty(error, "type");
95
+ if (objectType)
96
+ return objectType;
97
+ return exceptionType(error);
98
+ }
99
+ function exceptionType(error) {
100
+ if (error instanceof Error) {
101
+ const name = lowCardinalityValue(error.name);
102
+ if (name)
103
+ return name;
104
+ }
105
+ const objectType = objectStringProperty(error, "type");
106
+ if (objectType)
107
+ return objectType;
108
+ return "unknown";
109
+ }
110
+ function serializableErrorData(error) {
111
+ const toSerializable = safeProperty(error, "toSerializable");
112
+ if (!isSerializableMethod(toSerializable))
113
+ return undefined;
114
+ try {
115
+ const data = toSerializable.call(error);
116
+ return isRecord(data) ? data : undefined;
117
+ }
118
+ catch {
119
+ return undefined;
120
+ }
121
+ }
122
+ function remoteSerializableErrorType(serializable) {
123
+ const remoteError = safeProperty(serializable, "remoteError");
124
+ if (!isRecord(remoteError))
125
+ return undefined;
126
+ return objectStringProperty(remoteError, "type");
127
+ }
128
+ function authReason(serializable) {
129
+ const type = safeProperty(serializable, "type");
130
+ if (type === "AuthError") {
131
+ return boundedAuthReason(safeProperty(serializable, "reason"));
132
+ }
133
+ if (type === "RemoteError") {
134
+ const remoteError = safeProperty(serializable, "remoteError");
135
+ if (isRecord(remoteError) && objectStringProperty(remoteError, "type") ===
136
+ "AuthError") {
137
+ return boundedAuthReason(safeProperty(remoteError, "reason"));
138
+ }
139
+ }
140
+ return undefined;
141
+ }
142
+ function boundedAuthReason(value) {
143
+ const sanitized = lowCardinalityValue(value);
144
+ if (!sanitized || !AUTH_REASONS.has(sanitized))
145
+ return undefined;
146
+ return sanitized;
147
+ }
148
+ function isRecord(value) {
149
+ return value !== null && typeof value === "object" && !Array.isArray(value);
150
+ }
151
+ function isSerializableMethod(value) {
152
+ return typeof value === "function";
153
+ }
154
+ function safeProperty(value, key) {
155
+ if (!isRecord(value))
156
+ return undefined;
157
+ try {
158
+ return value[key];
159
+ }
160
+ catch {
161
+ return undefined;
162
+ }
163
+ }
164
+ function objectStringProperty(value, key) {
165
+ return lowCardinalityValue(safeProperty(value, key));
166
+ }
167
+ function setLowCardinalityAttribute(attributes, key, value) {
168
+ const sanitized = lowCardinalityValue(value);
169
+ if (sanitized)
170
+ attributes[key] = sanitized;
171
+ }
172
+ function lowCardinalityValue(value) {
173
+ if (typeof value !== "string")
174
+ return undefined;
175
+ const trimmed = value.trim();
176
+ if (trimmed.length === 0 ||
177
+ trimmed.length > MAX_ATTRIBUTE_LENGTH ||
178
+ !LOW_CARDINALITY_PATTERN.test(trimmed) ||
179
+ UUID_PATTERN.test(trimmed) ||
180
+ ULID_PATTERN.test(trimmed) ||
181
+ LONG_HEX_SEGMENT_PATTERN.test(trimmed) ||
182
+ TRELLIS_SUBJECT_PREFIX_PATTERN.test(trimmed)) {
183
+ return undefined;
184
+ }
185
+ return trimmed;
186
+ }
@@ -3,6 +3,9 @@ export { createMapCarrier, extractTraceContext, injectTraceContext, } from "./ca
3
3
  export type { Context, Span } from "./core.js";
4
4
  export { context, getActiveSpan, getTracer, SpanKind, SpanStatusCode, trace, withSpan, withSpanAsync, } from "./core.js";
5
5
  export { getEnv } from "./env.js";
6
+ export { initTelemetry } from "./init.js";
7
+ export { buildTrellisErrorMetricAttributes, getTrellisMeter, recordTrellisError, } from "./metrics.js";
8
+ export type { TrellisErrorMetricAttributes } from "./metrics.js";
6
9
  export type { NatsHeadersLike } from "./nats.js";
7
10
  export { createNatsHeaderCarrier } from "./nats.js";
8
11
  export { configureErrorTraceId } from "./result.js";