@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,384 @@
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 * as Redaction from "@smthrs/journal/Redaction";
21
+ import * as Cause from "effect/Cause";
22
+ import { Clock } from "effect/Clock";
23
+ import * as ConfigProvider from "effect/ConfigProvider";
24
+ import * as Effect from "effect/Effect";
25
+ import * as Exit from "effect/Exit";
26
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
27
+ import * as Headers from "effect/http/Headers";
28
+ import * as HttpClient from "effect/http/HttpClient";
29
+ import * as HttpClientResponse from "effect/http/HttpClientResponse";
30
+ import * as Layer from "effect/Layer";
31
+ import * as Logger from "effect/Logger";
32
+ import * as Metric from "effect/Metric";
33
+ import * as Otlp from "effect/observability/Otlp";
34
+ import * as Option from "effect/Option";
35
+ import * as References from "effect/References";
36
+ import * as Schema from "effect/Schema";
37
+ import * as Semaphore from "effect/Semaphore";
38
+ import * as Tracer from "effect/Tracer";
39
+ import * as Endpoint from "./Endpoint.js";
40
+ import * as Resource from "./Resource.js";
41
+ /**
42
+ * The `service.name` resource attribute installed when the caller supplies
43
+ * none: the flows distribution itself. Override it per application with
44
+ * {@link Options.serviceName}.
45
+ *
46
+ * @category resource
47
+ * @since 0.1.0
48
+ */
49
+ export const defaultServiceName = "flows";
50
+ /**
51
+ * The `service.version` resource attribute installed when the caller supplies
52
+ * none. Mirrors the release version in this package's `package.json`.
53
+ *
54
+ * A published package cannot read its own manifest on every runtime it
55
+ * supports, so the version lives here as a literal.
56
+ * `scripts/set-release-version.mjs` rewrites this declaration with the
57
+ * manifests, and its `--check` mode reports drift, so a release bump cannot
58
+ * leave it behind.
59
+ *
60
+ * @category resource
61
+ * @since 0.1.0
62
+ */
63
+ export const defaultServiceVersion = "1.0.0-rc.12";
64
+ // The upstream logger and tracer each buffer at most one 1,000-record batch.
65
+ // Do not queue at the transport: upstream forks every full batch independently.
66
+ const maxBatchSize = 1000;
67
+ const maxInFlight = 4;
68
+ /**
69
+ * Maximum encoded export request size, in bytes.
70
+ * @category transport
71
+ * @since 1.0.0-rc.0
72
+ */
73
+ export const maxRequestBytes = 1024 * 1024;
74
+ const requestTimeout = "10 seconds";
75
+ const diagnosticIntervalMillis = 60_000;
76
+ // The envelope around the resource in a metrics request repeats `service.name`
77
+ // as the instrumentation scope name: at most 1,024 code units, at most six
78
+ // bytes each once JSON-escaped, so under 8 KiB together with the envelope's own
79
+ // keys. Log and trace requests name their scope `effect` with the Effect
80
+ // version instead, which is smaller.
81
+ /**
82
+ * Reserved bytes for request wrappers and the escaped instrumentation scope.
83
+ * @category transport
84
+ * @since 1.0.0-rc.0
85
+ */
86
+ export const maximumEnvelopeBytes = 8 * 1024;
87
+ /**
88
+ * Bytes of every export request kept free for the signal batch itself.
89
+ *
90
+ * The transport discards a request over 1 MiB, and the resource rides in every
91
+ * request, so the largest resource `Resource.decode` admits
92
+ * (`Resource.maximumResourceBytes`, 128 KiB) and the envelope, which in a
93
+ * metrics request repeats the service name (under 8 KiB), come off the top.
94
+ * The 888 KiB left gives each
95
+ * record of a full 1,000-record logger or tracer batch about 900 bytes, three
96
+ * to four times a bare log record or span, and gives the metrics snapshot room
97
+ * for several thousand series. Every resource the decoder accepts therefore
98
+ * leaves an ordinary batch of any signal exportable; what this reserve does
99
+ * not bound is a single application record or a registry large enough to
100
+ * exceed it on its own.
101
+ *
102
+ * @category transport
103
+ * @since 1.0.0-rc.0
104
+ */
105
+ export const reservedBatchBytes = maxRequestBytes - Resource.maximumResourceBytes - maximumEnvelopeBytes;
106
+ /**
107
+ * A collector's answer reduced to what the exporter acts on: its status and
108
+ * its `retry-after` delay, with no body.
109
+ *
110
+ * `Response` refuses a status outside 200 to 599 and a malformed header value.
111
+ * Neither is a collector's answer, so `Response.error()` reports it as status
112
+ * 0, which the exporter fails without retrying. A browser already reports a
113
+ * refused redirect that way.
114
+ */
115
+ const withoutBody = (response) => {
116
+ const retryAfter = response.headers["retry-after"];
117
+ let answer;
118
+ try {
119
+ answer = new Response(null, {
120
+ status: response.status,
121
+ headers: retryAfter === undefined ? {} : { "retry-after": retryAfter }
122
+ });
123
+ }
124
+ catch {
125
+ answer = Response.error();
126
+ }
127
+ return HttpClientResponse.fromWeb(response.request, answer);
128
+ };
129
+ const boundedClient = Layer.effect(HttpClient.HttpClient, Effect.gen(function* () {
130
+ // The exporter reads every response body to its end, after the deadline
131
+ // and the in-flight limit below have let the request go. A collector that
132
+ // never ended its answer would stall that signal and grow the buffered
133
+ // body without bound. So the exchange ends here: the exporter receives the
134
+ // status and retry delay, and closing the scope aborts the transport with
135
+ // the body unread.
136
+ const client = HttpClient.transformResponse(HttpClient.withScope(yield* HttpClient.HttpClient), (exchange) => exchange.pipe(Effect.map(withoutBody), Effect.scoped));
137
+ const clock = yield* Clock;
138
+ // The loggers installed when this transport is acquired. The OTLP logger
139
+ // the same acquisition installs does not exist yet, so a diagnostic pinned
140
+ // to this set cannot enter the exporter it describes, whichever fiber runs
141
+ // the export: the interval and shutdown fibers inherit this set anyway,
142
+ // but a flush requested from application code runs with the application's
143
+ // loggers, which by then include this exporter.
144
+ const ambientLoggers = yield* Effect.withFiber((fiber) => Effect.succeed(fiber.getRef(Logger.CurrentLoggers)));
145
+ const permits = Semaphore.makeUnsafe(maxInFlight);
146
+ // The counter lives with the transport it describes.
147
+ const droppedExports = Metric.counter("flows_observability_otlp_dropped");
148
+ let nextDiagnosticAt = -Infinity;
149
+ // A local discard is terminal, so the upstream retry loop must not retain
150
+ // or retry its payload, and the counter records batches, not records. The
151
+ // warning is the diagnostic the counter cannot be: the counter is exported
152
+ // through this same transport and shares every outage with it. One
153
+ // warning per minute keeps a sustained outage from flooding the ambient
154
+ // loggers; the running total in its annotations carries the volume.
155
+ // Replace ambient annotations and log spans to bound the diagnostic itself.
156
+ const discard = (reason, request, bytes) => Metric.update(droppedExports, 1).pipe(Effect.andThen(Effect.suspend(() => {
157
+ const now = clock.currentTimeMillisUnsafe();
158
+ if (now < nextDiagnosticAt)
159
+ return Effect.void;
160
+ nextDiagnosticAt = now + diagnosticIntervalMillis;
161
+ return Metric.value(droppedExports).pipe(Effect.flatMap((dropped) => Effect.logWarning("An OTLP export batch was discarded").pipe(Effect.provideService(References.CurrentLogSpans, []), Effect.provideService(References.CurrentLogAnnotations, {
162
+ code: "otlp_export_discarded",
163
+ reason,
164
+ bytes,
165
+ limit: maxRequestBytes,
166
+ dropped: dropped.count
167
+ }))), Effect.provideService(Logger.CurrentLoggers, ambientLoggers));
168
+ })), Effect.as(HttpClientResponse.fromWeb(request, new Response(null, { status: 204 }))));
169
+ return HttpClient.transform(client, (requestEffect, request) => Effect.suspend(() => {
170
+ // layerJson always supplies a Uint8Array body with a byte length.
171
+ const bytes = request.body.contentLength;
172
+ if (bytes > maxRequestBytes)
173
+ return discard("oversized", request, bytes);
174
+ // Fetch must expose redirects before any credential or signal body
175
+ // leaves the configured endpoint, even when the caller enables follow.
176
+ const confinedRequest = Effect.flatMap(Effect.serviceOption(FetchHttpClient.RequestInit), (init) => requestEffect.pipe(Effect.provideService(FetchHttpClient.RequestInit, {
177
+ ...Option.getOrUndefined(init),
178
+ redirect: "manual"
179
+ })));
180
+ return confinedRequest.pipe(Effect.timeoutOrElse({
181
+ duration: requestTimeout,
182
+ orElse: () => discard("stalled", request, bytes)
183
+ }), permits.withPermitsIfAvailable(1), Effect.flatMap(Option.match({
184
+ onNone: () => discard("saturated", request, bytes),
185
+ onSome: Effect.succeed
186
+ })));
187
+ }));
188
+ }));
189
+ const loopbackIpv4 = /^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
190
+ /** Whether a decoded endpoint's host never leaves this machine. */
191
+ const isLoopback = (endpoint) => {
192
+ const hostname = new URL(endpoint).hostname;
193
+ return hostname === "localhost" || hostname === "[::1]" || loopbackIpv4.test(hostname);
194
+ };
195
+ /**
196
+ * Refuses a credential header bound for a plaintext collector off this
197
+ * machine. Anyone on the network path could read the token from every export
198
+ * request, and the exporter would never report it. Loopback `http://` stays
199
+ * allowed for a local collector or sidecar; non-credential headers such as a
200
+ * tenant id stay allowed on any endpoint.
201
+ */
202
+ /**
203
+ * Vendor credential headers whose names `Redaction.isSensitiveKey` does not
204
+ * recognize. Honeycomb sends its ingest key as `x-honeycomb-team`.
205
+ */
206
+ const vendorCredentialHeaders = new Set(["x-honeycomb-team"]);
207
+ const isCredentialHeader = (name) => Redaction.isSensitiveKey(name) || vendorCredentialHeaders.has(name.toLowerCase());
208
+ const refusePlaintextCredentials = (baseUrl, headers) => {
209
+ if (!baseUrl.toLowerCase().startsWith("http:") || isLoopback(baseUrl))
210
+ return Effect.void;
211
+ const credential = Object.keys(Headers.fromInput(headers)).some(isCredentialHeader);
212
+ return credential
213
+ ? Effect.fail(new Endpoint.InvalidExporterEndpoint({
214
+ code: "invalid_exporter_endpoint",
215
+ path: "baseUrl",
216
+ message: "OTLP collector baseUrl must use https:// when headers carry credentials, unless it is a loopback address"
217
+ }))
218
+ : Effect.void;
219
+ };
220
+ const redactText = (text) => String(Redaction.redact(text));
221
+ /**
222
+ * A failed span's error rebuilt with its text redacted. It keeps the original
223
+ * error's `name` and `stack` (redacted) so the collector's exception type and
224
+ * trace stay readable; it is exported to the collector and never thrown.
225
+ */
226
+ class RedactedSpanError extends Schema.TaggedError()("@smthrs/observability/RedactedSpanError", {
227
+ message: Schema.String
228
+ }) {
229
+ }
230
+ /**
231
+ * A span failure rendered with credentials removed. The exporter serializes a
232
+ * failed span's cause into its status message and `exception` events, which
233
+ * would otherwise carry any token an error message quoted to the collector.
234
+ */
235
+ const redactedExit = (exit) => {
236
+ if (exit._tag === "Success" || Cause.hasInterruptsOnly(exit.cause))
237
+ return exit;
238
+ const errors = Cause.prettyErrors(exit.cause, { includeCauseInStack: true }).map((error) => {
239
+ const redacted = new RedactedSpanError({ message: redactText(error.message) });
240
+ Object.defineProperty(redacted, "name", { value: redactText(error.name), configurable: true, writable: true });
241
+ // `prettyErrors` always renders a stack.
242
+ redacted.stack = redactText(String(error.stack));
243
+ return redacted;
244
+ });
245
+ return Exit.failCause(errors.map(Cause.fail).reduce(Cause.combine, Cause.empty));
246
+ };
247
+ /**
248
+ * Wraps the installed tracer so every exported span's failure and string
249
+ * attributes pass through the journal redaction rules first.
250
+ */
251
+ const redactedSpans = Layer.effect(Tracer.Tracer)(Effect.map(Effect.tracer, (tracer) => Tracer.make({
252
+ ...tracer,
253
+ span(options) {
254
+ const span = tracer.span(options);
255
+ const end = span.end.bind(span);
256
+ const attribute = span.attribute.bind(span);
257
+ span.end = (endTime, exit) => end(endTime, redactedExit(exit));
258
+ span.attribute = (key, value) => attribute(key, typeof value === "string" ? redactText(value) : value);
259
+ return span;
260
+ }
261
+ })));
262
+ /**
263
+ * Creates the OTLP logs, metrics, and traces layer with flows resource
264
+ * defaults, JSON-serialized. Exports share a four-request limit with no waiting
265
+ * queue. Requests larger than 1 MiB or stalled for ten seconds are discarded;
266
+ * `flows_observability_otlp_dropped` counts discarded batches, and at most
267
+ * once a minute a `Warn` record with code `otlp_export_discarded` names the
268
+ * reason, the request size, and the running total through the loggers that
269
+ * were installed when the layer was acquired, never through this exporter.
270
+ * A collector's response body is never read: the exporter acts on the status
271
+ * and the `retry-after` header, and the exchange ends when they arrive.
272
+ *
273
+ * **Details**
274
+ *
275
+ * The layer still requires an `HttpClient`, which is how it stays
276
+ * platform-neutral: a Node host may hand it `@effect/platform-node`'s Undici
277
+ * client (re-exported by `@smthrs/platform-node`), a browser or test
278
+ * hands it something else. Use {@link layerFetch} when the host's global
279
+ * `fetch` is good enough. On Node 26 and every browser it is.
280
+ * Fetch redirects are refused. Supply `FetchHttpClient.RequestInit` around
281
+ * the whole exporting effect to retain other fetch options; options scoped
282
+ * only to the supplied client's layer are replaced by the redirect policy.
283
+ * Other HTTP transports must independently refuse automatic redirects.
284
+ *
285
+ * @category layers
286
+ * @since 0.1.0
287
+ */
288
+ export const layer = (options) => Layer.unwrap(Effect.map(Effect.all([
289
+ Resource.decode({
290
+ serviceName: options.serviceName ?? defaultServiceName,
291
+ serviceVersion: options.serviceVersion ?? defaultServiceVersion,
292
+ ...(options.attributes === undefined ? {} : { attributes: options.attributes })
293
+ }),
294
+ Endpoint.decode(options.baseUrl, "baseUrl").pipe(Effect.tap((baseUrl) => refusePlaintextCredentials(baseUrl, options.headers)))
295
+ ]), ([decoded, baseUrl]) => {
296
+ const resource = Resource.toOpenTelemetryConfiguration(decoded);
297
+ return (Otlp.layerJson({
298
+ baseUrl,
299
+ resource: {
300
+ serviceName: resource.serviceName,
301
+ // `serviceVersion` is supplied above before Resource decoding.
302
+ serviceVersion: resource.serviceVersion,
303
+ ...(resource.attributes === undefined ? {} : { attributes: resource.attributes })
304
+ },
305
+ headers: options.headers,
306
+ maxBatchSize,
307
+ loggerExportInterval: options.exportInterval,
308
+ metricsExportInterval: options.exportInterval,
309
+ tracerExportInterval: options.exportInterval,
310
+ shutdownTimeout: options.shutdownTimeout
311
+ }).pipe(Layer.provide(boundedClient),
312
+ // Upstream merges OTEL_RESOURCE_ATTRIBUTES even with explicit
313
+ // options. Keep unvalidated ambient metadata out of every request.
314
+ Layer.provide(ConfigProvider.layer(ConfigProvider.fromUnknown({}))), (exporter) => Layer.provideMerge(redactedSpans, exporter)));
315
+ }));
316
+ /**
317
+ * Provides {@link layer} over the host's global `fetch`, the default wiring
318
+ * for a Node host, and browser-safe by construction because it never touches
319
+ * a `node:` built-in.
320
+ *
321
+ * **Example**
322
+ *
323
+ * ```ts
324
+ * import * as Otlp from "@smthrs/observability/Otlp"
325
+ *
326
+ * const Telemetry = Otlp.layerFetch({ baseUrl: "http://localhost:4318" })
327
+ * ```
328
+ *
329
+ * @category layers
330
+ * @since 0.1.0
331
+ */
332
+ export const layerFetch = (options) => layer(options).pipe(Layer.provide(FetchHttpClient.layer));
333
+ /**
334
+ * Parses `OTEL_EXPORTER_OTLP_HEADERS`: comma-separated `key=value` pairs whose
335
+ * values are percent-decoded, as the OpenTelemetry exporter specification
336
+ * defines. A pair without `=` or with an empty key is skipped.
337
+ *
338
+ * @category environment
339
+ * @since 1.0.0
340
+ */
341
+ export const parseHeaders = (value) => {
342
+ const headers = {};
343
+ for (const pair of (value ?? "").split(",")) {
344
+ const separator = pair.indexOf("=");
345
+ const key = pair.slice(0, separator).trim();
346
+ if (separator < 0 || key === "")
347
+ continue;
348
+ const raw = pair.slice(separator + 1).trim();
349
+ let decoded = raw;
350
+ try {
351
+ decoded = decodeURIComponent(raw);
352
+ }
353
+ catch { /* A malformed escape is kept verbatim. */ }
354
+ headers[key] = decoded;
355
+ }
356
+ return headers;
357
+ };
358
+ /**
359
+ * {@link layerFetch} when the environment names a collector, otherwise
360
+ * {@link layerNoop}.
361
+ *
362
+ * `OTEL_EXPORTER_OTLP_ENDPOINT` is the collector base URL and
363
+ * `OTEL_EXPORTER_OTLP_HEADERS` the headers sent with every export. An unset or
364
+ * empty endpoint installs no exporter at all.
365
+ *
366
+ * @category layers
367
+ * @since 1.0.0
368
+ */
369
+ export const layerEnvironment = (environment, options = {}) => {
370
+ const endpoint = environment["OTEL_EXPORTER_OTLP_ENDPOINT"]?.trim();
371
+ if (endpoint === undefined || endpoint === "")
372
+ return layerNoop;
373
+ return layerFetch({ ...options, baseUrl: endpoint, headers: parseHeaders(environment["OTEL_EXPORTER_OTLP_HEADERS"]) });
374
+ };
375
+ /**
376
+ * Exports nothing. The explicit stand-in for hosts with no collector, such as
377
+ * a development shell, a test, or a browser deployment that has not opted in, so
378
+ * wiring code can switch layers rather than branch.
379
+ *
380
+ * @category layers
381
+ * @since 0.1.0
382
+ */
383
+ export const layerNoop = Layer.empty;
384
+ //# sourceMappingURL=Otlp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Otlp.js","sourceRoot":"","sources":["../../src/Otlp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Explicit, validated OpenTelemetry resource metadata for Smithers.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+ import * as OtelResource from "@effect/opentelemetry/Resource";
7
+ import type { Attributes as OtelAttributes } from "@opentelemetry/api";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Layer from "effect/Layer";
10
+ import * as Schema from "effect/Schema";
11
+ /**
12
+ * Largest service-name or service-version field accepted by a resource.
13
+ *
14
+ * @category constants
15
+ * @since 1.0.0-rc.0
16
+ */
17
+ export declare const maximumIdentityLength = 1024;
18
+ /**
19
+ * Largest attribute key accepted by a resource.
20
+ *
21
+ * @category constants
22
+ * @since 1.0.0-rc.0
23
+ */
24
+ export declare const maximumAttributeKeyLength = 1024;
25
+ /**
26
+ * Largest string value accepted by one resource attribute.
27
+ *
28
+ * @category constants
29
+ * @since 1.0.0-rc.0
30
+ */
31
+ export declare const maximumAttributeStringLength = 65536;
32
+ /**
33
+ * Largest number of elements accepted in one array attribute value.
34
+ *
35
+ * @category constants
36
+ * @since 1.0.0-rc.0
37
+ */
38
+ export declare const maximumAttributeArrayLength = 256;
39
+ /**
40
+ * Largest number of attributes accepted by one resource.
41
+ *
42
+ * @category constants
43
+ * @since 1.0.0-rc.0
44
+ */
45
+ export declare const maximumAttributes = 256;
46
+ /**
47
+ * Largest OTLP/JSON encoding accepted for one whole resource, in UTF-8 bytes.
48
+ *
49
+ * The measure is the OTLP `Resource` message the exporters place in every
50
+ * request, `{"attributes":[{"key":…,"value":{…}}],"droppedAttributesCount":0}`
51
+ * with service identity and SDK-added `telemetry.sdk.name`,
52
+ * `telemetry.sdk.language` and `telemetry.sdk.version` included, after JSON
53
+ * escaping and UTF-8 encoding. The SDK's own values are reserved even for the
54
+ * default Effect exporter, whose values are shorter. A caller attribute that
55
+ * replaces an SDK field, or that service identity overwrites, is counted
56
+ * beside it. It is the bound the per-field limits cannot express: 256
57
+ * attributes at the string ceiling would encode to 16 MiB, and the resource
58
+ * rides in every export request, so the default transport, which discards a
59
+ * request over 1 MiB, would deliver nothing at all. 128 KiB admits one
60
+ * ASCII attribute at the string ceiling and leaves that transport 888 KiB of every
61
+ * request for the signal batch; see `Otlp.reservedBatchBytes`.
62
+ *
63
+ * @category constants
64
+ * @since 1.0.0-rc.0
65
+ */
66
+ export declare const maximumResourceBytes = 131072;
67
+ /**
68
+ * Runtime schema for one OpenTelemetry resource attribute value.
69
+ *
70
+ * @category schemas
71
+ * @since 1.0.0-rc.0
72
+ */
73
+ export declare const AttributeValue: Schema.Union<readonly [Schema.String, Schema.Number, Schema.Boolean, Schema.$Array<Schema.String>, Schema.$Array<Schema.Number>, Schema.$Array<Schema.Boolean>]>;
74
+ /**
75
+ * Runtime schema for OpenTelemetry resource attributes.
76
+ *
77
+ * @category schemas
78
+ * @since 1.0.0-rc.0
79
+ */
80
+ export declare const Attributes: Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.Number, Schema.Boolean, Schema.$Array<Schema.String>, Schema.$Array<Schema.Number>, Schema.$Array<Schema.Boolean>]>>;
81
+ /**
82
+ * Runtime schema for the service identity attached to exported telemetry.
83
+ *
84
+ * @category schemas
85
+ * @since 1.0.0-rc.0
86
+ */
87
+ export declare const Configuration: Schema.Struct<{
88
+ readonly serviceName: Schema.NonEmptyString;
89
+ readonly serviceVersion: Schema.optional<Schema.NonEmptyString>;
90
+ readonly attributes: Schema.optional<Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.Number, Schema.Boolean, Schema.$Array<Schema.String>, Schema.$Array<Schema.Number>, Schema.$Array<Schema.Boolean>]>>>;
91
+ }>;
92
+ /**
93
+ * Configuration used to identify the service emitting telemetry.
94
+ *
95
+ * @category models
96
+ * @since 1.0.0-rc.0
97
+ */
98
+ export type Configuration = typeof Configuration.Type;
99
+ declare const InvalidResourceConfiguration_base: Schema.Class<InvalidResourceConfiguration, Schema.TaggedStruct<"@smthrs/observability/InvalidResourceConfiguration", {
100
+ readonly code: Schema.Literal<"invalid_resource_configuration">;
101
+ readonly path: Schema.String;
102
+ readonly message: Schema.String;
103
+ }>, import("effect/Cause").YieldableError>;
104
+ /**
105
+ * Stable resource-configuration refusal shared by every OTEL layer.
106
+ *
107
+ * @category errors
108
+ * @since 1.0.0-rc.0
109
+ */
110
+ export declare class InvalidResourceConfiguration extends InvalidResourceConfiguration_base {
111
+ }
112
+ /**
113
+ * Decodes one resource configuration without retaining rejected values.
114
+ *
115
+ * @category decoding
116
+ * @since 1.0.0-rc.0
117
+ */
118
+ export declare const decode: (configuration: unknown) => Effect.Effect<Configuration, InvalidResourceConfiguration>;
119
+ /**
120
+ * Decodes one resource configuration for the package's pure projection API.
121
+ *
122
+ * @category decoding
123
+ * @since 1.0.0-rc.0
124
+ */
125
+ export declare const decodeSync: (configuration: unknown) => Configuration;
126
+ /**
127
+ * Projects a decoded resource into the exact optional-property shape expected
128
+ * by the OpenTelemetry SDK.
129
+ *
130
+ * @category conversions
131
+ * @since 1.0.0-rc.0
132
+ */
133
+ export declare const toOpenTelemetryConfiguration: (configuration: Configuration) => {
134
+ readonly serviceName: string;
135
+ readonly serviceVersion?: string;
136
+ readonly attributes?: OtelAttributes;
137
+ };
138
+ /**
139
+ * Converts explicit service metadata into OpenTelemetry resource attributes.
140
+ *
141
+ * No environment variables are read. Invalid metadata throws the same typed
142
+ * {@link InvalidResourceConfiguration} every layer returns during acquisition.
143
+ *
144
+ * @category conversions
145
+ * @since 1.0.0-rc.0
146
+ */
147
+ export declare const configToAttributes: (configuration: Configuration) => OtelAttributes;
148
+ /**
149
+ * Provides an explicitly validated OpenTelemetry resource.
150
+ *
151
+ * @category layers
152
+ * @since 1.0.0-rc.0
153
+ */
154
+ export declare const layer: (configuration: Configuration) => Layer.Layer<OtelResource.Resource, InvalidResourceConfiguration>;
155
+ /**
156
+ * The OpenTelemetry resource service.
157
+ *
158
+ * @category services
159
+ * @since 1.0.0-rc.0
160
+ */
161
+ export declare const Resource: typeof OtelResource.Resource;
162
+ export {};
163
+ //# sourceMappingURL=Resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../../src/Resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,OAAQ,CAAA;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,OAAQ,CAAA;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAElD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAA;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,SAAU,CAAA;AAqB3C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,kKAgB1B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,iMAYtB,CAAA;AA0CD;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;EAqBzB,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;;;;;;AAErD;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,iCAOjD;CAAG;AAWJ;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GACjB,eAAe,OAAO,KACrB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAC6B,CAAA;AAEzF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,eAAe,OAAO,KAAG,aAMnD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,GACvC,eAAe,aAAa,KAC3B;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAA;CAcpC,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,eAAe,aAAa,KAAG,cACwB,CAAA;AAE1F;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,eAAe,aAAa,KAC3B,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,4BAA4B,CAG/D,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,8BAAwB,CAAA"}