@smoothbricks/lmao 0.2.0 → 0.2.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.
Files changed (110) hide show
  1. package/dist/es.js +1 -0
  2. package/dist/lib/JsBufferStrategy.d.ts.map +1 -1
  3. package/dist/lib/JsBufferStrategy.js +12 -0
  4. package/dist/lib/archive/chunkEnvelope.js +1 -0
  5. package/dist/lib/archive/chunkRouting.js +1 -0
  6. package/dist/lib/archive/chunkStats.js +1 -0
  7. package/dist/lib/arrow/capacityStats.js +1 -0
  8. package/dist/lib/arrow/dictionaries.d.ts.map +1 -1
  9. package/dist/lib/buffer/Nanoseconds.d.ts.map +1 -1
  10. package/dist/lib/buffer/Nanoseconds.js +34 -0
  11. package/dist/lib/bufferStrategy.js +21 -0
  12. package/dist/lib/capacityTuning.js +26 -0
  13. package/dist/lib/cleanupDiagnostics.js +2 -2
  14. package/dist/lib/cloudflare/classSplit.d.ts.map +1 -1
  15. package/dist/lib/cloudflare/classSplit.js +19 -0
  16. package/dist/lib/cloudflare/collectorClient.d.ts.map +1 -1
  17. package/dist/lib/cloudflare/diagnosticDrain.d.ts.map +1 -1
  18. package/dist/lib/cloudflare/diagnosticDrain.js +1 -1
  19. package/dist/lib/codegen/evaluatorGenerator.js +1 -0
  20. package/dist/lib/codegen/fixedPositionWriterGenerator.js +1 -0
  21. package/dist/lib/codegen/spanLoggerGenerator.js +1 -0
  22. package/dist/lib/errors/Blocked.d.ts +1 -1
  23. package/dist/lib/errors/Blocked.d.ts.map +1 -1
  24. package/dist/lib/errors/Blocked.js +53 -0
  25. package/dist/lib/errors/CodeError.d.ts.map +1 -1
  26. package/dist/lib/errors/CodeError.js +31 -0
  27. package/dist/lib/errors/RetriesExhausted.d.ts +1 -1
  28. package/dist/lib/errors/RetriesExhausted.d.ts.map +1 -1
  29. package/dist/lib/errors/RetriesExhausted.js +38 -0
  30. package/dist/lib/errors/Transient.d.ts +1 -1
  31. package/dist/lib/errors/Transient.d.ts.map +1 -1
  32. package/dist/lib/errors/Transient.js +31 -0
  33. package/dist/lib/errors/retry-policy.js +1 -0
  34. package/dist/lib/flushScheduler.d.ts +0 -3
  35. package/dist/lib/flushScheduler.d.ts.map +1 -1
  36. package/dist/lib/library.js +1 -0
  37. package/dist/lib/logApi.js +11 -0
  38. package/dist/lib/logBinding.js +13 -0
  39. package/dist/lib/op.d.ts.map +1 -1
  40. package/dist/lib/op.js +15 -0
  41. package/dist/lib/opContext/contextTypes.d.ts +1 -1
  42. package/dist/lib/opContext/contextTypes.d.ts.map +1 -1
  43. package/dist/lib/opContext/createOpGroup.js +1 -0
  44. package/dist/lib/opContext/featureFlagTypes.js +13 -0
  45. package/dist/lib/opContext/opGroupTypes.d.ts +1 -1
  46. package/dist/lib/opContext/opGroupTypes.d.ts.map +1 -1
  47. package/dist/lib/opContext/opGroupTypes.js +16 -0
  48. package/dist/lib/opContext/opTypes.js +14 -0
  49. package/dist/lib/opContext/spanContextTypes.js +19 -0
  50. package/dist/lib/opContext/types.js +15 -0
  51. package/dist/lib/result.d.ts.map +1 -1
  52. package/dist/lib/schema/LogSchema.d.ts.map +1 -1
  53. package/dist/lib/schema/builder.js +1 -0
  54. package/dist/lib/schema/defineFeatureFlags.js +1 -0
  55. package/dist/lib/schema/defineLogSchema.js +10 -0
  56. package/dist/lib/schema/evaluator.d.ts.map +1 -1
  57. package/dist/lib/schema/evaluator.js +1 -0
  58. package/dist/lib/schema/systemSchema.d.ts +1 -1
  59. package/dist/lib/schema/systemSchema.d.ts.map +1 -1
  60. package/dist/lib/schema/systemSchema.js +8 -0
  61. package/dist/lib/schema/types.js +6 -0
  62. package/dist/lib/spanBuffer.d.ts.map +1 -1
  63. package/dist/lib/spanBufferHelpers.js +1 -0
  64. package/dist/lib/spanBufferStats.js +24 -0
  65. package/dist/lib/spanContext.js +1 -0
  66. package/dist/lib/sqlite/sqlite-async-writer.d.ts.map +1 -1
  67. package/dist/lib/sqlite/sqlite-d1.js +8 -0
  68. package/dist/lib/sqlite/sqlite-db.js +8 -0
  69. package/dist/lib/sqlite/sqlite-writer.d.ts.map +1 -1
  70. package/dist/lib/testing/bun-harness.d.ts +4 -0
  71. package/dist/lib/testing/bun-harness.d.ts.map +1 -1
  72. package/dist/lib/testing/extractFacts.js +8 -0
  73. package/dist/lib/testing/facts.d.ts.map +1 -1
  74. package/dist/lib/testing/facts.js +19 -0
  75. package/dist/lib/testing/queryable-span.js +16 -0
  76. package/dist/lib/testing/span-query.js +8 -0
  77. package/dist/lib/testing/trace-query.d.ts.map +1 -1
  78. package/dist/lib/testing/trace-query.js +247 -219
  79. package/dist/lib/traceContext.js +8 -0
  80. package/dist/lib/traceId.js +1 -0
  81. package/dist/lib/traceRoot.es.d.ts.map +1 -1
  82. package/dist/lib/traceRoot.es.js +1 -0
  83. package/dist/lib/traceRoot.js +15 -0
  84. package/dist/lib/traceRoot.node.d.ts.map +1 -1
  85. package/dist/lib/traceRoot.node.js +1 -0
  86. package/dist/lib/tracer.d.ts.map +1 -1
  87. package/dist/lib/tracer.js +61 -0
  88. package/dist/lib/tracers/ArrayQueueTracer.d.ts.map +1 -1
  89. package/dist/lib/tracers/ArrayQueueTracer.js +1 -0
  90. package/dist/lib/tracers/CompositeTracer.d.ts.map +1 -1
  91. package/dist/lib/tracers/CompositeTracer.js +1 -0
  92. package/dist/lib/tracers/NoOpTracer.d.ts.map +1 -1
  93. package/dist/lib/tracers/NoOpTracer.js +25 -0
  94. package/dist/lib/tracers/SQLiteTracer.d.ts.map +1 -1
  95. package/dist/lib/tracers/StdioTracer.d.ts.map +1 -1
  96. package/dist/lib/tracers/StdioTracer.js +39 -6
  97. package/dist/lib/tracers/TestTracer.d.ts.map +1 -1
  98. package/dist/lib/tracers/TestTracer.js +30 -0
  99. package/dist/lib/types.js +10 -0
  100. package/dist/lib/utf8Cache.d.ts.map +1 -1
  101. package/dist/lib/utf8Cache.js +1 -0
  102. package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -1
  103. package/dist/lib/wasm/WasmBufferStrategy.js +15 -0
  104. package/dist/lib/wasm/wasmAllocator.js +16 -0
  105. package/dist/lib/wasm/wasmSpanBuffer.js +12 -0
  106. package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -1
  107. package/dist/lib/wasm/wasmTraceRoot.js +2 -1
  108. package/dist/node.js +1 -0
  109. package/package.json +5 -4
  110. package/src/lib/cleanupDiagnostics.ts +2 -2
package/dist/es.js CHANGED
@@ -8,3 +8,4 @@ export * from './index.js';
8
8
  // Export browser-specific TraceRoot factory for Tracer construction
9
9
  //#region smoo/lmao!n/trace-root-timestamps.entry-points #es
10
10
  export { createTraceRoot } from './lib/traceRoot.es.js';
11
+ //#endregion smoo/lmao!n/trace-root-timestamps.entry-points
@@ -1 +1 @@
1
- {"version":3,"file":"JsBufferStrategy.d.ts","sourceRoot":"","sources":["../../src/lib/JsBufferStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACzF;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAmD;IAE/E;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAI5G,qBAAqB,CACnB,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,EAC3B,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,GACT,UAAU,CAAC,CAAC,CAAC;IAOhB,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAI1D,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK;IAK1C,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAI5C"}
1
+ {"version":3,"file":"JsBufferStrategy.d.ts","sourceRoot":"","sources":["../../src/lib/JsBufferStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACzF;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAmD;IAE/E;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAE3G;IAED,qBAAqB,CACnB,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,EAC3B,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,GACT,UAAU,CAAC,CAAC,CAAC,CAKf;IAED,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAEzD;IAED,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAGzC;IAED,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAG1C;CACF"}
@@ -1,3 +1,15 @@
1
+ /**
2
+ * JsBufferStrategy - Default buffer strategy using JavaScript TypedArrays.
3
+ *
4
+ * Uses GC-managed memory with zero-copy Arrow conversion via flechette.
5
+ *
6
+ * Memory characteristics:
7
+ * - Buffers are regular JS objects with TypedArray properties
8
+ * - GC handles deallocation (no explicit release needed)
9
+ * - Arrow conversion shares ArrayBuffer references (zero-copy)
10
+ *
11
+ * @module JsBufferStrategy
12
+ */
1
13
  import { convertSpanTreeToArrowTable } from './convertToArrow.js';
2
14
  import { createChildSpanBuffer as createChildSpanBufferImpl, createOverflowBuffer as createOverflowBufferImpl, createSpanBuffer as createSpanBufferImpl, getSpanBufferClass, } from './spanBuffer.js';
3
15
  function isSpanBufferConstructorForSchema(ctor, schema) {
@@ -53,3 +53,4 @@ function fnv1a64(input) {
53
53
  }
54
54
  return hash.toString(16).padStart(16, '0');
55
55
  }
56
+ //#endregion smoo/lmao!n/trace-archive-envelope.build
@@ -48,3 +48,4 @@ export function splitChunkByPartition(rows, partitionOf, partitionField = 'group
48
48
  };
49
49
  });
50
50
  }
51
+ //#endregion smoo/lmao!n/trace-archive-partition-split.split
@@ -9,3 +9,4 @@ export function extractChunkStats(envelope, partitions = []) {
9
9
  duration_ms: Math.max(0, envelope.ended_at_ms - envelope.started_at_ms),
10
10
  };
11
11
  }
12
+ //#endregion smoo/lmao!n/trace-archive-stats.chunk-level
@@ -230,3 +230,4 @@ export function createCapacityStatsTable(entriesToLog, periodStartNs, mergedSche
230
230
  }
231
231
  return tableFromColumns(cols);
232
232
  }
233
+ //#endregion smoo/lmao!n/buffer-tuning-stats-logging
@@ -1 +1 @@
1
- {"version":3,"file":"dictionaries.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/dictionaries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,qBAAa,qBAAqB;aAEd,UAAU,EAAE,MAAM,EAAE;aACpB,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW;aAC/C,cAAc,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB;aACvF,cAAc,EAAE,OAAO;aACvB,UAAU,EAAE,UAAU,GAAG,SAAS;aAClC,SAAS,EAAE,MAAM;gBALjB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,EAC/C,cAAc,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB,EACvF,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,SAAS,EAAE,MAAM;CAEpC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,qBAAqB,CAkDvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,qBAAqB,GAAG,IAAI,CAqE9B"}
1
+ {"version":3,"file":"dictionaries.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/dictionaries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,qBAAa,qBAAqB;aAEd,UAAU,EAAE,MAAM,EAAE;aACpB,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW;aAC/C,cAAc,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB;aACvF,cAAc,EAAE,OAAO;aACvB,UAAU,EAAE,UAAU,GAAG,SAAS;aAClC,SAAS,EAAE,MAAM;IANnC,YACkB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,EAC/C,cAAc,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,sBAAsB,EACvF,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,SAAS,EAAE,MAAM,EAC/B;CACL;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,qBAAqB,CAkDvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACxC,qBAAqB,GAAG,IAAI,CAqE9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Nanoseconds.d.ts","sourceRoot":"","sources":["../../../src/lib/buffer/Nanoseconds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;GAKG;AACH,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAOlF;;GAEG;AACH,yBAAiB,WAAW,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAgB,GAAG,IAAI,WAAW,CAMjC;IAED;;;;;;;;;;OAUG;IACH,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAEtD;IAED;;;;;;;;OAQG;IACH,SAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAEjD;IAED;;;;;OAKG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAEnD;IAED;;;;;OAKG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAEnD;CACF"}
1
+ {"version":3,"file":"Nanoseconds.d.ts","sourceRoot":"","sources":["../../../src/lib/buffer/Nanoseconds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;GAKG;AACH,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAOlF;;GAEG;AACH,yBAAiB,WAAW,CAAC,CAAC;IAC5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAgB,GAAG,IAAI,WAAW,CAMjC;IAED;;;;;;;;;;OAUG;IACH,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAEtD;IAED;;;;;;;;OAQG;IACH,SAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAEjD;IAED;;;;;OAKG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAEnD;IAED;;;;;OAKG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAEnD;CACF"}
@@ -1,3 +1,37 @@
1
+ /**
2
+ * Nanoseconds branded type for type-safe timestamp handling
3
+ *
4
+ * Prevents accidental unit mixing (milliseconds vs nanoseconds) and provides
5
+ * a centralized location for timestamp conversion utilities.
6
+ *
7
+ * This is a generic buffer concept used for high-precision time-series data.
8
+ *
9
+ * **Benefits:**
10
+ * - Type safety prevents mixing time units
11
+ * - Self-documenting code - units clear from type
12
+ * - Zero runtime overhead on hot path (BigInt operations are fast)
13
+ * - Conversion functions centralized and tested
14
+ * - Works with Arrow's TimestampNanosecond type
15
+ *
16
+ * **Precision:**
17
+ * - BigInt can represent arbitrarily large integers
18
+ * - Nanoseconds since epoch will never overflow
19
+ * - Node.js: Native nanosecond precision via process.hrtime.bigint()
20
+ * - Browser: Microsecond precision via performance.now() (last 3 digits are 000)
21
+ *
22
+ * @module nanoseconds
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * import { Nanoseconds } from '@smoothbricks/arrow-builder';
27
+ *
28
+ * // Node.js: Native nanoseconds
29
+ * const timestamp = Nanoseconds.now();
30
+ *
31
+ * // Store in buffer (BigInt64Array)
32
+ * buffer.timestamps[idx] = timestamp; // Type-safe!
33
+ * ```
34
+ */
1
35
  function toNanoseconds(value) {
2
36
  return value;
3
37
  }
@@ -1 +1,22 @@
1
+ //#region smoo/lmao!n/buffer-strategy
2
+ /**
3
+ * BufferStrategy - Abstraction for SpanBuffer memory management and Arrow conversion.
4
+ *
5
+ * This interface separates memory management concerns from sink concerns (Tracer):
6
+ * - BufferStrategy: HOW buffers are allocated and converted (JS TypedArrays vs WASM)
7
+ * - Tracer (sink): WHAT happens with completed buffers (stdio, queue, test accumulation)
8
+ *
9
+ * Key responsibilities:
10
+ * 1. Buffer creation (root, child, overflow)
11
+ * 2. Arrow conversion (strategy knows optimal path)
12
+ * 3. Buffer release (GC for JS, freelist for WASM)
13
+ *
14
+ * The sink (Tracer subclass) controls WHEN to convert and release:
15
+ * - StdioTracer: prints then releases immediately
16
+ * - TestTracer: holds buffers until clear()
17
+ * - SqsTracer: accumulates, converts on flush(), then releases
18
+ *
19
+ * @module bufferStrategy
20
+ */
1
21
  export {};
22
+ //#endregion smoo/lmao!n/buffer-strategy
@@ -1,3 +1,28 @@
1
+ /**
2
+ * Capacity Tuning - Self-tuning buffer capacity based on utilization
3
+ *
4
+ * Per specs/lmao/01b2_buffer_self_tuning.md:
5
+ * - Track row utilization = totalWrites / (spansCreated * usableRowsPerSpan)
6
+ * - Increase capacity if utilization > 150% (regularly overflowing)
7
+ * - Decrease capacity if utilization < 50% (wasting space)
8
+ * - Maintain power-of-2 capacities between 8 and 1024
9
+ *
10
+ * ## Utilization Model
11
+ *
12
+ * - 100% = exactly filling first buffer per span (ideal)
13
+ * - 150% = filling 1.5x first buffer (some spans overflow)
14
+ * - 200% = filling 2x first buffer (every span overflows once)
15
+ * - 50% = only using half the first buffer (wasting space)
16
+ *
17
+ * The 3x gap between shrink (50%) and grow (150%) thresholds prevents flip-flopping:
18
+ * - After grow: utilization halves → lands in stable zone
19
+ * - After shrink: utilization doubles → lands in stable zone
20
+ *
21
+ * ## Architecture Note
22
+ *
23
+ * Stats are on SpanBufferClass.stats (static property), NOT on LogBinding.
24
+ * This reduces per-instance memory and avoids sync bugs from having two stat objects.
25
+ */
1
26
  //#region smoo/lmao!n/buffer-tuning-capacity
2
27
  /** Minimum spans needed before tuning decisions */
3
28
  const MIN_SPANS_FOR_TUNING = 10;
@@ -64,3 +89,4 @@ export function shouldTuneCapacity(stats) {
64
89
  resetStats(stats);
65
90
  }
66
91
  }
92
+ //#endregion smoo/lmao!n/buffer-tuning-capacity
@@ -34,8 +34,8 @@ export function cleanupDebugActiveHandles(label) {
34
34
  if (typeof handle !== 'object' || handle === null) {
35
35
  return typeof handle;
36
36
  }
37
- const constructor = Reflect.get(handle, 'constructor');
38
- const name = typeof constructor === 'function' ? Reflect.get(constructor, 'name') : undefined;
37
+ const handleConstructor = Reflect.get(handle, 'constructor');
38
+ const name = typeof handleConstructor === 'function' ? Reflect.get(handleConstructor, 'name') : undefined;
39
39
  return typeof name === 'string' && name.length > 0 ? name : 'Object';
40
40
  });
41
41
  cleanupDebug(label, { activeHandleCount: handles.length, activeHandles: names });
@@ -1 +1 @@
1
- {"version":3,"file":"classSplit.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/classSplit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,YAAY,CAAC;AAE3D,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,QAAQ,KAAK,aAAa,CAAC;AAKlE,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,OAAO,wBAAwB,EAAE,SAAS,GAAG,OAAO,wBAAwB,EAAE,SAAS,CACjG,SAAQ,aAAa,CAAC,CAAC,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,0FAA0F;IAC1F,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC5E;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,KAAK,IAAI,CAAC;CAChG;AAOD;;;;;GAKG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoE;IAC1G,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAE5B;IACd,OAAO,CAAC,qBAAqB,CAAkB;gBAEnC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC;IAShF,OAAO,CAAC,gBAAgB;IAiBxB;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAOlF;;;;;OAKG;IACY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBtC"}
1
+ {"version":3,"file":"classSplit.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/classSplit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,YAAY,CAAC;AAE3D,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,QAAQ,KAAK,aAAa,CAAC;AAKlE,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,OAAO,wBAAwB,EAAE,SAAS,GAAG,OAAO,wBAAwB,EAAE,SAAS,CACjG,SAAQ,aAAa,CAAC,CAAC,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,0FAA0F;IAC1F,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC5E;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,KAAK,IAAI,CAAC;CAChG;AAOD;;;;;GAKG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoE;IAC1G,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAE5B;IACd,OAAO,CAAC,qBAAqB,CAAkB;IAE/C,YAAY,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,EAO/E;IAED,OAAO,CAAC,gBAAgB;IAiBxB;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAKjF;IAED;;;;;OAKG;IACY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBpC;CACF"}
@@ -1,3 +1,22 @@
1
+ /**
2
+ * Class-split flush adapter — routes each completed root buffer's rows by delivery class.
3
+ *
4
+ * Per specs/lmao/01u_cloudflare_trace_segments.md §Delivery Classes every trace row belongs to
5
+ * exactly one class:
6
+ * - billing-grade rows go to the CollectorClient, AWAITED within the request via
7
+ * `settleBillable()` before/alongside response completion — an Err fails the billable request
8
+ * (backpressure ownership: never silently queue billing-grade rows in the isolate)
9
+ * - diagnostic rows go to the drain transport lazily, on the waitUntil-scheduled `flush()`
10
+ *
11
+ * The classifier is an injected function: the spec fixes the CLASSES, not the classification
12
+ * mechanism, so the mapping from row to class stays a seam (constructor-injected like the
13
+ * transports).
14
+ *
15
+ * Canonical request flow (01s wrapper seam):
16
+ * const settled = await tracer.settleBillable(); // before returning the response
17
+ * if (settled instanceof Err) return failBillableRequest(settled.error);
18
+ * ctx.waitUntil(tracer.flush()); // diagnostics, fire-and-forget
19
+ */
1
20
  import { Err, Ok } from '../result.js';
2
21
  import { ArrayQueueTracer } from '../tracers/ArrayQueueTracer.js';
3
22
  import { spanBufferToTraceRows } from './traceRows.js';
@@ -1 +1 @@
1
- {"version":3,"file":"collectorClient.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/collectorClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;CACxB;AAED,8EAA8E;AAC9E,eAAO,MAAM,aAAa,EAAE,YAAgC,CAAC;AAE7D,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,oBAAoB,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;CACtF;AAOD;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAM;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAK;IAEtB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAI7C,0DAA0D;IAC1D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,8EAA8E;IAC9E,SAAS,IAAI,IAAI;IAIjB,uDAAuD;IACvD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,qDAAqD;IACrD,OAAO,IAAI,IAAI;IAOf,6DAA6D;IAC7D,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAMzC,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;CAc3F"}
1
+ {"version":3,"file":"collectorClient.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/collectorClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;CACxB;AAED,8EAA8E;AAC9E,eAAO,MAAM,aAAa,EAAE,YAAgC,CAAC;AAE7D,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,oBAAoB,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;CACtF;AAOD;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAM;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAK;IAEtB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE5C;IAED,0DAA0D;IAC1D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE3B;IAED,8EAA8E;IAC9E,SAAS,IAAI,IAAI,CAEhB;IAED,uDAAuD;IACvD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,qDAAqD;IACrD,OAAO,IAAI,IAAI,CAKd;IAED,6DAA6D;IAC7D,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAI9C;IAEK,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAazF;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnosticDrain.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/diagnosticDrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEtE,oGAAoG;AACpG,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtE,+FAA+F;AAC/F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,8FAA8F;AAC9F,qBAAa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,mBAAmB;IAE9D,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAI/C;AAED,kGAAkG;AAClG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,WAAW,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAwBD;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAMrD,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAerD;AAED,MAAM,WAAW,sBAAsB,CACrC,CAAC,SAAS,OAAO,wBAAwB,EAAE,SAAS,GAAG,OAAO,wBAAwB,EAAE,SAAS,CACjG,SAAQ,aAAa,CAAC,CAAC,CAAC;IACxB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,KAAK,IAAI,CAAC;CACnE;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC3G,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoE;gBAEpF,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC;IAMtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBtC"}
1
+ {"version":3,"file":"diagnosticDrain.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/diagnosticDrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEtE,oGAAoG;AACpG,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtE,+FAA+F;AAC/F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,8FAA8F;AAC9F,qBAAa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAzC,YAA6B,YAAY,EAAE,mBAAmB,EAAI;IAElE,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7C;CACF;AAED,kGAAkG;AAClG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,WAAW,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAwBD;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,qBAAqB,EAI1D;IAEK,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAcnD;CACF;AAED,MAAM,WAAW,sBAAsB,CACrC,CAAC,SAAS,OAAO,wBAAwB,EAAE,SAAS,GAAG,OAAO,wBAAwB,EAAE,SAAS,CACjG,SAAQ,aAAa,CAAC,CAAC,CAAC;IACxB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,KAAK,IAAI,CAAC;CACnE;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC3G,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoE;IAEhG,YAAY,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,EAIpF;IAEc,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAepC;CACF"}
@@ -53,7 +53,7 @@ function timestampBoundsMs(rows) {
53
53
  }
54
54
  if (minNs === Number.POSITIVE_INFINITY)
55
55
  return { startedAtMs: 0, endedAtMs: 0 };
56
- return { startedAtMs: Math.floor(minNs / 1_000_000), endedAtMs: Math.floor(maxNs / 1_000_000) };
56
+ return { startedAtMs: Math.floor(minNs / 1000000), endedAtMs: Math.floor(maxNs / 1000000) };
57
57
  }
58
58
  /**
59
59
  * Queues-fallback transport: rows are batched into chunk-envelope messages.
@@ -198,3 +198,4 @@ export function createEvaluatorClass(schema, validateFlagValue, ENTRY_TYPE_FF_AC
198
198
  }
199
199
  return generatedEvaluatorClass;
200
200
  }
201
+ //#endregion smoo/lmao!n/flag-evaluator-generator
@@ -304,3 +304,4 @@ export function createResultWriter(schema, buffer, resultOrError, isError) {
304
304
  const WriterClass = getResultWriterClass(schema);
305
305
  return new WriterClass(buffer, resultOrError, isError);
306
306
  }
307
+ //#endregion smoo/lmao!n/codegen-architecture
@@ -576,3 +576,4 @@ export function createSpanLogger(schema, buffer) {
576
576
  const SpanLoggerClass = createSpanLoggerClass(schema);
577
577
  return new SpanLoggerClass(buffer);
578
578
  }
579
+ //#endregion smoo/lmao!n/codegen-spanlogger
@@ -91,7 +91,7 @@ type BlockedJsonView = {
91
91
  export declare class Blocked extends Error implements TaggedError<'Blocked'> {
92
92
  /** The reason this Op is blocked */
93
93
  readonly reason: BlockedReason;
94
- static readonly _tag: "Blocked";
94
+ static readonly _tag: 'Blocked';
95
95
  get _tag(): 'Blocked';
96
96
  /** Retry configuration */
97
97
  readonly blockedConfig: BlockedConfig | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"Blocked.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/Blocked.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CASlE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAQD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E,CAAC;AAEF,qBAAa,OAAQ,SAAQ,KAAM,YAAW,WAAW,CAAC,SAAS,CAAC;IAWhE,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAXhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAE1C,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,0BAA0B;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;;IAGhD,oCAAoC;IAC3B,MAAM,EAAE,aAAa;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,aAAa;IAOxB,6DAA6D;IAC7D,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO;IAI7D,kEAAkE;IAClE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO;IAI7D,wDAAwD;IACxD,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO;IAahE,sCAAsC;IACtC,MAAM,IAAI,eAAe;CAe1B"}
1
+ {"version":3,"file":"Blocked.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/Blocked.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CASlE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAQD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E,CAAC;AAEF,qBAAa,OAAQ,SAAQ,KAAM,YAAW,WAAW,CAAC,SAAS,CAAC;IAWhE,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAXhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAE1C,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,0BAA0B;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAElD;IACE,oCAAoC;IAC3B,MAAM,EAAE,aAAa;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,aAAa,EAKvB;IAED,6DAA6D;IAC7D,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAE5D;IAED,kEAAkE;IAClE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAE5D;IAED,wDAAwD;IACxD,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAE/D;IAWD,sCAAsC;IACtC,MAAM,IAAI,eAAe,CAcxB;CACF"}
@@ -1,3 +1,55 @@
1
+ /**
2
+ * Blocked error - indicates an Op cannot proceed due to a temporary condition.
3
+ *
4
+ * A tagged error type for use with `result.isErr(Blocked)` to discriminate
5
+ * blocked states from other errors. Useful for retry logic and dependency waiting.
6
+ *
7
+ * Uses BlockedConfig for retry configuration (closure-based nextRetry).
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { defineOpContext, S, Err } from '@smoothbricks/lmao';
12
+ * import { Blocked } from '@smoothbricks/lmao/errors/Blocked';
13
+ *
14
+ * const { defineOp } = defineOpContext({
15
+ * logSchema: { service: S.category() },
16
+ * ctx: { env: null as Env },
17
+ * });
18
+ *
19
+ * const fetchData = defineOp('fetchData', async (ctx, service: string) => {
20
+ * const health = await checkHealth(service);
21
+ * if (!health.available) {
22
+ * // Return Err with Blocked - can chain .with() for tags
23
+ * return new Err(Blocked.service(service)).with({ service });
24
+ * }
25
+ * ctx.tag.service(service);
26
+ * return ctx.ok(await doFetch(service));
27
+ * });
28
+ *
29
+ * // With closure-based retry (captures HTTP response context)
30
+ * const callApi = defineOp('callApi', async (ctx, url: string) => {
31
+ * const response = await fetch(url);
32
+ * if (response.status === 503) {
33
+ * const retryAfterSec = parseInt(response.headers.get('Retry-After') ?? '5');
34
+ * return new Err(Blocked.service('payment-api', {
35
+ * maxAttempts: 5,
36
+ * nextRetry: (attempt) => {
37
+ * if (attempt === 1) return retryAfterSec * 1000;
38
+ * return 5000 * Math.pow(2, attempt - 1);
39
+ * },
40
+ * }));
41
+ * }
42
+ * return ctx.ok(await response.json());
43
+ * });
44
+ *
45
+ * // Caller can discriminate blocked from other errors
46
+ * const result = await trace('fetch', fetchData, 'payment-api');
47
+ * if (result.isErr(Blocked)) {
48
+ * // Handle temporary unavailability - retry, queue, etc.
49
+ * console.log(`Blocked on ${result.error.reason.name}`);
50
+ * }
51
+ * ```
52
+ */
1
53
  /**
2
54
  * Convert a blocked reason union into its display name.
3
55
  */
@@ -66,3 +118,4 @@ export class Blocked extends Error {
66
118
  };
67
119
  }
68
120
  }
121
+ //#endregion smoo/lmao!n/op-context-tagged-errors.blocked
@@ -1 +1 @@
1
- {"version":3,"file":"CodeError.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/CodeError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAExE,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,KAAM,YAAW,WAAW,CAAC,CAAC,CAAC;IACxF;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAEL,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IAO5B;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAC,CAEZ;IAMD,MAAM,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;CAG9B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1G,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvG,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;CAClB;AAED,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAC/D,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GACrB,SAAS,SAAS,CAAC,GACjB,mBAAmB,CAAC,CAAC,CAAC,GACtB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACxE,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"CodeError.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/CodeError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAExE,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,KAAM,YAAW,WAAW,CAAC,CAAC,CAAC;IACxF;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjB,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAK3B;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,CAAC,CAEZ;IAMD,MAAM,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAE5B;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1G,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvG,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;CAClB;AAED,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAC/D,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GACrB,SAAS,SAAS,CAAC,GACjB,mBAAmB,CAAC,CAAC,CAAC,GACtB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACxE,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -1,3 +1,34 @@
1
+ /**
2
+ * CodeError - typed error codes with data payloads.
3
+ *
4
+ * Use the `Code()` helper to define typed error codes, then use them with `ctx.err()`.
5
+ * The error code becomes the `_tag` for discrimination with `result.isErr(CODE)`.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { Code } from '@smoothbricks/lmao/errors/CodeError';
10
+ *
11
+ * // Define typed error codes
12
+ * const NOT_FOUND = Code<{ id: string }>('NOT_FOUND');
13
+ * const VALIDATION_ERROR = Code<{ field: string; reason: string }>('VALIDATION_ERROR');
14
+ * const TIMEOUT = Code('TIMEOUT'); // No data payload
15
+ *
16
+ * // Use in Ops
17
+ * const fetchUser = defineOp('fetchUser', async (ctx, id: string) => {
18
+ * const user = await db.find(id);
19
+ * if (!user) {
20
+ * return ctx.err(NOT_FOUND({ id }));
21
+ * }
22
+ * return ctx.ok(user);
23
+ * });
24
+ *
25
+ * // Discriminate errors
26
+ * const result = await trace('fetch', fetchUser, 'abc');
27
+ * if (result.isErr(NOT_FOUND)) {
28
+ * console.log(`User ${result.error.data.id} not found`);
29
+ * }
30
+ * ```
31
+ */
1
32
  /**
2
33
  * Error instance created by a Code constructor.
3
34
  *
@@ -51,7 +51,7 @@ export declare class RetriesExhausted extends Error implements TaggedError<'Retr
51
51
  readonly attempts: number;
52
52
  /** Max attempts that was configured (the limit that was hit) */
53
53
  readonly maxAttempts: number;
54
- static readonly _tag: "RetriesExhausted";
54
+ static readonly _tag: 'RetriesExhausted';
55
55
  get _tag(): 'RetriesExhausted';
56
56
  constructor(
57
57
  /** The original blocked reason */
@@ -1 +1 @@
1
- {"version":3,"file":"RetriesExhausted.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/RetriesExhausted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,cAAc,CAAC;AAExE,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAM,YAAW,WAAW,CAAC,kBAAkB,CAAC;IAQlF,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM;IAZ9B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,kBAAkB,CAAU;IAEnD,IAAI,IAAI,IAAI,kBAAkB,CAE7B;;IAGC,kCAAkC;IACzB,MAAM,EAAE,aAAa;IAC9B,kCAAkC;IACzB,QAAQ,EAAE,MAAM;IACzB,gEAAgE;IACvD,WAAW,EAAE,MAAM;IAW9B,sCAAsC;IACtC,MAAM,IAAI,oBAAoB;CAG/B"}
1
+ {"version":3,"file":"RetriesExhausted.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/RetriesExhausted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,cAAc,CAAC;AAExE,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAM,YAAW,WAAW,CAAC,kBAAkB,CAAC;IAQlF,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM;IAZ9B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,kBAAkB,CAAU;IAEnD,IAAI,IAAI,IAAI,kBAAkB,CAE7B;IAED;IACE,kCAAkC;IACzB,MAAM,EAAE,aAAa;IAC9B,kCAAkC;IACzB,QAAQ,EAAE,MAAM;IACzB,gEAAgE;IACvD,WAAW,EAAE,MAAM,EAI7B;IAOD,sCAAsC;IACtC,MAAM,IAAI,oBAAoB,CAE7B;CACF"}
@@ -1,3 +1,41 @@
1
+ /**
2
+ * Retries exhausted error - returned when a Blocked error has exceeded max attempts.
3
+ *
4
+ * When an Op repeatedly returns `Blocked` and the retry config's `maxAttempts`
5
+ * is exhausted, the retry layer converts the final failure to `RetriesExhausted`.
6
+ *
7
+ * Unlike `Blocked`, this represents a permanent failure that callers must handle
8
+ * (e.g., compensate, alert, escalate, return error to caller).
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { defineOpContext, S, Err } from '@smoothbricks/lmao';
13
+ * import { Blocked } from '@smoothbricks/lmao/errors/Blocked';
14
+ * import { RetriesExhausted } from '@smoothbricks/lmao/errors/RetriesExhausted';
15
+ *
16
+ * const { defineOp } = defineOpContext({
17
+ * logSchema: { service: S.category() },
18
+ * ctx: { env: null as Env },
19
+ * });
20
+ *
21
+ * // Op that may be blocked by external service
22
+ * const callPaymentApi = defineOp('callPaymentApi', async (ctx, amount: number) => {
23
+ * const health = await checkHealth('payment-api');
24
+ * if (!health.available) {
25
+ * return new Err(Blocked.service('payment-api'));
26
+ * }
27
+ * const result = await ctx.deps.http.post('/pay', { amount });
28
+ * return ctx.ok(result);
29
+ * });
30
+ *
31
+ * // Caller handles permanent failure after retries exhausted
32
+ * const result = await trace('checkout', checkoutOp);
33
+ * if (result.isErr(RetriesExhausted)) {
34
+ * ctx.log.error(`Payment failed after ${result.error.attempts} attempts`);
35
+ * return ctx.err('PAYMENT_UNAVAILABLE', { service: result.error.reason });
36
+ * }
37
+ * ```
38
+ */
1
39
  import { getBlockedReasonName } from './Blocked.js';
2
40
  export class RetriesExhausted extends Error {
3
41
  reason;
@@ -48,9 +48,9 @@ export declare class TransientError<C extends string, D = void> extends CodeErro
48
48
  readonly policy: RetryPolicy;
49
49
  constructor(code: C, data: D, policy: RetryPolicy);
50
50
  toJSON(): {
51
- policy: RetryPolicy;
52
51
  code: C;
53
52
  data: D;
53
+ policy: RetryPolicy;
54
54
  };
55
55
  }
56
56
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Transient.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/Transient.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE;;;;;;;;;GASG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW;IAMxC,MAAM;;;;;CAMhB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpH,oEAAoE;IACpE,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjH,2DAA2D;IAC3D,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;CACrC;AAED,KAAK,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GACpE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,SAAS,SAAS,CAAC,GACjB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,WAAW,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAC9G,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EACpD,IAAI,EAAE,CAAC,EACP,aAAa,EAAE,WAAW,GACzB,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAmChC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"Transient.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/Transient.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE;;;;;;;;;GASG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAIhD;IAEQ,MAAM;;;;MAKd;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpH,oEAAoE;IACpE,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,sBAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjH,2DAA2D;IAC3D,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;CACrC;AAED,KAAK,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GACpE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,SAAS,SAAS,CAAC,GACjB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,WAAW,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAC9G,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EACpD,IAAI,EAAE,CAAC,EACP,aAAa,EAAE,WAAW,GACzB,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAmChC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,33 @@
1
+ //#region smoo/lmao!n/op-retry.transient
2
+ /**
3
+ * TransientError - typed transient error codes with embedded retry policy.
4
+ *
5
+ * Use the `Transient()` factory to define transient error codes WITH default retry policy.
6
+ * Op class checks `instanceof TransientError` and reads `error.policy` for retry config.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { Transient, exponentialBackoff, fixedDelay } from '@smoothbricks/lmao/errors/Transient';
11
+ *
12
+ * // Define error with default exponential backoff (5 attempts)
13
+ * const SERVICE_UNAVAILABLE = Transient<{ service: string }>('SERVICE_UNAVAILABLE', exponentialBackoff(5));
14
+ *
15
+ * // Define error with fixed delay for rate limiting
16
+ * const RATE_LIMITED = Transient<{ retryAfter?: number }>('RATE_LIMITED', fixedDelay(3, 5000));
17
+ *
18
+ * // Usage - data only, uses default policy
19
+ * ctx.err(SERVICE_UNAVAILABLE({ service: 'api' }));
20
+ *
21
+ * // Override policy for this specific call (e.g., use Retry-After header)
22
+ * ctx.err(RATE_LIMITED({ retryAfter: 60000 }, fixedDelay(1, 60000)));
23
+ *
24
+ * // Op class detects transient and reads policy
25
+ * if (result.error instanceof TransientError) {
26
+ * const { maxAttempts, backoff, baseDelayMs } = result.error.policy;
27
+ * // Execute retry loop based on policy
28
+ * }
29
+ * ```
30
+ */
1
31
  import { CodeError } from './CodeError.js';
2
32
  import { mergePolicy } from './retry-policy.js';
3
33
  /**
@@ -52,3 +82,4 @@ function isRetryPolicyLike(value) {
52
82
  }
53
83
  // Re-export policy helpers for convenience
54
84
  export { exponentialBackoff, fixedDelay, linearBackoff, mergePolicy } from './retry-policy.js';
85
+ //#endregion smoo/lmao!n/op-retry.transient
@@ -52,3 +52,4 @@ export function mergePolicy(base, override) {
52
52
  return base;
53
53
  return { ...base, ...override };
54
54
  }
55
+ //#endregion smoo/lmao!n/op-retry.policy
@@ -120,9 +120,6 @@ export declare class FlushScheduler {
120
120
  * Node.js only
121
121
  */
122
122
  private checkMemoryPressure;
123
- /**
124
- * Perform the actual flush operation
125
- */
126
123
  private doFlush;
127
124
  /**
128
125
  * Record activity (called when buffers are written to)
@@ -1 +1 @@
1
- {"version":3,"file":"flushScheduler.d.ts","sourceRoot":"","sources":["../../src/lib/flushScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAU,KAAK,KAAK,EAAoB,MAAM,mBAAmB,CAAC;AAKzE,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAuC5D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AAEH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,SAAS,CAAS;IAE1B,wDAAwD;IACxD,OAAO,CAAC,WAAW,CAAK;IAExB;;;;OAIG;IACH,OAAO,CAAC,+BAA+B,CAAgD;gBAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,GAAE,oBAAyB;IAepE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAUrC;;OAEG;IACH,KAAK,IAAI,IAAI;IA+Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAuBZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;YACW,OAAO;IAqJrB;;OAEG;IACH,cAAc,IAAI,IAAI;CAGvB;AASD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAK5G;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC;;OAEG;6BACsB,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS;IAKpE;;OAEG;6BACsB,cAAc,SAAS,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI;IAIjF;;OAEG;mCAC4B,cAAc,GAAG,MAAM,GAAG,SAAS;IAKlE;;OAEG;mCAC4B,cAAc,QAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAGtF,CAAC"}
1
+ {"version":3,"file":"flushScheduler.d.ts","sourceRoot":"","sources":["../../src/lib/flushScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAU,KAAK,KAAK,EAAoB,MAAM,mBAAmB,CAAC;AAKzE,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAuC5D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AAEH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,SAAS,CAAS;IAE1B,wDAAwD;IACxD,OAAO,CAAC,WAAW,CAAK;IAExB;;;;OAIG;IACH,OAAO,CAAC,+BAA+B,CAAgD;IAEvF,YAAY,OAAO,EAAE,YAAY,EAAE,MAAM,GAAE,oBAAyB,EAanE;IAED;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQpC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CA6BZ;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAqBX;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;YAkBb,OAAO;IAqJrB;;OAEG;IACH,cAAc,IAAI,IAAI,CAErB;CACF;AASD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAK5G;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC;;OAEG;IACH,aAAa,YAAY,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS;IAKpE;;OAEG;IACH,aAAa,YAAY,cAAc,SAAS,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI;IAIjF;;OAEG;IACH,mBAAmB,YAAY,cAAc,GAAG,MAAM,GAAG,SAAS;IAKlE;;OAEG;IACH,mBAAmB,YAAY,cAAc,QAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAGtF,CAAC"}
@@ -592,3 +592,4 @@ export function createRemappedSpanLoggerClass(cleanSchema, prefixMapping) {
592
592
  remappedSpanLoggerClassCache.set(cacheKey, GeneratedClass);
593
593
  return GeneratedClass;
594
594
  }
595
+ //#endregion smoo/lmao!n/codegen-prefixed-remap
@@ -1,3 +1,14 @@
1
+ /**
2
+ * LogAPI - Simple logging interface for contexts that need structured logging
3
+ * without direct access to a SpanBuffer.
4
+ *
5
+ * Used by:
6
+ * - Other contexts where a simplified logging interface is needed
7
+ *
8
+ * Unlike SpanLogger which is tightly coupled to a SpanBuffer and returns
9
+ * FluentLogEntry for chaining, LogAPI is a simple fire-and-forget interface
10
+ * that can be backed by any logging implementation.
11
+ */
1
12
  /**
2
13
  * No-op LogAPI implementation.
3
14
  *
@@ -1 +1,14 @@
1
+ /**
2
+ * LogBinding - Logging infrastructure binding for ops and buffers
3
+ *
4
+ * Represents the binding between a set of operations and their logging infrastructure.
5
+ * Contains the schema and optional remapping support for prefixed modules.
6
+ *
7
+ * Note: Buffer stats (self-tuning capacity) are stored on SpanBufferClass.stats as static
8
+ * properties, NOT on LogBinding. See agent-todo/opgroup-refactor.md for rationale.
9
+ *
10
+ * Per specs:
11
+ * - 01b2_buffer_self_tuning.md - Self-tuning via SpanBufferClass.stats
12
+ * - 01e_library_integration_pattern.md - Library prefix/remapping support
13
+ */
1
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/lib/op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAM7D;;;;;;GAMG;AAMH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;CACzC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,EAAE,CAAC,GAAG,SAAS,SAAS,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAE/D,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IACrG,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB;IACpD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,gBAAgB;;IAb7C,oDAAoD;IAC3C,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IAC/E,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IAC5F,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IACjE,iBAAiB,CAAC,EAAE,uBAAuB,YAAA;IACpD;;;;OAIG;IACM,iBAAiB,CAAC,EAAE,gBAAgB,YAAA;CAEhD"}
1
+ {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/lib/op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAM7D;;;;;;GAMG;AAMH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;CACzC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,EAAE,CAAC,GAAG,SAAS,SAAS,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAE/D,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IACrG,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB;IACpD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,gBAAgB;IAd/C;IACE,oDAAoD;IAC3C,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IAC/E,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IAC5F,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IACjE,iBAAiB,CAAC,EAAE,uBAAuB,YAAA;IACpD;;;;OAIG;IACM,iBAAiB,CAAC,EAAE,gBAAgB,YAAA,EAC3C;CACL"}
package/dist/lib/op.js CHANGED
@@ -1,3 +1,17 @@
1
+ /**
2
+ * Op - Traced operation class and OpMetadata
3
+ *
4
+ * This is the single source of truth for the Op class and OpMetadata interface.
5
+ * Other modules re-export these types for convenience.
6
+ *
7
+ * Wraps a user function with automatic span tracking.
8
+ * Created by defineOp() from the Op-centric API (defineOpContext).
9
+ *
10
+ * Per specs/lmao/01l_op_context_pattern.md and specs/lmao/01c_context_flow_and_op_wrappers.md:
11
+ * - Captures OpMetadata for attribution (package_name, package_file, git_sha, line)
12
+ * - fn is called by span_op() after span_op creates the SpanBuffer/SpanContext
13
+ * - Op name is used for metrics tracking (separate from span names)
14
+ */
1
15
  //#endregion smoo/lmao!n/opcontext-hierarchy
2
16
  // =============================================================================
3
17
  // Op Class
@@ -59,3 +73,4 @@ export class Op {
59
73
  this._opContextBinding = _opContextBinding;
60
74
  }
61
75
  }
76
+ //#endregion smoo/lmao!n/op-class