@smoothbricks/lmao 0.1.0

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 (447) hide show
  1. package/README.md +269 -0
  2. package/dist/allocator.wasm +0 -0
  3. package/dist/bun/preload.d.ts +11 -0
  4. package/dist/bun/preload.d.ts.map +1 -0
  5. package/dist/bun/preload.js +10 -0
  6. package/dist/bun/trace-preload.d.ts +8 -0
  7. package/dist/bun/trace-preload.d.ts.map +1 -0
  8. package/dist/bun/trace-preload.js +12 -0
  9. package/dist/es.d.ts +8 -0
  10. package/dist/es.d.ts.map +1 -0
  11. package/dist/es.js +9 -0
  12. package/dist/index.d.ts +41 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +84 -0
  15. package/dist/lib/JsBufferStrategy.d.ts +49 -0
  16. package/dist/lib/JsBufferStrategy.d.ts.map +1 -0
  17. package/dist/lib/JsBufferStrategy.js +60 -0
  18. package/dist/lib/archive/chunkCompaction.d.ts +15 -0
  19. package/dist/lib/archive/chunkCompaction.d.ts.map +1 -0
  20. package/dist/lib/archive/chunkCompaction.js +24 -0
  21. package/dist/lib/archive/chunkEnvelope.d.ts +21 -0
  22. package/dist/lib/archive/chunkEnvelope.d.ts.map +1 -0
  23. package/dist/lib/archive/chunkEnvelope.js +55 -0
  24. package/dist/lib/archive/chunkRouting.d.ts +10 -0
  25. package/dist/lib/archive/chunkRouting.d.ts.map +1 -0
  26. package/dist/lib/archive/chunkRouting.js +47 -0
  27. package/dist/lib/archive/chunkStats.d.ts +12 -0
  28. package/dist/lib/archive/chunkStats.d.ts.map +1 -0
  29. package/dist/lib/archive/chunkStats.js +10 -0
  30. package/dist/lib/archive/index.d.ts +5 -0
  31. package/dist/lib/archive/index.d.ts.map +1 -0
  32. package/dist/lib/archive/index.js +4 -0
  33. package/dist/lib/arrow/capacityStats.d.ts +9 -0
  34. package/dist/lib/arrow/capacityStats.d.ts.map +1 -0
  35. package/dist/lib/arrow/capacityStats.js +231 -0
  36. package/dist/lib/arrow/dictionaries.d.ts +27 -0
  37. package/dist/lib/arrow/dictionaries.d.ts.map +1 -0
  38. package/dist/lib/arrow/dictionaries.js +135 -0
  39. package/dist/lib/arrow/flechette.d.ts +40 -0
  40. package/dist/lib/arrow/flechette.d.ts.map +1 -0
  41. package/dist/lib/arrow/flechette.js +67 -0
  42. package/dist/lib/arrow/utils.d.ts +38 -0
  43. package/dist/lib/arrow/utils.d.ts.map +1 -0
  44. package/dist/lib/arrow/utils.js +112 -0
  45. package/dist/lib/buffer/Nanoseconds.d.ts +109 -0
  46. package/dist/lib/buffer/Nanoseconds.d.ts.map +1 -0
  47. package/dist/lib/buffer/Nanoseconds.js +86 -0
  48. package/dist/lib/bufferStrategy.d.ts +95 -0
  49. package/dist/lib/bufferStrategy.d.ts.map +1 -0
  50. package/dist/lib/bufferStrategy.js +1 -0
  51. package/dist/lib/capacityTuning.d.ts +50 -0
  52. package/dist/lib/capacityTuning.d.ts.map +1 -0
  53. package/dist/lib/capacityTuning.js +65 -0
  54. package/dist/lib/codegen/evaluatorGenerator.d.ts +35 -0
  55. package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -0
  56. package/dist/lib/codegen/evaluatorGenerator.js +199 -0
  57. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +139 -0
  58. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -0
  59. package/dist/lib/codegen/fixedPositionWriterGenerator.js +289 -0
  60. package/dist/lib/codegen/spanLoggerGenerator.d.ts +115 -0
  61. package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -0
  62. package/dist/lib/codegen/spanLoggerGenerator.js +575 -0
  63. package/dist/lib/convertToArrow.d.ts +40 -0
  64. package/dist/lib/convertToArrow.d.ts.map +1 -0
  65. package/dist/lib/convertToArrow.js +1467 -0
  66. package/dist/lib/defineOpContext.d.ts +96 -0
  67. package/dist/lib/defineOpContext.d.ts.map +1 -0
  68. package/dist/lib/defineOpContext.js +227 -0
  69. package/dist/lib/errors/Blocked.d.ts +113 -0
  70. package/dist/lib/errors/Blocked.d.ts.map +1 -0
  71. package/dist/lib/errors/Blocked.js +68 -0
  72. package/dist/lib/errors/CodeError.d.ts +101 -0
  73. package/dist/lib/errors/CodeError.d.ts.map +1 -0
  74. package/dist/lib/errors/CodeError.js +42 -0
  75. package/dist/lib/errors/RetriesExhausted.d.ts +67 -0
  76. package/dist/lib/errors/RetriesExhausted.d.ts.map +1 -0
  77. package/dist/lib/errors/RetriesExhausted.js +31 -0
  78. package/dist/lib/errors/Transient.d.ts +115 -0
  79. package/dist/lib/errors/Transient.d.ts.map +1 -0
  80. package/dist/lib/errors/Transient.js +54 -0
  81. package/dist/lib/errors/index.d.ts +14 -0
  82. package/dist/lib/errors/index.d.ts.map +1 -0
  83. package/dist/lib/errors/index.js +16 -0
  84. package/dist/lib/errors/retry-policy.d.ts +60 -0
  85. package/dist/lib/errors/retry-policy.d.ts.map +1 -0
  86. package/dist/lib/errors/retry-policy.js +54 -0
  87. package/dist/lib/flushScheduler.d.ts +162 -0
  88. package/dist/lib/flushScheduler.d.ts.map +1 -0
  89. package/dist/lib/flushScheduler.js +388 -0
  90. package/dist/lib/library.d.ts +149 -0
  91. package/dist/lib/library.d.ts.map +1 -0
  92. package/dist/lib/library.js +588 -0
  93. package/dist/lib/logApi.d.ts +61 -0
  94. package/dist/lib/logApi.d.ts.map +1 -0
  95. package/dist/lib/logApi.js +12 -0
  96. package/dist/lib/logBinding.d.ts +63 -0
  97. package/dist/lib/logBinding.d.ts.map +1 -0
  98. package/dist/lib/logBinding.js +1 -0
  99. package/dist/lib/op.d.ts +105 -0
  100. package/dist/lib/op.d.ts.map +1 -0
  101. package/dist/lib/op.js +59 -0
  102. package/dist/lib/opContext/contextTypes.d.ts +88 -0
  103. package/dist/lib/opContext/contextTypes.d.ts.map +1 -0
  104. package/dist/lib/opContext/contextTypes.js +34 -0
  105. package/dist/lib/opContext/createOpGroup.d.ts +57 -0
  106. package/dist/lib/opContext/createOpGroup.d.ts.map +1 -0
  107. package/dist/lib/opContext/createOpGroup.js +341 -0
  108. package/dist/lib/opContext/defineOp.d.ts +83 -0
  109. package/dist/lib/opContext/defineOp.d.ts.map +1 -0
  110. package/dist/lib/opContext/defineOp.js +197 -0
  111. package/dist/lib/opContext/featureFlagTypes.d.ts +58 -0
  112. package/dist/lib/opContext/featureFlagTypes.d.ts.map +1 -0
  113. package/dist/lib/opContext/featureFlagTypes.js +1 -0
  114. package/dist/lib/opContext/index.d.ts +13 -0
  115. package/dist/lib/opContext/index.d.ts.map +1 -0
  116. package/dist/lib/opContext/index.js +15 -0
  117. package/dist/lib/opContext/opGroupTypes.d.ts +250 -0
  118. package/dist/lib/opContext/opGroupTypes.d.ts.map +1 -0
  119. package/dist/lib/opContext/opGroupTypes.js +31 -0
  120. package/dist/lib/opContext/opTypes.d.ts +48 -0
  121. package/dist/lib/opContext/opTypes.d.ts.map +1 -0
  122. package/dist/lib/opContext/opTypes.js +7 -0
  123. package/dist/lib/opContext/spanContextTypes.d.ts +347 -0
  124. package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -0
  125. package/dist/lib/opContext/spanContextTypes.js +1 -0
  126. package/dist/lib/opContext/types.d.ts +297 -0
  127. package/dist/lib/opContext/types.d.ts.map +1 -0
  128. package/dist/lib/opContext/types.js +16 -0
  129. package/dist/lib/result.d.ts +308 -0
  130. package/dist/lib/result.d.ts.map +1 -0
  131. package/dist/lib/result.js +359 -0
  132. package/dist/lib/schema/LogSchema.d.ts +62 -0
  133. package/dist/lib/schema/LogSchema.d.ts.map +1 -0
  134. package/dist/lib/schema/LogSchema.js +134 -0
  135. package/dist/lib/schema/builder.d.ts +12 -0
  136. package/dist/lib/schema/builder.d.ts.map +1 -0
  137. package/dist/lib/schema/builder.js +169 -0
  138. package/dist/lib/schema/defineFeatureFlags.d.ts +60 -0
  139. package/dist/lib/schema/defineFeatureFlags.d.ts.map +1 -0
  140. package/dist/lib/schema/defineFeatureFlags.js +29 -0
  141. package/dist/lib/schema/defineLogSchema.d.ts +87 -0
  142. package/dist/lib/schema/defineLogSchema.d.ts.map +1 -0
  143. package/dist/lib/schema/defineLogSchema.js +171 -0
  144. package/dist/lib/schema/evaluator.d.ts +267 -0
  145. package/dist/lib/schema/evaluator.d.ts.map +1 -0
  146. package/dist/lib/schema/evaluator.js +169 -0
  147. package/dist/lib/schema/extend.d.ts +14 -0
  148. package/dist/lib/schema/extend.d.ts.map +1 -0
  149. package/dist/lib/schema/extend.js +51 -0
  150. package/dist/lib/schema/systemSchema.d.ts +112 -0
  151. package/dist/lib/schema/systemSchema.d.ts.map +1 -0
  152. package/dist/lib/schema/systemSchema.js +260 -0
  153. package/dist/lib/schema/typeGuards.d.ts +52 -0
  154. package/dist/lib/schema/typeGuards.d.ts.map +1 -0
  155. package/dist/lib/schema/typeGuards.js +127 -0
  156. package/dist/lib/schema/types.d.ts +156 -0
  157. package/dist/lib/schema/types.d.ts.map +1 -0
  158. package/dist/lib/schema/types.js +4 -0
  159. package/dist/lib/spanBuffer.d.ts +133 -0
  160. package/dist/lib/spanBuffer.d.ts.map +1 -0
  161. package/dist/lib/spanBuffer.js +442 -0
  162. package/dist/lib/spanBufferHelpers.d.ts +53 -0
  163. package/dist/lib/spanBufferHelpers.d.ts.map +1 -0
  164. package/dist/lib/spanBufferHelpers.js +65 -0
  165. package/dist/lib/spanBufferStats.d.ts +38 -0
  166. package/dist/lib/spanBufferStats.d.ts.map +1 -0
  167. package/dist/lib/spanBufferStats.js +1 -0
  168. package/dist/lib/spanContext.d.ts +141 -0
  169. package/dist/lib/spanContext.d.ts.map +1 -0
  170. package/dist/lib/spanContext.js +763 -0
  171. package/dist/lib/sqlite/index.d.ts +14 -0
  172. package/dist/lib/sqlite/index.d.ts.map +1 -0
  173. package/dist/lib/sqlite/index.js +12 -0
  174. package/dist/lib/sqlite/sqlite-async-writer.d.ts +24 -0
  175. package/dist/lib/sqlite/sqlite-async-writer.d.ts.map +1 -0
  176. package/dist/lib/sqlite/sqlite-async-writer.js +65 -0
  177. package/dist/lib/sqlite/sqlite-common.d.ts +37 -0
  178. package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -0
  179. package/dist/lib/sqlite/sqlite-common.js +207 -0
  180. package/dist/lib/sqlite/sqlite-d1.d.ts +25 -0
  181. package/dist/lib/sqlite/sqlite-d1.d.ts.map +1 -0
  182. package/dist/lib/sqlite/sqlite-d1.js +67 -0
  183. package/dist/lib/sqlite/sqlite-db.d.ts +29 -0
  184. package/dist/lib/sqlite/sqlite-db.d.ts.map +1 -0
  185. package/dist/lib/sqlite/sqlite-db.js +1 -0
  186. package/dist/lib/sqlite/sqlite-node.d.ts +16 -0
  187. package/dist/lib/sqlite/sqlite-node.d.ts.map +1 -0
  188. package/dist/lib/sqlite/sqlite-node.js +68 -0
  189. package/dist/lib/sqlite/sqlite-writer.d.ts +39 -0
  190. package/dist/lib/sqlite/sqlite-writer.d.ts.map +1 -0
  191. package/dist/lib/sqlite/sqlite-writer.js +78 -0
  192. package/dist/lib/testing/bun-harness.d.ts +150 -0
  193. package/dist/lib/testing/bun-harness.d.ts.map +1 -0
  194. package/dist/lib/testing/bun-harness.js +729 -0
  195. package/dist/lib/testing/extractFacts.d.ts +73 -0
  196. package/dist/lib/testing/extractFacts.d.ts.map +1 -0
  197. package/dist/lib/testing/extractFacts.js +237 -0
  198. package/dist/lib/testing/facts.d.ts +235 -0
  199. package/dist/lib/testing/facts.d.ts.map +1 -0
  200. package/dist/lib/testing/facts.js +209 -0
  201. package/dist/lib/testing/index.d.ts +58 -0
  202. package/dist/lib/testing/index.d.ts.map +1 -0
  203. package/dist/lib/testing/index.js +74 -0
  204. package/dist/lib/testing/queryable-span.d.ts +39 -0
  205. package/dist/lib/testing/queryable-span.d.ts.map +1 -0
  206. package/dist/lib/testing/queryable-span.js +58 -0
  207. package/dist/lib/testing/span-query.d.ts +21 -0
  208. package/dist/lib/testing/span-query.d.ts.map +1 -0
  209. package/dist/lib/testing/span-query.js +47 -0
  210. package/dist/lib/testing/stdio-replay.d.ts +4 -0
  211. package/dist/lib/testing/stdio-replay.d.ts.map +1 -0
  212. package/dist/lib/testing/stdio-replay.js +42 -0
  213. package/dist/lib/testing/trace-query.d.ts +59 -0
  214. package/dist/lib/testing/trace-query.d.ts.map +1 -0
  215. package/dist/lib/testing/trace-query.js +462 -0
  216. package/dist/lib/testing/vitest-harness.d.ts +135 -0
  217. package/dist/lib/testing/vitest-harness.d.ts.map +1 -0
  218. package/dist/lib/testing/vitest-harness.js +486 -0
  219. package/dist/lib/threadId.d.ts +58 -0
  220. package/dist/lib/threadId.d.ts.map +1 -0
  221. package/dist/lib/threadId.js +123 -0
  222. package/dist/lib/traceContext.d.ts +116 -0
  223. package/dist/lib/traceContext.d.ts.map +1 -0
  224. package/dist/lib/traceContext.js +37 -0
  225. package/dist/lib/traceId.d.ts +78 -0
  226. package/dist/lib/traceId.d.ts.map +1 -0
  227. package/dist/lib/traceId.js +87 -0
  228. package/dist/lib/traceRoot.d.ts +133 -0
  229. package/dist/lib/traceRoot.d.ts.map +1 -0
  230. package/dist/lib/traceRoot.es.d.ts +75 -0
  231. package/dist/lib/traceRoot.es.d.ts.map +1 -0
  232. package/dist/lib/traceRoot.es.js +129 -0
  233. package/dist/lib/traceRoot.js +19 -0
  234. package/dist/lib/traceRoot.node.d.ts +77 -0
  235. package/dist/lib/traceRoot.node.d.ts.map +1 -0
  236. package/dist/lib/traceRoot.node.js +133 -0
  237. package/dist/lib/traceRoot.universal.d.ts +3 -0
  238. package/dist/lib/traceRoot.universal.d.ts.map +1 -0
  239. package/dist/lib/traceRoot.universal.js +17 -0
  240. package/dist/lib/tracer.d.ts +296 -0
  241. package/dist/lib/tracer.d.ts.map +1 -0
  242. package/dist/lib/tracer.js +346 -0
  243. package/dist/lib/tracers/ArrayQueueTracer.d.ts +56 -0
  244. package/dist/lib/tracers/ArrayQueueTracer.d.ts.map +1 -0
  245. package/dist/lib/tracers/ArrayQueueTracer.js +67 -0
  246. package/dist/lib/tracers/CompositeTracer.d.ts +24 -0
  247. package/dist/lib/tracers/CompositeTracer.d.ts.map +1 -0
  248. package/dist/lib/tracers/CompositeTracer.js +57 -0
  249. package/dist/lib/tracers/NoOpTracer.d.ts +58 -0
  250. package/dist/lib/tracers/NoOpTracer.d.ts.map +1 -0
  251. package/dist/lib/tracers/NoOpTracer.js +41 -0
  252. package/dist/lib/tracers/SQLiteTracer.d.ts +42 -0
  253. package/dist/lib/tracers/SQLiteTracer.d.ts.map +1 -0
  254. package/dist/lib/tracers/SQLiteTracer.js +84 -0
  255. package/dist/lib/tracers/StdioTracer.d.ts +83 -0
  256. package/dist/lib/tracers/StdioTracer.d.ts.map +1 -0
  257. package/dist/lib/tracers/StdioTracer.js +270 -0
  258. package/dist/lib/tracers/TestTracer.d.ts +95 -0
  259. package/dist/lib/tracers/TestTracer.d.ts.map +1 -0
  260. package/dist/lib/tracers/TestTracer.js +87 -0
  261. package/dist/lib/tracers/index.d.ts +12 -0
  262. package/dist/lib/tracers/index.d.ts.map +1 -0
  263. package/dist/lib/tracers/index.js +11 -0
  264. package/dist/lib/types.d.ts +366 -0
  265. package/dist/lib/types.d.ts.map +1 -0
  266. package/dist/lib/types.js +1 -0
  267. package/dist/lib/utf8Cache.d.ts +111 -0
  268. package/dist/lib/utf8Cache.d.ts.map +1 -0
  269. package/dist/lib/utf8Cache.js +177 -0
  270. package/dist/lib/wasm/WasmBufferStrategy.d.ts +88 -0
  271. package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -0
  272. package/dist/lib/wasm/WasmBufferStrategy.js +138 -0
  273. package/dist/lib/wasm/wasmAllocator.d.ts +109 -0
  274. package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -0
  275. package/dist/lib/wasm/wasmAllocator.js +227 -0
  276. package/dist/lib/wasm/wasmSpanBuffer.d.ts +123 -0
  277. package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -0
  278. package/dist/lib/wasm/wasmSpanBuffer.js +772 -0
  279. package/dist/lib/wasm/wasmTraceRoot.d.ts +167 -0
  280. package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -0
  281. package/dist/lib/wasm/wasmTraceRoot.js +264 -0
  282. package/dist/node.d.ts +7 -0
  283. package/dist/node.d.ts.map +1 -0
  284. package/dist/node.js +8 -0
  285. package/dist/testing.d.ts +18 -0
  286. package/dist/testing.d.ts.map +1 -0
  287. package/dist/testing.js +17 -0
  288. package/package.json +193 -0
  289. package/src/bun/preload.ts +11 -0
  290. package/src/bun/trace-preload.ts +14 -0
  291. package/src/es.ts +11 -0
  292. package/src/index.ts +194 -0
  293. package/src/lib/JsBufferStrategy.ts +102 -0
  294. package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +485 -0
  295. package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +390 -0
  296. package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +647 -0
  297. package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +292 -0
  298. package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +354 -0
  299. package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +127 -0
  300. package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +392 -0
  301. package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +389 -0
  302. package/src/lib/__tests__/arrow-conversion-algorithms.test.ts +54 -0
  303. package/src/lib/__tests__/arrow-test-helpers.ts +71 -0
  304. package/src/lib/__tests__/binary-e2e.test.ts +203 -0
  305. package/src/lib/__tests__/buffer-overflow-op-api.test.ts +608 -0
  306. package/src/lib/__tests__/buffer-overflow.test.ts +612 -0
  307. package/src/lib/__tests__/capacity-tuning.test.ts +544 -0
  308. package/src/lib/__tests__/effective-schema.test.ts +439 -0
  309. package/src/lib/__tests__/flechette.test.ts +42 -0
  310. package/src/lib/__tests__/flushScheduler.test.ts +537 -0
  311. package/src/lib/__tests__/integration.test.ts +600 -0
  312. package/src/lib/__tests__/library.test.ts +934 -0
  313. package/src/lib/__tests__/nested-library-tasks.test.ts +849 -0
  314. package/src/lib/__tests__/op-context-binding.test.ts +135 -0
  315. package/src/lib/__tests__/op-metadata.test.ts +198 -0
  316. package/src/lib/__tests__/op-type-safety.test.ts +71 -0
  317. package/src/lib/__tests__/package-exports.test.ts +57 -0
  318. package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +319 -0
  319. package/src/lib/__tests__/remapped-buffer-view.test.ts +635 -0
  320. package/src/lib/__tests__/scope-attributes.test.ts +348 -0
  321. package/src/lib/__tests__/span-lifecycle.test.ts +680 -0
  322. package/src/lib/__tests__/sync-async-trace.test.ts +435 -0
  323. package/src/lib/__tests__/test-helpers.ts +318 -0
  324. package/src/lib/__tests__/timestamp.test.ts +259 -0
  325. package/src/lib/__tests__/trace-archive-primitives.test.ts +98 -0
  326. package/src/lib/__tests__/traceContext-type-enforcement.test.ts +271 -0
  327. package/src/lib/__tests__/tracer.test.ts +211 -0
  328. package/src/lib/__tests__/type-narrowing.test.ts +137 -0
  329. package/src/lib/archive/chunkCompaction.ts +44 -0
  330. package/src/lib/archive/chunkEnvelope.ts +79 -0
  331. package/src/lib/archive/chunkRouting.ts +70 -0
  332. package/src/lib/archive/chunkStats.ts +25 -0
  333. package/src/lib/archive/index.ts +4 -0
  334. package/src/lib/arrow/capacityStats.ts +340 -0
  335. package/src/lib/arrow/dictionaries.ts +159 -0
  336. package/src/lib/arrow/flechette.ts +114 -0
  337. package/src/lib/arrow/utils.ts +126 -0
  338. package/src/lib/buffer/Nanoseconds.ts +131 -0
  339. package/src/lib/bufferStrategy.ts +106 -0
  340. package/src/lib/capacityTuning.ts +102 -0
  341. package/src/lib/codegen/__tests__/__snapshots__/evaluatorGenerator.test.ts.snap +160 -0
  342. package/src/lib/codegen/__tests__/__snapshots__/scopeGenerator.test.ts.snap +196 -0
  343. package/src/lib/codegen/__tests__/__snapshots__/spanLoggerGenerator.test.ts.snap +1965 -0
  344. package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +516 -0
  345. package/src/lib/codegen/__tests__/nullBitmap.test.ts +207 -0
  346. package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +237 -0
  347. package/src/lib/codegen/evaluatorGenerator.ts +309 -0
  348. package/src/lib/codegen/fixedPositionWriterGenerator.ts +444 -0
  349. package/src/lib/codegen/spanLoggerGenerator.ts +715 -0
  350. package/src/lib/convertToArrow.ts +1805 -0
  351. package/src/lib/defineOpContext.ts +398 -0
  352. package/src/lib/errors/Blocked.ts +165 -0
  353. package/src/lib/errors/CodeError.ts +132 -0
  354. package/src/lib/errors/RetriesExhausted.ts +78 -0
  355. package/src/lib/errors/Transient.ts +168 -0
  356. package/src/lib/errors/__tests__/Blocked-config.test.ts +152 -0
  357. package/src/lib/errors/__tests__/Transient.test.ts +129 -0
  358. package/src/lib/errors/__tests__/retry-policy.test.ts +85 -0
  359. package/src/lib/errors/index.ts +24 -0
  360. package/src/lib/errors/retry-policy.ts +87 -0
  361. package/src/lib/flushScheduler.ts +509 -0
  362. package/src/lib/library.ts +682 -0
  363. package/src/lib/logApi.ts +70 -0
  364. package/src/lib/logBinding.ts +67 -0
  365. package/src/lib/op.ts +103 -0
  366. package/src/lib/opContext/__tests__/retry.test.ts +764 -0
  367. package/src/lib/opContext/contextTypes.ts +130 -0
  368. package/src/lib/opContext/createOpGroup.ts +456 -0
  369. package/src/lib/opContext/defineOp.ts +281 -0
  370. package/src/lib/opContext/featureFlagTypes.ts +54 -0
  371. package/src/lib/opContext/index.ts +16 -0
  372. package/src/lib/opContext/opGroupTypes.ts +342 -0
  373. package/src/lib/opContext/opTypes.ts +80 -0
  374. package/src/lib/opContext/spanContextTypes.ts +398 -0
  375. package/src/lib/opContext/types.ts +403 -0
  376. package/src/lib/result.ts +550 -0
  377. package/src/lib/schema/LogSchema.ts +153 -0
  378. package/src/lib/schema/__tests__/defineLogSchema.test.ts +342 -0
  379. package/src/lib/schema/__tests__/featureFlags.test.ts +443 -0
  380. package/src/lib/schema/builder.ts +201 -0
  381. package/src/lib/schema/defineFeatureFlags.ts +91 -0
  382. package/src/lib/schema/defineLogSchema.ts +291 -0
  383. package/src/lib/schema/evaluator.ts +404 -0
  384. package/src/lib/schema/extend.ts +69 -0
  385. package/src/lib/schema/systemSchema.ts +339 -0
  386. package/src/lib/schema/typeGuards.ts +163 -0
  387. package/src/lib/schema/types.ts +265 -0
  388. package/src/lib/spanBuffer.ts +571 -0
  389. package/src/lib/spanBufferHelpers.ts +73 -0
  390. package/src/lib/spanBufferStats.ts +40 -0
  391. package/src/lib/spanContext.ts +1566 -0
  392. package/src/lib/sqlite/__tests__/sqlite-common.test.ts +89 -0
  393. package/src/lib/sqlite/index.ts +26 -0
  394. package/src/lib/sqlite/sqlite-async-writer.ts +101 -0
  395. package/src/lib/sqlite/sqlite-common.ts +309 -0
  396. package/src/lib/sqlite/sqlite-d1.ts +104 -0
  397. package/src/lib/sqlite/sqlite-db.ts +32 -0
  398. package/src/lib/sqlite/sqlite-node.ts +83 -0
  399. package/src/lib/sqlite/sqlite-writer.ts +128 -0
  400. package/src/lib/testing/TRACE-TESTING.md +100 -0
  401. package/src/lib/testing/__tests__/bun-harness.test.ts +108 -0
  402. package/src/lib/testing/__tests__/extractFacts.test.ts +279 -0
  403. package/src/lib/testing/__tests__/facts.test.ts +324 -0
  404. package/src/lib/testing/__tests__/vitest-harness.test.ts +32 -0
  405. package/src/lib/testing/bun-harness.ts +990 -0
  406. package/src/lib/testing/extractFacts.ts +362 -0
  407. package/src/lib/testing/facts.ts +470 -0
  408. package/src/lib/testing/index.ts +141 -0
  409. package/src/lib/testing/queryable-span.ts +108 -0
  410. package/src/lib/testing/span-query.ts +65 -0
  411. package/src/lib/testing/stdio-replay.ts +50 -0
  412. package/src/lib/testing/trace-query.ts +329 -0
  413. package/src/lib/testing/vitest-harness.ts +691 -0
  414. package/src/lib/threadId.ts +135 -0
  415. package/src/lib/traceContext.ts +182 -0
  416. package/src/lib/traceId.ts +142 -0
  417. package/src/lib/traceRoot.es.ts +157 -0
  418. package/src/lib/traceRoot.node.ts +170 -0
  419. package/src/lib/traceRoot.ts +154 -0
  420. package/src/lib/traceRoot.universal.ts +22 -0
  421. package/src/lib/tracer.ts +896 -0
  422. package/src/lib/tracers/ArrayQueueTracer.ts +76 -0
  423. package/src/lib/tracers/CompositeTracer.ts +76 -0
  424. package/src/lib/tracers/NoOpTracer.ts +73 -0
  425. package/src/lib/tracers/SQLiteTracer.ts +115 -0
  426. package/src/lib/tracers/StdioTracer.ts +380 -0
  427. package/src/lib/tracers/TestTracer.ts +146 -0
  428. package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +184 -0
  429. package/src/lib/tracers/__tests__/NoOpTracer.test.ts +204 -0
  430. package/src/lib/tracers/__tests__/StdioTracer.test.ts +313 -0
  431. package/src/lib/tracers/__tests__/TestTracer.test.ts +200 -0
  432. package/src/lib/tracers/index.ts +12 -0
  433. package/src/lib/types.ts +498 -0
  434. package/src/lib/utf8Cache.ts +201 -0
  435. package/src/lib/wasm/WasmBufferStrategy.ts +219 -0
  436. package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +256 -0
  437. package/src/lib/wasm/__tests__/wasm-integration.test.ts +476 -0
  438. package/src/lib/wasm/__tests__/wasmAllocator.test.ts +699 -0
  439. package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +449 -0
  440. package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +390 -0
  441. package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +444 -0
  442. package/src/lib/wasm/allocator.zig +945 -0
  443. package/src/lib/wasm/wasmAllocator.ts +469 -0
  444. package/src/lib/wasm/wasmSpanBuffer.ts +1014 -0
  445. package/src/lib/wasm/wasmTraceRoot.ts +315 -0
  446. package/src/node.ts +10 -0
  447. package/src/testing.ts +18 -0
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Op Type Definitions
3
+ *
4
+ * Core type definitions for Ops - the first-class citizens of the Op-centric API.
5
+ * Ops wrap functions with metadata and enable composition.
6
+ *
7
+ * The Op class and OpMetadata interface are defined in ../op.ts (single source of truth)
8
+ * and re-exported here for convenience.
9
+ *
10
+ * ## Dependency Layer
11
+ * This module is at Layer 3 in the type hierarchy:
12
+ * - Depends on: spanContextTypes (Layer 2), featureFlagTypes (Layer 1)
13
+ * - Depended on by: opGroupTypes (Layer 4)
14
+ */
15
+
16
+ import type { ExtractError, ExtractSuccess, Result } from '../result.js';
17
+ import type { SpanContext } from './spanContextTypes.js';
18
+ import type { OpContext } from './types.js';
19
+
20
+ // =============================================================================
21
+ // OP CLASS & METADATA RE-EXPORTS
22
+ // =============================================================================
23
+
24
+ // Re-export the Op class and OpMetadata from op.ts - single source of truth
25
+ // The class is defined in op.ts to be the canonical type used by both
26
+ // defineOp (creates instances) and Tracer (checks instanceof)
27
+ export { Op, type OpMetadata } from '../op.js';
28
+
29
+ // =============================================================================
30
+ // OP FUNCTION TYPE
31
+ // =============================================================================
32
+
33
+ /**
34
+ * Op function signature - what the user provides to defineOp.
35
+ * MUST return Result<S, E> or Promise<Result<S, E>>.
36
+ *
37
+ * @template Ctx - Bundled OpContext (logSchema, flags, deps, userCtx)
38
+ * @template Args - Function arguments (after ctx)
39
+ * @template S - Success type
40
+ * @template E - Error type
41
+ */
42
+ export type OpFn<Ctx extends OpContext, Args extends unknown[], S, E> = (
43
+ ctx: SpanContext<Ctx>,
44
+ ...args: Args
45
+ ) => Result<S, E> | Promise<Result<S, E>>;
46
+
47
+ // =============================================================================
48
+ // OP RECORD TRANSFORMATION
49
+ // =============================================================================
50
+
51
+ // Import Op class for use in OpsFromRecord type
52
+ import type { Op } from '../op.js';
53
+
54
+ /**
55
+ * Convert a single definition (Op or OpFn) to an Op type.
56
+ * Uses ExtractSuccess/ExtractError from result.ts to infer types from return value.
57
+ */
58
+ type DefToOp<Ctx extends OpContext, Def> =
59
+ Def extends Op<Ctx, infer Args, infer S, infer E>
60
+ ? Op<Ctx, Args, S, E>
61
+ : Def extends (ctx: SpanContext<Ctx>, ...args: infer Args) => infer R
62
+ ? Op<Ctx, Args, ExtractSuccess<R>, ExtractError<R>>
63
+ : never;
64
+
65
+ /**
66
+ * Transform a record of Op functions into Ops
67
+ *
68
+ * Used by defineOps for batch definition. Takes a record where values are either:
69
+ * - Existing Op instances (passed through)
70
+ * - Op function signatures (wrapped into Ops)
71
+ *
72
+ * @template Ctx - Bundled OpContext (logSchema, flags, deps, userCtx)
73
+ * @template Defs - Record of Op definitions (functions or existing Ops)
74
+ */
75
+ export type OpsFromRecord<
76
+ Ctx extends OpContext,
77
+ Defs extends Record<string, Op<Ctx, unknown[], unknown, unknown> | OpFn<Ctx, unknown[], unknown, unknown>>,
78
+ > = {
79
+ [K in keyof Defs]: DefToOp<Ctx, Defs[K]>;
80
+ };
@@ -0,0 +1,398 @@
1
+ /**
2
+ * SpanContext Types for Op-Centric API
3
+ *
4
+ * Core types for span-level operations within the trace logging system.
5
+ * These types define the context passed to Op functions for:
6
+ * - Tag writing (row 0 attributes)
7
+ * - Structured logging (rows 2+)
8
+ * - Result handling (ok/err)
9
+ * - Child span creation
10
+ * - Feature flag access
11
+ * - Dependency access
12
+ *
13
+ * ## Dependency Layer
14
+ * This module is at Layer 2 in the type hierarchy:
15
+ * - Depends on: result (Layer 1), types (Layer 3), featureFlagTypes (Layer 1)
16
+ * - Depended on by: opTypes (Layer 3)
17
+ *
18
+ * SpanFn now uses Op<Ctx, Args, S, E> directly (no structural typing).
19
+ */
20
+
21
+ import type { FluentLogEntry as FluentLogEntryFromGenerator } from '../codegen/spanLoggerGenerator.js';
22
+ import type { Err, Ok, Result } from '../result.js';
23
+ import type { FeatureFlagEvaluator, InferFeatureFlagsWithContext } from '../schema/evaluator.js';
24
+ import type { LogSchema } from '../schema/LogSchema.js';
25
+ import type { InferSchema } from '../schema/types.js';
26
+ import type { SpanBuffer } from '../types.js';
27
+ import type { Op } from './opTypes.js';
28
+ import type { OpContext } from './types.js';
29
+
30
+ // =============================================================================
31
+ // DEPENDENCY TYPES (structural to avoid circular imports)
32
+ // =============================================================================
33
+
34
+ /**
35
+ * DepsConfig - structural type to avoid importing from opGroupTypes.
36
+ * Represents a record of dependency groups.
37
+ */
38
+ // biome-ignore lint/suspicious/noExplicitAny: Structural placeholder - actual type in opGroupTypes
39
+ export type DepsConfig = Record<string, any>;
40
+
41
+ /**
42
+ * ResolvedDeps - structural type to avoid importing from opGroupTypes.
43
+ * At runtime, deps are resolved OpGroups with their ops accessible.
44
+ */
45
+ // biome-ignore lint/suspicious/noExplicitAny: Structural placeholder - actual type in opGroupTypes
46
+ export type ResolvedDeps<_D extends DepsConfig> = Record<string, any>;
47
+
48
+ // =============================================================================
49
+ // TAG & LOG WRITER TYPES
50
+ // =============================================================================
51
+
52
+ /**
53
+ * Tag writer for setting span attributes (row 0)
54
+ * Generated at runtime with typed methods per schema field.
55
+ *
56
+ * Per specs/lmao/01h_entry_types_and_logging_primitives.md:
57
+ * - Writes to row 0 (fixed layout for span-start attributes)
58
+ * - All methods return TagWriter<T> for fluent chaining
59
+ * - Generated at runtime via createTagWriter()
60
+ */
61
+ export type TagWriter<T extends LogSchema> = {
62
+ [K in keyof InferSchema<T>]: (value: InferSchema<T>[K]) => TagWriter<T>;
63
+ } & {
64
+ /** Set multiple attributes at once */
65
+ with(attributes: Partial<InferSchema<T>>): TagWriter<T>;
66
+ };
67
+
68
+ /**
69
+ * SpanLogger - public API surface for structured logging.
70
+ *
71
+ * Includes core methods (info/debug/warn/error) from BaseSpanLogger
72
+ * and schema-specific methods from ColumnWriter.
73
+ * Internal methods (_setScope, _buffer, etc.) are hidden from this type.
74
+ *
75
+ * Per specs/lmao/01h_entry_types_and_logging_primitives.md:
76
+ * - Each level (info/debug/warn/error) creates a log entry
77
+ * - Returns FluentLogEntry for chaining field setters
78
+ * - Generated at runtime via createSpanLoggerFromGenerator()
79
+ */
80
+ export interface SpanLogger<T extends LogSchema> {
81
+ /** Log at info level */
82
+ info(message: string): FluentLogEntry<T>;
83
+ /** Log at debug level */
84
+ debug(message: string): FluentLogEntry<T>;
85
+ /** Log at warn level */
86
+ warn(message: string): FluentLogEntry<T>;
87
+ /** Log at error level */
88
+ error(message: string): FluentLogEntry<T>;
89
+ }
90
+
91
+ /**
92
+ * Fluent log entry - chainable attribute setters after log level.
93
+ *
94
+ * Re-exported from spanLoggerGenerator.ts to avoid circular dependencies.
95
+ * The implementation in spanLoggerGenerator.ts is the source of truth.
96
+ *
97
+ * Allows setting attributes after choosing a log level:
98
+ * ctx.log.info('message').userId('u1').requestId('r1')
99
+ *
100
+ * All attributes are optional, chainable, and return FluentLogEntry for continuation.
101
+ *
102
+ * Includes system schema fields for direct access (no information hiding):
103
+ * - line(n) - Source line number (0-65535)
104
+ * - error_code(code) - Error code string
105
+ * - exception_stack(stack) - Exception stack trace
106
+ * - ff_value(value) - Feature flag value
107
+ * - uint64_value(value) - BigInt value
108
+ *
109
+ * Per specs/lmao/01c_context_flow_and_op_wrappers.md "Line Number System":
110
+ * - TypeScript transformer injects line() calls at compile time
111
+ * - No runtime overhead - just a method call with literal number
112
+ */
113
+ export type FluentLogEntry<T extends LogSchema> = FluentLogEntryFromGenerator<T>;
114
+
115
+ // =============================================================================
116
+ // SPAN FUNCTION TYPES
117
+ // =============================================================================
118
+
119
+ /**
120
+ * SpanFn - overloaded span creation function.
121
+ *
122
+ * Per specs/lmao/01l_op_context_pattern.md and 01o lines 34-72:
123
+ * Creates child spans with type-safe Op invocation or inline closures, with/without line numbers.
124
+ *
125
+ * The transformer injects line numbers at compile time, but runtime supports both patterns for fallback.
126
+ * Uses Op<Ctx, Args, S, E> and returns Result<S, E> (no generic R).
127
+ */
128
+ export type SpanFn<Ctx extends OpContext> = {
129
+ /**
130
+ * Create child span with line number and Op invocation.
131
+ *
132
+ * Per spec 01o lines 46-49: Monomorphic span_op for transformer-injected line numbers.
133
+ *
134
+ * @param line - Source code line number (injected by transformer at compile time)
135
+ * @param name - Child span name (overrides Op's default name)
136
+ * @param op - Op to invoke (type-safe with Args, Success, Error types)
137
+ * @param args - Arguments to pass to Op function
138
+ * @returns Promise resolving to Result<S, E>
139
+ *
140
+ * @example
141
+ * const result = await ctx.span(42, 'fetch-user', fetchUserOp, userId);
142
+ */
143
+ <S, E, Args extends unknown[]>(
144
+ line: number,
145
+ name: string,
146
+ op: Op<Ctx, Args, S, E>,
147
+ ...args: Args
148
+ ): Promise<Result<S, E>>;
149
+
150
+ /**
151
+ * Create child span with line number and inline closure.
152
+ *
153
+ * Per spec 01o lines 51-53: Monomorphic span_fn for transformer-injected line numbers.
154
+ *
155
+ * @param line - Source code line number (injected by transformer at compile time)
156
+ * @param name - Child span name
157
+ * @param fn - Async function to execute in child span (receives SpanContext<Ctx>)
158
+ * @returns Promise resolving to Result<S, E>
159
+ *
160
+ * @example
161
+ * const result = await ctx.span(42, 'validate', async (childCtx) => {
162
+ * childCtx.tag.step('validation');
163
+ * return childCtx.ok({ valid: true });
164
+ * });
165
+ */
166
+ <S, E>(
167
+ line: number,
168
+ name: string,
169
+ fn: (ctx: SpanContext<Ctx>) => Result<S, E> | Promise<Result<S, E>>,
170
+ ): Promise<Result<S, E>>;
171
+
172
+ /**
173
+ * Create child span with Op invocation (most common - no line number).
174
+ *
175
+ * Per spec 01o lines 55-71: Polymorphic span dispatcher for fallback when transformer didn't inject line number.
176
+ *
177
+ * @param name - Child span name (overrides Op's default name)
178
+ * @param op - Op to invoke (type-safe with Args, Success, Error types)
179
+ * @param args - Arguments to pass to Op function
180
+ * @returns Promise resolving to Result<S, E>
181
+ *
182
+ * @example
183
+ * const result = await ctx.span('fetch-user', fetchUserOp, userId);
184
+ */
185
+ <S, E, Args extends unknown[]>(name: string, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
186
+
187
+ /**
188
+ * Create child span with inline closure (most common - no line number).
189
+ *
190
+ * Per spec 01o lines 55-71: Polymorphic span dispatcher for fallback when transformer didn't inject line number.
191
+ *
192
+ * @param name - Child span name
193
+ * @param fn - Async function to execute in child span (receives SpanContext<Ctx>)
194
+ * @returns Promise resolving to Result<S, E>
195
+ *
196
+ * @example
197
+ * const result = await ctx.span('validate', async (childCtx) => {
198
+ * childCtx.tag.step('validation');
199
+ * return childCtx.ok({ valid: true });
200
+ * });
201
+ */
202
+ <S, E>(name: string, fn: (ctx: SpanContext<Ctx>) => Result<S, E> | Promise<Result<S, E>>): Promise<Result<S, E>>;
203
+ };
204
+
205
+ /**
206
+ * SpanSyncFn - synchronous child span creation.
207
+ *
208
+ * Use when the callback is guaranteed sync and should return immediately
209
+ * with a Result envelope.
210
+ */
211
+ export type SpanSyncFn<Ctx extends OpContext> = <S, E>(
212
+ name: string,
213
+ fn: (ctx: SpanContext<Ctx>) => Result<S, E>,
214
+ ) => Result<S, E>;
215
+
216
+ // =============================================================================
217
+ // SPAN CONTEXT TYPE
218
+ // =============================================================================
219
+
220
+ /**
221
+ * SpanContext - what op functions receive.
222
+ *
223
+ * Per specs/lmao/01c_context_flow_and_op_wrappers.md and 01l:
224
+ * - Passed to Op functions as first argument
225
+ * - Combines built-in properties with user-extensible UserCtx via intersection
226
+ * - Child spans inherit scoped attributes from parent (frozen copy for safety)
227
+ * - User properties from Ctx['userCtx'] are spread via intersection at end
228
+ *
229
+ * @template Ctx - Bundled context (logSchema, flags, deps, userCtx)
230
+ *
231
+ * @example
232
+ * ```typescript
233
+ * const createUser = op('create-user', async (ctx, userData) => {
234
+ * ctx.setScope({ userId: userData.id });
235
+ * ctx.tag.operation('INSERT');
236
+ * ctx.log.info('Creating user').line(42);
237
+ * return ctx.ok(user);
238
+ * });
239
+ * ```
240
+ */
241
+ export type SpanContext<Ctx extends OpContext> = {
242
+ /**
243
+ * The underlying SpanBuffer for this context.
244
+ *
245
+ * Useful for Arrow table conversion after task completion.
246
+ * The buffer contains all trace data written during this span's execution.
247
+ *
248
+ * @example
249
+ * ```typescript
250
+ * const result = await myTask(requestCtx, args);
251
+ * const table = convertToArrowTable(ctx.buffer);
252
+ * ```
253
+ */
254
+ buffer: SpanBuffer<Ctx['logSchema']>;
255
+
256
+ /**
257
+ * Tag writer for span attributes (row 0).
258
+ *
259
+ * Per specs/lmao/01h_entry_types_and_logging_primitives.md:
260
+ * - Writes to row 0 (fixed layout for span-start attributes)
261
+ * - All methods return TagWriter for fluent chaining
262
+ *
263
+ * @example
264
+ * ctx.tag.userId('u1').requestId('r1').operation('INSERT');
265
+ */
266
+ tag: TagWriter<Ctx['logSchema']>;
267
+
268
+ /**
269
+ * Structured logger (rows 2+).
270
+ *
271
+ * Per specs/lmao/01h_entry_types_and_logging_primitives.md:
272
+ * - info/debug/warn/error create log entries
273
+ * - Returns FluentLogEntry for chaining field setters
274
+ * - Entries are appended after row 1
275
+ *
276
+ * @example
277
+ * ctx.log.info('Processing request').userId('u1').line(42);
278
+ */
279
+ log: SpanLogger<Ctx['logSchema']>;
280
+
281
+ /**
282
+ * Feature flags (logs access to current span).
283
+ *
284
+ * Per specs/lmao/01p_feature_flags.md:
285
+ * - Sync access via ff.flagName / ff['flagName']
286
+ * - Async access via await ff.get('flagName')
287
+ * - Logs flag access to span automatically
288
+ * - Type-safe evaluation with context
289
+ */
290
+ ff: FeatureFlagEvaluator<Ctx> & InferFeatureFlagsWithContext<Ctx>;
291
+
292
+ /**
293
+ * Dependencies - can be destructured!
294
+ *
295
+ * Per spec 01l lines 757-758:
296
+ * - Plain object references to dependency modules/ops
297
+ * - Zero-allocation deps (not closures)
298
+ *
299
+ * @example
300
+ * const { retry, auth } = deps;
301
+ * await span('retry', retry, 1);
302
+ */
303
+ deps: ResolvedDeps<Ctx['deps']>;
304
+
305
+ /**
306
+ * Create a success result with optional attributes.
307
+ *
308
+ * Writes span-ok entry to row 1 (span-end).
309
+ * Supports fluent chaining with .with() and .message().
310
+ *
311
+ * @param value - The success value
312
+ * @returns Fluent result builder
313
+ *
314
+ * @example
315
+ * return ctx.ok(user).with({ userId: user.id });
316
+ */
317
+ ok<S>(value: S): Ok<S, Ctx['logSchema']>;
318
+
319
+ /**
320
+ * Create an error result with optional attributes.
321
+ *
322
+ * Writes span-err entry to row 1 (span-end).
323
+ * Supports fluent chaining with .with() and .message().
324
+ *
325
+ * @param code - Error code string
326
+ * @param details - Error details
327
+ * @returns Fluent result builder
328
+ *
329
+ * @example
330
+ * const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
331
+ * return ctx.err(NOT_FOUND({ userId })).message('User not found');
332
+ */
333
+ err<E>(error: E): Err<E, Ctx['logSchema']>;
334
+
335
+ /**
336
+ * Create a child span with its own buffer.
337
+ *
338
+ * Child spans inherit scoped attributes from the parent.
339
+ * The child function receives a new SpanContext.
340
+ *
341
+ * Per specs/lmao/01i_span_scope_attributes.md:
342
+ * - Child inherits parent's scope by reference (safe because immutable)
343
+ * - Child can override scope values with setScope()
344
+ * - Scope is frozen at each level to prevent race conditions
345
+ *
346
+ * @example
347
+ * const result = await ctx.span('validate', async (childCtx) => {
348
+ * childCtx.tag.step('validation');
349
+ * return childCtx.ok({ valid: true });
350
+ * });
351
+ */
352
+ span: SpanFn<Ctx>;
353
+
354
+ /**
355
+ * Create a synchronous child span.
356
+ *
357
+ * `spanSync` is for sync callbacks only and returns Result directly.
358
+ * It does not await or perform async retry/backoff behavior.
359
+ */
360
+ spanSync: SpanSyncFn<Ctx>;
361
+
362
+ /**
363
+ * Set scoped attributes that auto-propagate to all subsequent log entries.
364
+ *
365
+ * Scoped attributes are automatically included in all log entries
366
+ * and inherited by child spans. Uses merge semantics - pass null to clear a value.
367
+ *
368
+ * Per specs/lmao/01i_span_scope_attributes.md:
369
+ * - Creates a NEW frozen object (never mutates existing scope)
370
+ * - setScope({ x: null }) removes x from scope
371
+ * - Child spans get frozen snapshot at creation (async-safe)
372
+ *
373
+ * @param attributes - Attributes to scope to this span (null clears a value)
374
+ *
375
+ * @example
376
+ * ctx.setScope({ requestId: req.id, userId: req.user?.id });
377
+ * ctx.log.info('Processing'); // Includes requestId and userId
378
+ * ctx.setScope({ userId: null }); // Clear userId from scope
379
+ */
380
+ setScope(values: Partial<InferSchema<Ctx['logSchema']>> | null): void;
381
+
382
+ /**
383
+ * Read-only view of current scoped attributes.
384
+ *
385
+ * Returns the frozen scope object containing all currently scoped values.
386
+ * Use setScope() to modify scope values.
387
+ *
388
+ * Per specs/lmao/01i_span_scope_attributes.md:
389
+ * - Always a frozen object, never undefined
390
+ * - Initialized to EMPTY_SCOPE, only replaced with new frozen objects
391
+ * - Safe to read from async code without race conditions
392
+ *
393
+ * @example
394
+ * ctx.setScope({ requestId: 'r1' });
395
+ * console.log(ctx.scope.requestId); // 'r1'
396
+ */
397
+ scope: Readonly<Partial<InferSchema<Ctx['logSchema']>>>;
398
+ } & Ctx['userCtx'];