@smthrs/observability 0.35.0 → 1.0.0-rc.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/LICENSE +1 -1
  3. package/README.md +87 -0
  4. package/dist/cjs/BrowserOtel.d.ts +37 -0
  5. package/dist/cjs/BrowserOtel.d.ts.map +1 -0
  6. package/dist/cjs/BrowserOtel.js +47 -0
  7. package/dist/cjs/BrowserOtel.js.map +7 -0
  8. package/dist/cjs/Endpoint.d.ts +70 -0
  9. package/dist/cjs/Endpoint.d.ts.map +1 -0
  10. package/dist/cjs/Endpoint.js +85 -0
  11. package/dist/cjs/Endpoint.js.map +7 -0
  12. package/dist/cjs/JournalLogger.d.ts +232 -0
  13. package/dist/cjs/JournalLogger.d.ts.map +1 -0
  14. package/dist/cjs/JournalLogger.js +415 -0
  15. package/dist/cjs/JournalLogger.js.map +7 -0
  16. package/dist/cjs/Logger.d.ts +56 -0
  17. package/dist/cjs/Logger.d.ts.map +1 -0
  18. package/dist/cjs/Logger.js +72 -0
  19. package/dist/cjs/Logger.js.map +7 -0
  20. package/dist/cjs/Metric.d.ts +67 -0
  21. package/dist/cjs/Metric.d.ts.map +1 -0
  22. package/dist/cjs/Metric.js +68 -0
  23. package/dist/cjs/Metric.js.map +7 -0
  24. package/dist/cjs/NodeOtel.d.ts +42 -0
  25. package/dist/cjs/NodeOtel.d.ts.map +1 -0
  26. package/dist/cjs/NodeOtel.js +78 -0
  27. package/dist/cjs/NodeOtel.js.map +7 -0
  28. package/dist/cjs/Otel.d.ts +63 -0
  29. package/dist/cjs/Otel.d.ts.map +1 -0
  30. package/dist/cjs/Otel.js +75 -0
  31. package/dist/cjs/Otel.js.map +7 -0
  32. package/dist/cjs/Otlp.d.ts +203 -0
  33. package/dist/cjs/Otlp.d.ts.map +1 -0
  34. package/dist/cjs/Otlp.js +251 -0
  35. package/dist/cjs/Otlp.js.map +7 -0
  36. package/dist/cjs/Resource.d.ts +163 -0
  37. package/dist/cjs/Resource.d.ts.map +1 -0
  38. package/dist/cjs/Resource.js +186 -0
  39. package/dist/cjs/Resource.js.map +7 -0
  40. package/dist/cjs/index.d.ts +61 -0
  41. package/dist/cjs/index.d.ts.map +1 -0
  42. package/dist/cjs/index.js +47 -0
  43. package/dist/cjs/index.js.map +7 -0
  44. package/dist/cjs/internal/schemaIssuePath.d.ts +31 -0
  45. package/dist/cjs/internal/schemaIssuePath.d.ts.map +1 -0
  46. package/dist/cjs/internal/schemaIssuePath.js +49 -0
  47. package/dist/cjs/internal/schemaIssuePath.js.map +7 -0
  48. package/dist/cjs/package.json +1 -0
  49. package/dist/esm/BrowserOtel.d.ts +37 -0
  50. package/dist/esm/BrowserOtel.d.ts.map +1 -0
  51. package/dist/esm/BrowserOtel.js +24 -0
  52. package/dist/esm/BrowserOtel.js.map +1 -0
  53. package/dist/esm/Endpoint.d.ts +70 -0
  54. package/dist/esm/Endpoint.d.ts.map +1 -0
  55. package/dist/esm/Endpoint.js +110 -0
  56. package/dist/esm/Endpoint.js.map +1 -0
  57. package/dist/esm/JournalLogger.d.ts +232 -0
  58. package/dist/esm/JournalLogger.d.ts.map +1 -0
  59. package/dist/esm/JournalLogger.js +520 -0
  60. package/dist/esm/JournalLogger.js.map +1 -0
  61. package/dist/esm/Logger.d.ts +56 -0
  62. package/dist/esm/Logger.d.ts.map +1 -0
  63. package/dist/esm/Logger.js +61 -0
  64. package/dist/esm/Logger.js.map +1 -0
  65. package/dist/esm/Metric.d.ts +67 -0
  66. package/dist/esm/Metric.d.ts.map +1 -0
  67. package/dist/esm/Metric.js +80 -0
  68. package/dist/esm/Metric.js.map +1 -0
  69. package/dist/esm/NodeOtel.d.ts +42 -0
  70. package/dist/esm/NodeOtel.d.ts.map +1 -0
  71. package/dist/esm/NodeOtel.js +56 -0
  72. package/dist/esm/NodeOtel.js.map +1 -0
  73. package/dist/esm/Otel.d.ts +63 -0
  74. package/dist/esm/Otel.d.ts.map +1 -0
  75. package/dist/esm/Otel.js +52 -0
  76. package/dist/esm/Otel.js.map +1 -0
  77. package/dist/esm/Otlp.d.ts +203 -0
  78. package/dist/esm/Otlp.d.ts.map +1 -0
  79. package/dist/esm/Otlp.js +384 -0
  80. package/dist/esm/Otlp.js.map +1 -0
  81. package/dist/esm/Resource.d.ts +163 -0
  82. package/dist/esm/Resource.d.ts.map +1 -0
  83. package/dist/esm/Resource.js +238 -0
  84. package/dist/esm/Resource.js.map +1 -0
  85. package/dist/esm/index.d.ts +61 -0
  86. package/dist/esm/index.d.ts.map +1 -0
  87. package/dist/esm/index.js +61 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/internal/schemaIssuePath.d.ts +31 -0
  90. package/dist/esm/internal/schemaIssuePath.d.ts.map +1 -0
  91. package/dist/esm/internal/schemaIssuePath.js +59 -0
  92. package/dist/esm/internal/schemaIssuePath.js.map +1 -0
  93. package/docs/README.md +164 -0
  94. package/docs/api.md +780 -0
  95. package/docs/concepts/instrumentation-and-export.md +98 -0
  96. package/docs/concepts/layer-map.md +73 -0
  97. package/docs/concepts/validated-acquisition.md +106 -0
  98. package/docs/guides/export-to-a-collector.md +190 -0
  99. package/docs/guides/forward-logs-to-the-journal.md +226 -0
  100. package/docs/guides/install-a-logger.md +111 -0
  101. package/docs/guides/read-runtime-metrics.md +83 -0
  102. package/docs/guides/testing.md +134 -0
  103. package/docs/guides/wire-an-opentelemetry-sdk.md +226 -0
  104. package/docs/installation.md +102 -0
  105. package/docs/quickstart.md +145 -0
  106. package/docs/troubleshooting.md +168 -0
  107. package/package.json +221 -32
  108. package/src/BrowserOtel.ts +51 -0
  109. package/src/Endpoint.ts +131 -0
  110. package/src/JournalLogger.ts +635 -0
  111. package/src/Logger.ts +107 -0
  112. package/src/Metric.ts +88 -0
  113. package/src/NodeOtel.ts +90 -0
  114. package/src/Otel.ts +118 -0
  115. package/src/Otlp.ts +514 -0
  116. package/src/Resource.ts +325 -0
  117. package/src/index.ts +67 -0
  118. package/src/internal/schemaIssuePath.ts +65 -0
  119. package/docker-compose.otel.yml +0 -104
  120. package/grafana/dashboards/smithers-dashboard.json +0 -453
  121. package/grafana/provisioning/dashboards/dashboards.yml +0 -12
  122. package/grafana/provisioning/datasources/datasources.yml +0 -49
  123. package/loki/loki-config.yaml +0 -35
  124. package/otel-collector-config.yml +0 -38
  125. package/prometheus/prometheus.yml +0 -8
  126. package/src/MetricName.ts +0 -1
  127. package/src/MetricsServiceLive.js +0 -9
  128. package/src/README.md +0 -28
  129. package/src/ResolvedSmithersObservabilityOptions.ts +0 -12
  130. package/src/SmithersEvent.ts +0 -843
  131. package/src/SmithersLogFormat.ts +0 -1
  132. package/src/SmithersMetricDefinition.ts +0 -15
  133. package/src/SmithersMetricType.ts +0 -1
  134. package/src/SmithersMetricUnit.ts +0 -1
  135. package/src/SmithersObservability.js +0 -15
  136. package/src/SmithersObservabilityOptions.ts +0 -12
  137. package/src/SmithersObservabilityService.ts +0 -13
  138. package/src/_coreCorrelation/CorrelationContext.ts +0 -10
  139. package/src/_coreCorrelation/CorrelationContextLive.js +0 -11
  140. package/src/_coreCorrelation/CorrelationContextService.js +0 -15
  141. package/src/_coreCorrelation/CorrelationContextServiceShape.ts +0 -12
  142. package/src/_coreCorrelation/CorrelationPatch.ts +0 -3
  143. package/src/_coreCorrelation/README.md +0 -20
  144. package/src/_coreCorrelation/_correlationStorage.js +0 -4
  145. package/src/_coreCorrelation/correlationContextFiberRef.js +0 -5
  146. package/src/_coreCorrelation/correlationContextToLogAnnotations.js +0 -18
  147. package/src/_coreCorrelation/getCurrentCorrelationContext.js +0 -9
  148. package/src/_coreCorrelation/getCurrentCorrelationContextEffect.js +0 -11
  149. package/src/_coreCorrelation/index.js +0 -14
  150. package/src/_coreCorrelation/mergeCorrelationContext.js +0 -51
  151. package/src/_coreCorrelation/runWithCorrelationContext.js +0 -14
  152. package/src/_coreCorrelation/updateCurrentCorrelationContext.js +0 -17
  153. package/src/_coreCorrelation/withCorrelationContext.js +0 -38
  154. package/src/_coreCorrelation/withCurrentCorrelationContext.js +0 -11
  155. package/src/_coreMetrics.js +0 -14
  156. package/src/_coreMetricsShape.ts +0 -44
  157. package/src/_corePrometheus.js +0 -91
  158. package/src/_corePrometheusShape.ts +0 -11
  159. package/src/_coreTracing.js +0 -132
  160. package/src/_coreTracingShape.ts +0 -17
  161. package/src/_otelLogBuilders.js +0 -102
  162. package/src/_sessionFileResolvers.js +0 -164
  163. package/src/_smithersSpanAttributeAliases.js +0 -19
  164. package/src/_smithersTraceSpanStorage.js +0 -3
  165. package/src/_traceEventNormalizers.js +0 -499
  166. package/src/_traceRedaction.js +0 -162
  167. package/src/agentSessionEventToOtelLogRecord.js +0 -55
  168. package/src/agentTrace.ts +0 -144
  169. package/src/agentTraceCapabilities.js +0 -151
  170. package/src/annotateSmithersTrace.js +0 -11
  171. package/src/canonicalTraceEventToOtelLogRecord.js +0 -55
  172. package/src/correlation.js +0 -56
  173. package/src/createSmithersObservabilityLayer.js +0 -59
  174. package/src/createSmithersOtelLayer.js +0 -23
  175. package/src/createSmithersRuntimeLayer.js +0 -2
  176. package/src/detectAgentFamily.js +0 -26
  177. package/src/detectCaptureMode.js +0 -29
  178. package/src/emitOtelLogRecord.js +0 -19
  179. package/src/getCurrentSmithersTraceAnnotations.js +0 -14
  180. package/src/getCurrentSmithersTraceSpan.js +0 -7
  181. package/src/index.d.ts +0 -1392
  182. package/src/index.js +0 -137
  183. package/src/kindPhase.js +0 -17
  184. package/src/logging.js +0 -264
  185. package/src/makeSmithersSpanAttributes.js +0 -20
  186. package/src/metrics/README.md +0 -22
  187. package/src/metrics/SmithersMetricDefinition.ts +0 -17
  188. package/src/metrics/SmithersMetricType.ts +0 -1
  189. package/src/metrics/SmithersMetricUnit.ts +0 -1
  190. package/src/metrics/_asyncExternalWaitCounts.js +0 -4
  191. package/src/metrics/_buckets.js +0 -37
  192. package/src/metrics/_incrementGauge.js +0 -11
  193. package/src/metrics/_processStartMs.js +0 -1
  194. package/src/metrics/activeNodes.js +0 -2
  195. package/src/metrics/activeRuns.js +0 -2
  196. package/src/metrics/agentActionsTotal.js +0 -2
  197. package/src/metrics/agentDurationMs.js +0 -3
  198. package/src/metrics/agentErrorsTotal.js +0 -2
  199. package/src/metrics/agentEventsTotal.js +0 -2
  200. package/src/metrics/agentInvocationsTotal.js +0 -2
  201. package/src/metrics/agentRetriesTotal.js +0 -2
  202. package/src/metrics/agentSessionsTotal.js +0 -2
  203. package/src/metrics/agentTokensTotal.js +0 -2
  204. package/src/metrics/alertDeliveriesAttempted.js +0 -2
  205. package/src/metrics/alertDeliveriesSuppressed.js +0 -2
  206. package/src/metrics/alertsAcknowledgedTotal.js +0 -2
  207. package/src/metrics/alertsActive.js +0 -2
  208. package/src/metrics/alertsEscalatedTotal.js +0 -2
  209. package/src/metrics/alertsFiredTotal.js +0 -2
  210. package/src/metrics/alertsReopenedTotal.js +0 -2
  211. package/src/metrics/alertsResolvedTotal.js +0 -2
  212. package/src/metrics/alertsSilencedTotal.js +0 -2
  213. package/src/metrics/approvalPending.js +0 -2
  214. package/src/metrics/approvalWaitDuration.js +0 -5
  215. package/src/metrics/approvalsDenied.js +0 -2
  216. package/src/metrics/approvalsGranted.js +0 -2
  217. package/src/metrics/approvalsRequested.js +0 -2
  218. package/src/metrics/attemptDuration.js +0 -3
  219. package/src/metrics/attentionBacklog.js +0 -2
  220. package/src/metrics/cacheHits.js +0 -2
  221. package/src/metrics/cacheMisses.js +0 -2
  222. package/src/metrics/dbQueryDuration.js +0 -3
  223. package/src/metrics/dbRetries.js +0 -2
  224. package/src/metrics/dbTransactionDuration.js +0 -3
  225. package/src/metrics/dbTransactionRetries.js +0 -2
  226. package/src/metrics/dbTransactionRollbacks.js +0 -2
  227. package/src/metrics/devtoolsActiveSubscribers.js +0 -2
  228. package/src/metrics/devtoolsBackpressureDisconnectTotal.js +0 -2
  229. package/src/metrics/devtoolsDeltaBuildMs.js +0 -3
  230. package/src/metrics/devtoolsEventBytes.js +0 -3
  231. package/src/metrics/devtoolsEventTotal.js +0 -2
  232. package/src/metrics/devtoolsSnapshotBuildMs.js +0 -5
  233. package/src/metrics/devtoolsSubscribeTotal.js +0 -2
  234. package/src/metrics/errorsTotal.js +0 -2
  235. package/src/metrics/eventsEmittedTotal.js +0 -2
  236. package/src/metrics/externalWaitAsyncPending.js +0 -2
  237. package/src/metrics/gatewayApprovalDecisionsTotal.js +0 -2
  238. package/src/metrics/gatewayAuthEventsTotal.js +0 -2
  239. package/src/metrics/gatewayConnectionsActive.js +0 -2
  240. package/src/metrics/gatewayConnectionsClosedTotal.js +0 -2
  241. package/src/metrics/gatewayConnectionsTotal.js +0 -2
  242. package/src/metrics/gatewayCronTriggersTotal.js +0 -2
  243. package/src/metrics/gatewayErrorsTotal.js +0 -2
  244. package/src/metrics/gatewayHeartbeatTicksTotal.js +0 -2
  245. package/src/metrics/gatewayMessagesReceivedTotal.js +0 -2
  246. package/src/metrics/gatewayMessagesSentTotal.js +0 -2
  247. package/src/metrics/gatewayRpcCallsTotal.js +0 -2
  248. package/src/metrics/gatewayRpcDuration.js +0 -3
  249. package/src/metrics/gatewayRunEventBackpressureDisconnectTotal.js +0 -4
  250. package/src/metrics/gatewayRunsCompletedTotal.js +0 -2
  251. package/src/metrics/gatewayRunsStartedTotal.js +0 -2
  252. package/src/metrics/gatewaySignalsTotal.js +0 -2
  253. package/src/metrics/gatewayWebhooksReceivedTotal.js +0 -2
  254. package/src/metrics/gatewayWebhooksRejectedTotal.js +0 -2
  255. package/src/metrics/gatewayWebhooksVerifiedTotal.js +0 -2
  256. package/src/metrics/heartbeatDataSizeBytes.js +0 -5
  257. package/src/metrics/heartbeatIntervalMs.js +0 -3
  258. package/src/metrics/hotReloadDuration.js +0 -3
  259. package/src/metrics/hotReloadFailures.js +0 -2
  260. package/src/metrics/hotReloads.js +0 -2
  261. package/src/metrics/httpRequestDuration.js +0 -3
  262. package/src/metrics/httpRequests.js +0 -2
  263. package/src/metrics/index.d.ts +0 -1222
  264. package/src/metrics/index.js +0 -168
  265. package/src/metrics/memoryFactReads.js +0 -3
  266. package/src/metrics/memoryFactWrites.js +0 -3
  267. package/src/metrics/memoryMessageSaves.js +0 -3
  268. package/src/metrics/memoryRecallDuration.js +0 -11
  269. package/src/metrics/memoryRecallQueries.js +0 -3
  270. package/src/metrics/metricsServiceAdapter.js +0 -181
  271. package/src/metrics/nodeDuration.js +0 -3
  272. package/src/metrics/nodeRetriesTotal.js +0 -2
  273. package/src/metrics/nodesFailed.js +0 -2
  274. package/src/metrics/nodesFinished.js +0 -2
  275. package/src/metrics/nodesStarted.js +0 -2
  276. package/src/metrics/openApiToolCallErrorsTotal.js +0 -3
  277. package/src/metrics/openApiToolCallsTotal.js +0 -3
  278. package/src/metrics/openApiToolDuration.js +0 -9
  279. package/src/metrics/processHeapUsedBytes.js +0 -2
  280. package/src/metrics/processMemoryRssBytes.js +0 -2
  281. package/src/metrics/processUptimeSeconds.js +0 -2
  282. package/src/metrics/promptSizeBytes.js +0 -3
  283. package/src/metrics/replaysStarted.js +0 -3
  284. package/src/metrics/responseSizeBytes.js +0 -3
  285. package/src/metrics/rewindDurationMs.js +0 -3
  286. package/src/metrics/rewindFramesDeleted.js +0 -3
  287. package/src/metrics/rewindRollbackTotal.js +0 -2
  288. package/src/metrics/rewindSandboxesReverted.js +0 -3
  289. package/src/metrics/rewindTotal.js +0 -2
  290. package/src/metrics/runDuration.js +0 -3
  291. package/src/metrics/runForksCreated.js +0 -3
  292. package/src/metrics/runsAncestryDepth.js +0 -3
  293. package/src/metrics/runsCancelledTotal.js +0 -2
  294. package/src/metrics/runsCarriedStateBytes.js +0 -5
  295. package/src/metrics/runsContinuedTotal.js +0 -2
  296. package/src/metrics/runsFailedTotal.js +0 -2
  297. package/src/metrics/runsFinishedTotal.js +0 -2
  298. package/src/metrics/runsResumedTotal.js +0 -2
  299. package/src/metrics/runsTotal.js +0 -2
  300. package/src/metrics/sandboxActive.js +0 -2
  301. package/src/metrics/sandboxBundleSizeBytes.js +0 -5
  302. package/src/metrics/sandboxCompletedTotal.js +0 -2
  303. package/src/metrics/sandboxCreatedTotal.js +0 -2
  304. package/src/metrics/sandboxDurationMs.js +0 -3
  305. package/src/metrics/sandboxPatchCount.js +0 -3
  306. package/src/metrics/sandboxTransportDurationMs.js +0 -5
  307. package/src/metrics/schedulerConcurrencyUtilization.js +0 -2
  308. package/src/metrics/schedulerQueueDepth.js +0 -2
  309. package/src/metrics/schedulerWaitDuration.js +0 -5
  310. package/src/metrics/scorerDuration.js +0 -9
  311. package/src/metrics/scorerEventsFailed.js +0 -2
  312. package/src/metrics/scorerEventsFinished.js +0 -2
  313. package/src/metrics/scorerEventsStarted.js +0 -2
  314. package/src/metrics/scorersFailed.js +0 -3
  315. package/src/metrics/scorersFinished.js +0 -3
  316. package/src/metrics/scorersStarted.js +0 -3
  317. package/src/metrics/smithersMetricCatalog.js +0 -893
  318. package/src/metrics/smithersMetricCatalogByKey.js +0 -2
  319. package/src/metrics/smithersMetricCatalogByName.js +0 -2
  320. package/src/metrics/smithersMetricCatalogByPrometheusName.js +0 -4
  321. package/src/metrics/snapshotDuration.js +0 -9
  322. package/src/metrics/snapshotsCaptured.js +0 -3
  323. package/src/metrics/supervisorPollDuration.js +0 -5
  324. package/src/metrics/supervisorPollsTotal.js +0 -2
  325. package/src/metrics/supervisorResumeLag.js +0 -5
  326. package/src/metrics/supervisorResumedTotal.js +0 -2
  327. package/src/metrics/supervisorSkippedTotal.js +0 -2
  328. package/src/metrics/supervisorStaleDetected.js +0 -2
  329. package/src/metrics/taskHeartbeatTimeoutTotal.js +0 -2
  330. package/src/metrics/taskHeartbeatsTotal.js +0 -2
  331. package/src/metrics/timerDelayDuration.js +0 -3
  332. package/src/metrics/timersCancelled.js +0 -2
  333. package/src/metrics/timersCreated.js +0 -2
  334. package/src/metrics/timersFired.js +0 -2
  335. package/src/metrics/timersPending.js +0 -2
  336. package/src/metrics/toPrometheusMetricName.js +0 -8
  337. package/src/metrics/tokensCacheReadTotal.js +0 -2
  338. package/src/metrics/tokensCacheWriteTotal.js +0 -2
  339. package/src/metrics/tokensContextWindowBucketTotal.js +0 -2
  340. package/src/metrics/tokensContextWindowPerCall.js +0 -5
  341. package/src/metrics/tokensInputPerCall.js +0 -3
  342. package/src/metrics/tokensInputTotal.js +0 -2
  343. package/src/metrics/tokensOutputPerCall.js +0 -3
  344. package/src/metrics/tokensOutputTotal.js +0 -2
  345. package/src/metrics/tokensReasoningTotal.js +0 -2
  346. package/src/metrics/toolCallErrorsTotal.js +0 -2
  347. package/src/metrics/toolCallsTotal.js +0 -2
  348. package/src/metrics/toolDuration.js +0 -3
  349. package/src/metrics/toolOutputTruncatedTotal.js +0 -2
  350. package/src/metrics/trackEvent.js +0 -608
  351. package/src/metrics/updateAsyncExternalWaitPending.js +0 -18
  352. package/src/metrics/updateProcessMetrics.js +0 -20
  353. package/src/metrics/vcsDuration.js +0 -3
  354. package/src/normalizeStructuredEvent.js +0 -15
  355. package/src/prometheusContentType.js +0 -1
  356. package/src/renderPrometheusMetrics.js +0 -212
  357. package/src/resolveAgentTraceCapabilities.js +0 -59
  358. package/src/resolveSmithersObservabilityOptions.js +0 -109
  359. package/src/smithersMetrics.js +0 -2
  360. package/src/smithersSpanNames.js +0 -6
  361. package/src/unsupportedKindsForCapabilities.js +0 -32
  362. package/src/withSmithersSpan.js +0 -17
  363. package/tempo/tempo.yml +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/Logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAqB/C;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,CAC1B,KAAyB,EACzB,eAA8C,EAC1B,EAAE,CACtB,eAAe,KAAK,SAAS;IAC3B,CAAC,CAAC,KAAK;IACP,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAA;AAEpF,MAAM,mBAAmB,GAAG,CAAC,OAAiB,EAG5C,EAAE,CAAC,CAAC;IACJ,eAAe,EAAE,OAAO,EAAE,eAAe;IACzC,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAAI,KAAK;CACvD,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAsB,EAAE;IACtE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,mBAAmB,CACxB,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;QACrE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;KAC9C,CAAC,EACF,QAAQ,CAAC,eAAe,CACzB,CAAA;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAiB,EAAsB,EAAE;IAC3E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,mBAAmB,CACxB,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,EACrF,QAAQ,CAAC,eAAe,CACzB,CAAA;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAA0C,EAAsB,EAAE,CAC1F,mBAAmB,CACjB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAChB,OAAO,EAAE,eAAe,IAAI,MAAM,CACnC,CAAA;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAuC,EAAE,OAAiB,EAAsB,EAAE;IACtG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,mBAAmB,CACxB,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,EACzE,QAAQ,CAAC,eAAe,CACzB,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Effect metric registry for flows runtime signals.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as Metric from "effect/Metric";
7
+ /**
8
+ * Counts flow runs that reached a terminal state.
9
+ *
10
+ * @category metrics
11
+ * @since 0.1.0
12
+ */
13
+ export declare const runThroughput: Metric.Counter<number>;
14
+ /**
15
+ * The number of execution seats currently held.
16
+ *
17
+ * @category metrics
18
+ * @since 0.1.0
19
+ */
20
+ export declare const activeSeats: Metric.Gauge<number>;
21
+ /**
22
+ * Counts runs parked because a quota was exhausted.
23
+ *
24
+ * @category metrics
25
+ * @since 0.1.0
26
+ */
27
+ export declare const quotaParks: Metric.Counter<number>;
28
+ /**
29
+ * Counts agent answers refused by their declared output schema.
30
+ *
31
+ * @category metrics
32
+ * @since 1.0.0-rc.1
33
+ */
34
+ export declare const structuredOutputRejections: Metric.Counter<number>;
35
+ /**
36
+ * Counts agent steps that failed after spending every output correction.
37
+ *
38
+ * @category metrics
39
+ * @since 1.0.0-rc.1
40
+ */
41
+ export declare const structuredOutputExhausted: Metric.Counter<number>;
42
+ /**
43
+ * Counts operational log records lost before durable delivery.
44
+ *
45
+ * Advances once per record dropped by a saturated forwarding queue, once per
46
+ * journal delivery failure, and once per defect the forwarding worker recovers
47
+ * from, so telemetry loss is distinguishable from an idle logger.
48
+ *
49
+ * @category metrics
50
+ * @since 1.0.0-rc.0
51
+ */
52
+ export declare const droppedLogRecords: Metric.Counter<number>;
53
+ /**
54
+ * All metrics declared by this package.
55
+ *
56
+ * @category registry
57
+ * @since 0.1.0
58
+ */
59
+ export declare const registry: {
60
+ readonly runThroughput: Metric.Counter<number>;
61
+ readonly activeSeats: Metric.Gauge<number>;
62
+ readonly quotaParks: Metric.Counter<number>;
63
+ readonly structuredOutputRejections: Metric.Counter<number>;
64
+ readonly structuredOutputExhausted: Metric.Counter<number>;
65
+ readonly droppedLogRecords: Metric.Counter<number>;
66
+ };
67
+ //# sourceMappingURL=Metric.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../src/Metric.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC;;;;;GAKG;AACH,eAAO,MAAM,aAAa,wBAExB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,sBAEtB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,wBAErB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,wBAErC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,wBAEpC,CAAA;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,wBAE5B,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ;;;;;;;CAOX,CAAA"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Effect metric registry for flows runtime signals.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as Metric from "effect/Metric";
7
+ const prefix = "flows_";
8
+ /**
9
+ * Counts flow runs that reached a terminal state.
10
+ *
11
+ * @category metrics
12
+ * @since 0.1.0
13
+ */
14
+ export const runThroughput = Metric.counter(`${prefix}run_throughput`, {
15
+ description: "Completed flow runs"
16
+ });
17
+ /**
18
+ * The number of execution seats currently held.
19
+ *
20
+ * @category metrics
21
+ * @since 0.1.0
22
+ */
23
+ export const activeSeats = Metric.gauge(`${prefix}seat_active`, {
24
+ description: "Currently active execution seats"
25
+ });
26
+ /**
27
+ * Counts runs parked because a quota was exhausted.
28
+ *
29
+ * @category metrics
30
+ * @since 0.1.0
31
+ */
32
+ export const quotaParks = Metric.counter(`${prefix}quota_park`, {
33
+ description: "Runs parked by quota enforcement"
34
+ });
35
+ /**
36
+ * Counts agent answers refused by their declared output schema.
37
+ *
38
+ * @category metrics
39
+ * @since 1.0.0-rc.1
40
+ */
41
+ export const structuredOutputRejections = Metric.counter(`${prefix}agent_structured_output_rejections`, {
42
+ description: "Agent answers refused by their declared output schema"
43
+ });
44
+ /**
45
+ * Counts agent steps that failed after spending every output correction.
46
+ *
47
+ * @category metrics
48
+ * @since 1.0.0-rc.1
49
+ */
50
+ export const structuredOutputExhausted = Metric.counter(`${prefix}agent_structured_output_exhausted`, {
51
+ description: "Agent steps whose output corrections were exhausted"
52
+ });
53
+ /**
54
+ * Counts operational log records lost before durable delivery.
55
+ *
56
+ * Advances once per record dropped by a saturated forwarding queue, once per
57
+ * journal delivery failure, and once per defect the forwarding worker recovers
58
+ * from, so telemetry loss is distinguishable from an idle logger.
59
+ *
60
+ * @category metrics
61
+ * @since 1.0.0-rc.0
62
+ */
63
+ export const droppedLogRecords = Metric.counter(`${prefix}observability_log_dropped`, {
64
+ description: "Operational log records dropped before durable delivery"
65
+ });
66
+ /**
67
+ * All metrics declared by this package.
68
+ *
69
+ * @category registry
70
+ * @since 0.1.0
71
+ */
72
+ export const registry = {
73
+ runThroughput,
74
+ activeSeats,
75
+ quotaParks,
76
+ structuredOutputRejections,
77
+ structuredOutputExhausted,
78
+ droppedLogRecords
79
+ };
80
+ //# sourceMappingURL=Metric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../src/Metric.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,MAAM,GAAG,QAAQ,CAAA;AAEvB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,gBAAgB,EAAE;IACrE,WAAW,EAAE,qBAAqB;CACnC,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE;IAC9D,WAAW,EAAE,kCAAkC;CAChD,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,YAAY,EAAE;IAC9D,WAAW,EAAE,kCAAkC;CAChD,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,oCAAoC,EAAE;IACtG,WAAW,EAAE,uDAAuD;CACrE,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,mCAAmC,EAAE;IACpG,WAAW,EAAE,qDAAqD;CACnE,CAAC,CAAA;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,2BAA2B,EAAE;IACpF,WAAW,EAAE,yDAAyD;CACvE,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,aAAa;IACb,WAAW;IACX,UAAU;IACV,0BAA0B;IAC1B,yBAAyB;IACzB,iBAAiB;CACT,CAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Node-only OTLP/HTTP OpenTelemetry setup.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import type * as Duration from "effect/Duration";
7
+ import * as Layer from "effect/Layer";
8
+ import * as Endpoint from "./Endpoint.ts";
9
+ import * as Resource from "./Resource.ts";
10
+ import type { Configuration as ResourceConfiguration } from "./Resource.ts";
11
+ /**
12
+ * Node OTLP/HTTP layer options.
13
+ *
14
+ * @category models
15
+ * @since 0.1.0
16
+ */
17
+ export interface Options {
18
+ /**
19
+ * The collector base URL. It must be an absolute `http:` or `https:` URL
20
+ * without credentials and free of spaces and control characters; anything
21
+ * else fails layer acquisition with
22
+ * {@link Endpoint.InvalidExporterEndpoint}.
23
+ */
24
+ readonly endpoint: string;
25
+ readonly resource: ResourceConfiguration;
26
+ readonly shutdownTimeout?: Duration.Input | undefined;
27
+ readonly exportIntervalMillis?: number | undefined;
28
+ }
29
+ /**
30
+ * Builds a scoped Node OTLP/HTTP layer for all three telemetry signals.
31
+ * Exporter objects are created only when this layer is built.
32
+ * Resource metadata is explicit: ambient OTEL resource configuration cannot
33
+ * enlarge it after validation. The OpenTelemetry exporters still read the
34
+ * standard `OTEL_EXPORTER_OTLP_*` transport variables (headers, timeout,
35
+ * compression, TLS files) from the process environment and send them to the
36
+ * explicit endpoint, which always wins over `OTEL_EXPORTER_OTLP_ENDPOINT`.
37
+ *
38
+ * @category layers
39
+ * @since 0.1.0
40
+ */
41
+ export declare const layerOtel: (options: Options) => Layer.Layer<never, Resource.InvalidResourceConfiguration | Endpoint.InvalidExporterEndpoint>;
42
+ //# sourceMappingURL=NodeOtel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeOtel.d.ts","sourceRoot":"","sources":["../../src/NodeOtel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE3E;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAA;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IACrD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnD;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GACpB,SAAS,OAAO,KACf,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,4BAA4B,GAAG,QAAQ,CAAC,uBAAuB,CAmC3F,CAAA"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Node-only OTLP/HTTP OpenTelemetry setup.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as NodeSdk from "@effect/opentelemetry/NodeSdk";
7
+ import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
8
+ import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
9
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
10
+ import { BatchLogRecordProcessor } from "@opentelemetry/sdk-logs";
11
+ import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
12
+ import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
13
+ import * as ConfigProvider from "effect/ConfigProvider";
14
+ import * as Effect from "effect/Effect";
15
+ import * as Layer from "effect/Layer";
16
+ import * as Endpoint from "./Endpoint.js";
17
+ import * as Resource from "./Resource.js";
18
+ /**
19
+ * Builds a scoped Node OTLP/HTTP layer for all three telemetry signals.
20
+ * Exporter objects are created only when this layer is built.
21
+ * Resource metadata is explicit: ambient OTEL resource configuration cannot
22
+ * enlarge it after validation. The OpenTelemetry exporters still read the
23
+ * standard `OTEL_EXPORTER_OTLP_*` transport variables (headers, timeout,
24
+ * compression, TLS files) from the process environment and send them to the
25
+ * explicit endpoint, which always wins over `OTEL_EXPORTER_OTLP_ENDPOINT`.
26
+ *
27
+ * @category layers
28
+ * @since 0.1.0
29
+ */
30
+ export const layerOtel = (options) => Layer.unwrap(Effect.map(Effect.all([Resource.decode(options.resource), Endpoint.decode(options.endpoint, "endpoint")]), ([decoded, endpoint]) => NodeSdk.layer(() => {
31
+ const resource = Resource.toOpenTelemetryConfiguration(decoded);
32
+ const spanProcessor = new BatchSpanProcessor(new OTLPTraceExporter({ url: Endpoint.signalUrl(endpoint, "traces") }));
33
+ const logRecordProcessor = new BatchLogRecordProcessor({
34
+ exporter: new OTLPLogExporter({ url: Endpoint.signalUrl(endpoint, "logs") })
35
+ });
36
+ const metricReader = options.exportIntervalMillis === undefined
37
+ ? new PeriodicExportingMetricReader({
38
+ exporter: new OTLPMetricExporter({ url: Endpoint.signalUrl(endpoint, "metrics") })
39
+ })
40
+ : new PeriodicExportingMetricReader({
41
+ exporter: new OTLPMetricExporter({ url: Endpoint.signalUrl(endpoint, "metrics") }),
42
+ exportIntervalMillis: options.exportIntervalMillis
43
+ });
44
+ return {
45
+ resource,
46
+ spanProcessor,
47
+ logRecordProcessor,
48
+ metricReader,
49
+ shutdownTimeout: options.shutdownTimeout
50
+ };
51
+ }).pipe(
52
+ // NodeSdk merges Resource.layerFromEnv after our admission check.
53
+ // Isolate that lookup so only the validated explicit resource and
54
+ // the SDK metadata already included in its budget reach exporters.
55
+ Layer.provide(ConfigProvider.layer(ConfigProvider.fromUnknown({}))))));
56
+ //# sourceMappingURL=NodeOtel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeOtel.js","sourceRoot":"","sources":["../../src/NodeOtel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,+BAA+B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AAEvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAsBzC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAAgB,EAC8E,EAAE,CAChG,KAAK,CAAC,MAAM,CACV,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAC9F,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;IACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAA;IAC/D,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAC1C,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CACvE,CAAA;IACD,MAAM,kBAAkB,GAAG,IAAI,uBAAuB,CAAC;QACrD,QAAQ,EAAE,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;KAC7E,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,oBAAoB,KAAK,SAAS;QAC7D,CAAC,CAAC,IAAI,6BAA6B,CAAC;YAClC,QAAQ,EAAE,IAAI,kBAAkB,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;SACnF,CAAC;QACF,CAAC,CAAC,IAAI,6BAA6B,CAAC;YAClC,QAAQ,EAAE,IAAI,kBAAkB,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YAClF,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACnD,CAAC,CAAA;IACJ,OAAO;QACL,QAAQ;QACR,aAAa;QACb,kBAAkB;QAClB,YAAY;QACZ,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAA;AACH,CAAC,CAAC,CAAC,IAAI;AACL,kEAAkE;AAClE,kEAAkE;AAClE,mEAAmE;AACnE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CACpE,CACJ,CACF,CAAA"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Provider-neutral composition for injected OpenTelemetry providers.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as OtelMetrics from "@effect/opentelemetry/OtelMetrics";
7
+ import type * as Api from "@opentelemetry/api";
8
+ import type { LoggerProvider } from "@opentelemetry/sdk-logs";
9
+ import type { MetricReader } from "@opentelemetry/sdk-metrics";
10
+ import * as Layer from "effect/Layer";
11
+ import { type Configuration as ResourceConfiguration, type InvalidResourceConfiguration, Resource } from "./Resource.ts";
12
+ /**
13
+ * Injected providers used by the provider-neutral OTEL layer.
14
+ *
15
+ * @category models
16
+ * @since 0.1.0
17
+ */
18
+ export interface Options {
19
+ /** Validated resource for metrics and provider factories. */
20
+ readonly resource: ResourceConfiguration;
21
+ /**
22
+ * Borrowed: the layer bridges onto this provider and never flushes or shuts
23
+ * it down, including a provider a factory returns. Existing providers retain
24
+ * their resource. Factories must pass the supplied resource to the SDK.
25
+ */
26
+ readonly tracerProvider?: Api.TracerProvider | ((resource: typeof Resource.Service) => Api.TracerProvider) | undefined;
27
+ /** Borrowed on the same terms as `tracerProvider`. */
28
+ readonly loggerProvider?: LoggerProvider | ((resource: typeof Resource.Service) => LoggerProvider) | undefined;
29
+ /**
30
+ * Owned: the factory runs once during layer acquisition, after resource
31
+ * validation, and every reader it returns is shut down when the scope
32
+ * closes. Build the readers inside the factory rather than returning one a
33
+ * longer-lived composition still exports through, which that shutdown would
34
+ * disable. An empty array registers no reader at all.
35
+ */
36
+ readonly metricReader?: (() => MetricReader | ReadonlyArray<MetricReader>) | undefined;
37
+ readonly loggerMergeWithExisting?: boolean | undefined;
38
+ readonly metricTemporality?: OtelMetrics.TemporalityPreference | undefined;
39
+ }
40
+ /**
41
+ * Composes Effect tracer, logger, and metric bridges from already-created
42
+ * OpenTelemetry providers or provider factories, and from metric readers this
43
+ * layer acquires. Factories run during layer acquisition after resource
44
+ * validation, and the provider factories receive the metric resource.
45
+ * Already-created providers keep the resource captured at construction; the
46
+ * resource option only sets the metric resource for them. Spans and log
47
+ * records carry the instrumentation scope `effect` with the Effect version.
48
+ * Ownership splits: callers own provider flushing and shutdown, including
49
+ * factory-built providers, while the layer scope shuts down every reader the
50
+ * `metricReader` factory returned. No exporter is allocated by this module.
51
+ *
52
+ * @category layers
53
+ * @since 0.1.0
54
+ */
55
+ export declare const layerOtel: (options: Options) => Layer.Layer<never, InvalidResourceConfiguration>;
56
+ /**
57
+ * A no-op OTEL layer for callers that want an explicit optional slot.
58
+ *
59
+ * @category layers
60
+ * @since 0.1.0
61
+ */
62
+ export declare const layerNoop: Layer.Layer<never>;
63
+ //# sourceMappingURL=Otel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Otel.d.ts","sourceRoot":"","sources":["../../src/Otel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAEhE,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EACL,KAAK,aAAa,IAAI,qBAAqB,EAC3C,KAAK,4BAA4B,EAEjC,QAAQ,EACT,MAAM,eAAe,CAAA;AAEtB;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAA;IACxC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EACpB,GAAG,CAAC,cAAc,GAClB,CAAC,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC,OAAO,KAAK,GAAG,CAAC,cAAc,CAAC,GAC3D,SAAS,CAAA;IACb,sDAAsD;IACtD,QAAQ,CAAC,cAAc,CAAC,EACpB,cAAc,GACd,CAAC,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc,CAAC,GACvD,SAAS,CAAA;IACb;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,CAAA;IACtF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,qBAAqB,GAAG,SAAS,CAAA;CAC3E;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,4BAA4B,CAsC3F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAe,CAAA"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Provider-neutral composition for injected OpenTelemetry providers.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as OtelLogger from "@effect/opentelemetry/OtelLogger";
7
+ import * as OtelMetrics from "@effect/opentelemetry/OtelMetrics";
8
+ import * as OtelTracer from "@effect/opentelemetry/OtelTracer";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Layer from "effect/Layer";
11
+ import { layer as resourceLayer, Resource } from "./Resource.js";
12
+ /**
13
+ * Composes Effect tracer, logger, and metric bridges from already-created
14
+ * OpenTelemetry providers or provider factories, and from metric readers this
15
+ * layer acquires. Factories run during layer acquisition after resource
16
+ * validation, and the provider factories receive the metric resource.
17
+ * Already-created providers keep the resource captured at construction; the
18
+ * resource option only sets the metric resource for them. Spans and log
19
+ * records carry the instrumentation scope `effect` with the Effect version.
20
+ * Ownership splits: callers own provider flushing and shutdown, including
21
+ * factory-built providers, while the layer scope shuts down every reader the
22
+ * `metricReader` factory returned. No exporter is allocated by this module.
23
+ *
24
+ * @category layers
25
+ * @since 0.1.0
26
+ */
27
+ export const layerOtel = (options) => {
28
+ const resource = resourceLayer(options.resource);
29
+ const tracerProvider = options.tracerProvider;
30
+ const loggerProvider = options.loggerProvider;
31
+ const tracer = tracerProvider === undefined
32
+ ? Layer.empty
33
+ : Layer.provide(OtelTracer.layer, Layer.effect(OtelTracer.OtelTracerProvider, Effect.map(Resource, (resource) => typeof tracerProvider === "function" ? tracerProvider(resource) : tracerProvider)));
34
+ const logger = loggerProvider === undefined
35
+ ? Layer.empty
36
+ : Layer.provide(OtelLogger.layer({ mergeWithExisting: options.loggerMergeWithExisting }), Layer.effect(OtelLogger.OtelLoggerProvider, Effect.map(Resource, (resource) => typeof loggerProvider === "function" ? loggerProvider(resource) : loggerProvider)));
37
+ const acquireMetricReader = options.metricReader;
38
+ const metrics = acquireMetricReader === undefined
39
+ ? Layer.empty
40
+ : OtelMetrics.layer(() => acquireMetricReader(), {
41
+ temporality: options.metricTemporality
42
+ });
43
+ return Layer.mergeAll(tracer, logger, metrics).pipe(Layer.provideMerge(resource));
44
+ };
45
+ /**
46
+ * A no-op OTEL layer for callers that want an explicit optional slot.
47
+ *
48
+ * @category layers
49
+ * @since 0.1.0
50
+ */
51
+ export const layerNoop = Layer.empty;
52
+ //# sourceMappingURL=Otel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Otel.js","sourceRoot":"","sources":["../../src/Otel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,UAAU,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,kCAAkC,CAAA;AAI9D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAGL,KAAK,IAAI,aAAa,EACtB,QAAQ,EACT,MAAM,eAAe,CAAA;AAqCtB;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAoD,EAAE;IAC9F,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;IAC7C,MAAM,MAAM,GAAG,cAAc,KAAK,SAAS;QACzC,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,KAAK,CAAC,OAAO,CACb,UAAU,CAAC,KAAK,EAChB,KAAK,CAAC,MAAM,CACV,UAAU,CAAC,kBAAkB,EAC7B,MAAM,CAAC,GAAG,CACR,QAAQ,EACR,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAC/F,CACF,CACF,CAAA;IACH,MAAM,MAAM,GAAG,cAAc,KAAK,SAAS;QACzC,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,KAAK,CAAC,OAAO,CACb,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,uBAAuB,EAAE,CAAC,EACxE,KAAK,CAAC,MAAM,CACV,UAAU,CAAC,kBAAkB,EAC7B,MAAM,CAAC,GAAG,CACR,QAAQ,EACR,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAC/F,CACF,CACF,CAAA;IACH,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAA;IAChD,MAAM,OAAO,GAAG,mBAAmB,KAAK,SAAS;QAC/C,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,WAAW,CAAC,KAAK,CACjB,GAAG,EAAE,CAAC,mBAAmB,EAA+E,EACxG;YACE,WAAW,EAAE,OAAO,CAAC,iBAAiB;SACvC,CACF,CAAA;IACH,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;AACnF,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAuB,KAAK,CAAC,KAAK,CAAA"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Default OTLP export wiring for flows telemetry.
3
+ *
4
+ * The store packages already open spans through Effect's tracer and update
5
+ * `Metric` counters on their hot paths; what they deliberately do not do is
6
+ * ship an exporter. This module is that exporter: one layer that installs
7
+ * Effect's own OTLP logger, metrics exporter, and tracer
8
+ * (`effect/observability/Otlp`) against a collector endpoint, with
9
+ * the flows service identity filled in. Nothing beyond `effect` is involved;
10
+ * no OpenTelemetry SDK dependency.
11
+ *
12
+ * Browser support is met by construction rather than by a no-op variant:
13
+ * export happens over Effect's `HttpClient`, and {@link layerFetch} binds the
14
+ * `fetch` implementation the host already has, so no entry point here ever
15
+ * resolves a `node:` built-in. See the
16
+ * {@link https://smithers.sh/docs/reference/api/observability | observability API contract}.
17
+ *
18
+ * @since 0.1.0
19
+ */
20
+ import type * as Duration from "effect/Duration";
21
+ import * as Headers from "effect/http/Headers";
22
+ import * as HttpClient from "effect/http/HttpClient";
23
+ import * as Layer from "effect/Layer";
24
+ import * as Endpoint from "./Endpoint.ts";
25
+ import * as Resource from "./Resource.ts";
26
+ /**
27
+ * The `service.name` resource attribute installed when the caller supplies
28
+ * none: the flows distribution itself. Override it per application with
29
+ * {@link Options.serviceName}.
30
+ *
31
+ * @category resource
32
+ * @since 0.1.0
33
+ */
34
+ export declare const defaultServiceName = "flows";
35
+ /**
36
+ * The `service.version` resource attribute installed when the caller supplies
37
+ * none. Mirrors the release version in this package's `package.json`.
38
+ *
39
+ * A published package cannot read its own manifest on every runtime it
40
+ * supports, so the version lives here as a literal.
41
+ * `scripts/set-release-version.mjs` rewrites this declaration with the
42
+ * manifests, and its `--check` mode reports drift, so a release bump cannot
43
+ * leave it behind.
44
+ *
45
+ * @category resource
46
+ * @since 0.1.0
47
+ */
48
+ export declare const defaultServiceVersion = "1.0.0-rc.12";
49
+ /**
50
+ * Maximum encoded export request size, in bytes.
51
+ * @category transport
52
+ * @since 1.0.0-rc.0
53
+ */
54
+ export declare const maxRequestBytes: number;
55
+ /**
56
+ * Reserved bytes for request wrappers and the escaped instrumentation scope.
57
+ * @category transport
58
+ * @since 1.0.0-rc.0
59
+ */
60
+ export declare const maximumEnvelopeBytes: number;
61
+ /**
62
+ * Bytes of every export request kept free for the signal batch itself.
63
+ *
64
+ * The transport discards a request over 1 MiB, and the resource rides in every
65
+ * request, so the largest resource `Resource.decode` admits
66
+ * (`Resource.maximumResourceBytes`, 128 KiB) and the envelope, which in a
67
+ * metrics request repeats the service name (under 8 KiB), come off the top.
68
+ * The 888 KiB left gives each
69
+ * record of a full 1,000-record logger or tracer batch about 900 bytes, three
70
+ * to four times a bare log record or span, and gives the metrics snapshot room
71
+ * for several thousand series. Every resource the decoder accepts therefore
72
+ * leaves an ordinary batch of any signal exportable; what this reserve does
73
+ * not bound is a single application record or a registry large enough to
74
+ * exceed it on its own.
75
+ *
76
+ * @category transport
77
+ * @since 1.0.0-rc.0
78
+ */
79
+ export declare const reservedBatchBytes: number;
80
+ /**
81
+ * Configuration for the default OTLP wiring.
82
+ *
83
+ * @category models
84
+ * @since 0.1.0
85
+ */
86
+ export interface Options {
87
+ /**
88
+ * The collector base URL, for example `http://localhost:4318`. Signals are
89
+ * posted below it at `/v1/logs`, `/v1/metrics`, and `/v1/traces`. It must be
90
+ * an absolute `http://` or `https://` URL without credentials, a query,
91
+ * fragment, backslashes, spaces, or controls. A base path is allowed. Invalid
92
+ * values fail acquisition with {@link Endpoint.InvalidExporterEndpoint}.
93
+ * Use {@link Options.headers} for authentication.
94
+ */
95
+ readonly baseUrl: string;
96
+ /** Overrides {@link defaultServiceName} as the `service.name` attribute. */
97
+ readonly serviceName?: string | undefined;
98
+ /** Overrides {@link defaultServiceVersion} as the `service.version` attribute. */
99
+ readonly serviceVersion?: string | undefined;
100
+ /**
101
+ * Additional resource attributes attached to every exported signal, decoded
102
+ * by `Resource.Attributes`. The whole resource must encode to at most
103
+ * `Resource.maximumResourceBytes`; a larger one fails acquisition with
104
+ * {@link Resource.InvalidResourceConfiguration} rather than making every
105
+ * request oversized.
106
+ */
107
+ readonly attributes?: Record<string, unknown> | undefined;
108
+ /**
109
+ * Headers sent with every export request, for example vendor auth. A header
110
+ * whose name names a credential (`authorization`, `x-api-key`, anything
111
+ * `Redaction.isSensitiveKey` recognizes, plus `x-honeycomb-team`) requires
112
+ * an `https://` baseUrl unless the host is loopback; otherwise acquisition
113
+ * fails with
114
+ * {@link Endpoint.InvalidExporterEndpoint}.
115
+ */
116
+ readonly headers?: Headers.Input | undefined;
117
+ /** Export cadence for all three signals; each signal's Effect default applies when omitted. */
118
+ readonly exportInterval?: Duration.Input | undefined;
119
+ /** Upper bound on the shutdown flush when the layer's scope closes. */
120
+ readonly shutdownTimeout?: Duration.Input | undefined;
121
+ }
122
+ /**
123
+ * Creates the OTLP logs, metrics, and traces layer with flows resource
124
+ * defaults, JSON-serialized. Exports share a four-request limit with no waiting
125
+ * queue. Requests larger than 1 MiB or stalled for ten seconds are discarded;
126
+ * `flows_observability_otlp_dropped` counts discarded batches, and at most
127
+ * once a minute a `Warn` record with code `otlp_export_discarded` names the
128
+ * reason, the request size, and the running total through the loggers that
129
+ * were installed when the layer was acquired, never through this exporter.
130
+ * A collector's response body is never read: the exporter acts on the status
131
+ * and the `retry-after` header, and the exchange ends when they arrive.
132
+ *
133
+ * **Details**
134
+ *
135
+ * The layer still requires an `HttpClient`, which is how it stays
136
+ * platform-neutral: a Node host may hand it `@effect/platform-node`'s Undici
137
+ * client (re-exported by `@smthrs/platform-node`), a browser or test
138
+ * hands it something else. Use {@link layerFetch} when the host's global
139
+ * `fetch` is good enough. On Node 26 and every browser it is.
140
+ * Fetch redirects are refused. Supply `FetchHttpClient.RequestInit` around
141
+ * the whole exporting effect to retain other fetch options; options scoped
142
+ * only to the supplied client's layer are replaced by the redirect policy.
143
+ * Other HTTP transports must independently refuse automatic redirects.
144
+ *
145
+ * @category layers
146
+ * @since 0.1.0
147
+ */
148
+ export declare const layer: (options: Options) => Layer.Layer<never, Resource.InvalidResourceConfiguration | Endpoint.InvalidExporterEndpoint, HttpClient.HttpClient>;
149
+ /**
150
+ * Provides {@link layer} over the host's global `fetch`, the default wiring
151
+ * for a Node host, and browser-safe by construction because it never touches
152
+ * a `node:` built-in.
153
+ *
154
+ * **Example**
155
+ *
156
+ * ```ts
157
+ * import * as Otlp from "@smthrs/observability/Otlp"
158
+ *
159
+ * const Telemetry = Otlp.layerFetch({ baseUrl: "http://localhost:4318" })
160
+ * ```
161
+ *
162
+ * @category layers
163
+ * @since 0.1.0
164
+ */
165
+ export declare const layerFetch: (options: Options) => Layer.Layer<never, Resource.InvalidResourceConfiguration | Endpoint.InvalidExporterEndpoint>;
166
+ /**
167
+ * Why an OTLP layer refused to start.
168
+ *
169
+ * @category errors
170
+ * @since 1.0.0
171
+ */
172
+ export type LayerError = Resource.InvalidResourceConfiguration | Endpoint.InvalidExporterEndpoint;
173
+ /**
174
+ * Parses `OTEL_EXPORTER_OTLP_HEADERS`: comma-separated `key=value` pairs whose
175
+ * values are percent-decoded, as the OpenTelemetry exporter specification
176
+ * defines. A pair without `=` or with an empty key is skipped.
177
+ *
178
+ * @category environment
179
+ * @since 1.0.0
180
+ */
181
+ export declare const parseHeaders: (value: string | undefined) => Record<string, string>;
182
+ /**
183
+ * {@link layerFetch} when the environment names a collector, otherwise
184
+ * {@link layerNoop}.
185
+ *
186
+ * `OTEL_EXPORTER_OTLP_ENDPOINT` is the collector base URL and
187
+ * `OTEL_EXPORTER_OTLP_HEADERS` the headers sent with every export. An unset or
188
+ * empty endpoint installs no exporter at all.
189
+ *
190
+ * @category layers
191
+ * @since 1.0.0
192
+ */
193
+ export declare const layerEnvironment: (environment: Readonly<Record<string, string | undefined>>, options?: Omit<Options, "baseUrl" | "headers">) => Layer.Layer<never, LayerError>;
194
+ /**
195
+ * Exports nothing. The explicit stand-in for hosts with no collector, such as
196
+ * a development shell, a test, or a browser deployment that has not opted in, so
197
+ * wiring code can switch layers rather than branch.
198
+ *
199
+ * @category layers
200
+ * @since 0.1.0
201
+ */
202
+ export declare const layerNoop: Layer.Layer<never>;
203
+ //# sourceMappingURL=Otlp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Otlp.d.ts","sourceRoot":"","sources":["../../src/Otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAIhD,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAE9C,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAGpD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AASrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,gBAAgB,CAAA;AAMlD;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAc,CAAA;AAQ1C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAW,CAAA;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,QAAyE,CAAA;AA2MxG;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,kFAAkF;IAClF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IACzD;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAA;IAC5C,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IACpD,uEAAuE;IACvE,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CACtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,KAAK,GAChB,SAAS,OAAO,KACf,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,QAAQ,CAAC,4BAA4B,GAAG,QAAQ,CAAC,uBAAuB,EACxE,UAAU,CAAC,UAAU,CAyCpB,CAAA;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,GACrB,SAAS,OAAO,KACf,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,4BAA4B,GAAG,QAAQ,CAAC,uBAAuB,CACnC,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,4BAA4B,GAAG,QAAQ,CAAC,uBAAuB,CAAA;AAEjG;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAc7E,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAC3B,aAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,UAAS,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAM,KACjD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAI/B,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAe,CAAA"}