@uploadista/observability 0.0.20 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- let e=require(`effect`),t=require(`@opentelemetry/exporter-logs-otlp-http`),n=require(`@opentelemetry/exporter-metrics-otlp-http`),r=require(`@opentelemetry/exporter-trace-otlp-http`),i=require(`@opentelemetry/sdk-logs`),a=require(`@opentelemetry/sdk-metrics`),o=require(`@opentelemetry/api`),s=require(`@opentelemetry/api-logs`),c=require(`@effect/opentelemetry`),l=require(`@opentelemetry/sdk-trace-base`);const u=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.indexOf(`network`)>=0||r.indexOf(`timeout`)>=0?`network_error`:t===`InvalidAccessKeyId`||t===`SignatureDoesNotMatch`||t===`TokenRefreshRequired`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.indexOf(`authentication`)>=0||r.indexOf(`unauthorized`)>=0?`authentication_error`:t===`AccessDenied`||t===`AccountProblem`||t===`Forbidden`||n===`AuthorizationError`||r.indexOf(`forbidden`)>=0||r.indexOf(`permission`)>=0?`authorization_error`:t===`SlowDown`||t===`RequestTimeTooSkewed`||t===`TooManyRequests`||n===`ThrottlingError`||r.indexOf(`throttl`)>=0||r.indexOf(`rate limit`)>=0?`throttling_error`:t===`InternalError`||t===`ServiceUnavailable`||t===`InternalServerError`||n===`ServerError`||r.indexOf(`server error`)>=0||r.indexOf(`service unavailable`)>=0?`server_error`:t===`InvalidRequest`||t===`MalformedXML`||t===`RequestEntityTooLarge`||t===`BadRequest`||n===`ClientError`||r.indexOf(`bad request`)>=0||r.indexOf(`invalid`)>=0?`client_error`:`unknown_error`},ee=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return u(e)},te=(t,n,r,i,a={},o=u)=>e.Effect.gen(function*(){let s=o(i);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,r),e.Metric.tagged(`error_category`,s))(e.Effect.succeed(1));let c={storage_type:t,operation:r,error_category:s,error_type:typeof i,error_message:i instanceof Error?i.message:String(i),error_code:i&&typeof i==`object`&&`code`in i?i.code:void 0,error_name:i&&typeof i==`object`&&`name`in i?i.name:void 0,...a};yield*e.Effect.logError(`${t.toUpperCase()} ${r} failed`).pipe(e.Effect.annotateLogs(c))}),d=(e,t,n)=>{let r=ee(e,n);return(n,i,a={})=>te(e,t,n,i,a,r)};function f(){let e=typeof process<`u`?process.env.OTEL_EXPORTER_OTLP_HEADERS:void 0;if(!e)return;let t={},n=e.split(`,`);for(let e of n){let[n,...r]=e.split(`=`);n&&r.length>0&&(t[n.trim()]=r.join(`=`).trim())}return Object.keys(t).length>0?t:void 0}function p(e,t){if(t)return t;if(typeof process<`u`){let t;switch(e){case`traces`:t=process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;break;case`metrics`:t=process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;break;case`logs`:t=process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT;break}if(t)return t;if(process.env.OTEL_EXPORTER_OTLP_ENDPOINT)return process.env.OTEL_EXPORTER_OTLP_ENDPOINT}return`http://localhost:4318`}function ne(e={}){let t=p(`traces`,e.endpoint),n=e.headers??f(),i=e.timeoutMillis??3e4;return new r.OTLPTraceExporter({url:`${t}/v1/traces`,headers:n,timeoutMillis:i})}function re(e={}){let t=p(`metrics`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new n.OTLPMetricExporter({url:`${t}/v1/metrics`,headers:r,timeoutMillis:i})}function m(){if(typeof process<`u`){let e=process.env.UPLOADISTA_OBSERVABILITY_ENABLED;if(e!==void 0)return e.toLowerCase()!==`false`&&e!==`0`}return!0}function h(e=`uploadista`){return typeof process<`u`&&process.env.OTEL_SERVICE_NAME?process.env.OTEL_SERVICE_NAME:e}function ie(){if(typeof process>`u`)return{};let e=process.env.OTEL_RESOURCE_ATTRIBUTES;if(!e)return{};let t={},n=e.split(`,`);for(let e of n){let[n,...r]=e.split(`=`);n&&r.length>0&&(t[n.trim()]=r.join(`=`).trim())}return t}function ae(e={}){let n=p(`logs`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new t.OTLPLogExporter({url:`${n}/v1/logs`,headers:r,timeoutMillis:i})}function oe(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_METRICS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_METRICS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 6e4}function se(e={}){return new a.MeterProvider({readers:[new a.PeriodicExportingMetricReader({exporter:re(e),exportIntervalMillis:oe(e.exportIntervalMillis),exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}function ce(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_LOGS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_LOGS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 5e3}function le(e={}){let t=ae(e),n=ce(e.scheduledDelayMillis);return new i.LoggerProvider({processors:[new i.BatchLogRecordProcessor(t,{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:n,exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}var g=class extends e.Context.Tag(`OtelLogger`)(){};function _(e){switch(e.toLowerCase()){case`debug`:case`trace`:return s.SeverityNumber.DEBUG;case`info`:return s.SeverityNumber.INFO;case`warning`:case`warn`:return s.SeverityNumber.WARN;case`error`:return s.SeverityNumber.ERROR;case`fatal`:case`critical`:return s.SeverityNumber.FATAL;default:return s.SeverityNumber.INFO}}function ue(e){return e<=s.SeverityNumber.DEBUG?`DEBUG`:e<=s.SeverityNumber.INFO?`INFO`:e<=s.SeverityNumber.WARN?`WARN`:e<=s.SeverityNumber.ERROR?`ERROR`:`FATAL`}function v(){let e=o.trace.getActiveSpan();if(!e)return{};let t=e.spanContext();return t.traceId===`00000000000000000000000000000000`?{}:{trace_id:t.traceId,span_id:t.spanId,trace_flags:String(t.traceFlags)}}function y(t={}){return e.Layer.scoped(g,e.Effect.gen(function*(){if(!m()){let{LoggerProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-logs`)),n=new t;return{logger:n.getLogger(h(`uploadista`)),provider:n}}let n=le(t),r=t.serviceName??h(`uploadista`),i=n.getLogger(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down LoggerProvider:`,e)}})),{logger:i,provider:n}}))}const de=y();function fe(e={}){return y(e)}const pe=y();function me(e={}){return y(e)}const he=y({serviceName:h(`uploadista-workers`)});function ge(e={}){return y({serviceName:h(`uploadista-workers`),...e})}const _e=t=>e.Logger.make(({logLevel:e,message:n,annotations:r})=>{let i=_(e.label);if(t!==void 0&&i<t)return;let a={...v()};for(let[e,t]of r)typeof t==`string`||typeof t==`number`||typeof t==`boolean`?a[e]=t:a[e]=String(t);(i>=s.SeverityNumber.ERROR?console.error:i>=s.SeverityNumber.WARN?console.warn:console.log)(`[${e.label}] ${String(n)}`,a)}),b=(t,n,r)=>e.Effect.gen(function*(){let{logger:e}=yield*g,i=_(t),a=v();e.emit({severityNumber:i,severityText:ue(i),body:n,attributes:{...a,...r}})}),ve=(e,t)=>b(`debug`,e,t),ye=(e,t)=>b(`info`,e,t),be=(e,t)=>b(`warn`,e,t),xe=(e,t)=>b(`error`,e,t),Se=(e,t)=>b(`fatal`,e,t);var x=class extends e.Context.Tag(`OtelMeter`)(){};function S(t={}){return e.Layer.scoped(x,e.Effect.gen(function*(){if(!m()){let{MeterProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-metrics`)),n=new t;return{meter:n.getMeter(h(`uploadista`)),provider:n}}let n=se(t),r=t.serviceName??h(`uploadista`),i=n.getMeter(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down MeterProvider:`,e)}})),{meter:i,provider:n}}))}const Ce=S();function we(e={}){return S(e)}const Te=S();function Ee(e={}){return S(e)}const De=S({serviceName:h(`uploadista-workers`)});function Oe(e={}){return S({serviceName:h(`uploadista-workers`),...e})}const ke=(t,n=1,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createCounter(t).add(n,r)}),Ae=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createHistogram(t).record(n,r)}),je=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createObservableGauge(t,{description:t}).addCallback(e=>{e.observe(n(),r)})}),Me=e.Context.GenericTag(`TracingService`),Ne=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(Me,{serviceName:n})},C=e=>Ne({serviceName:`uploadista-${e}-store`}),w=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${n}-${t}`,{attributes:{"storage.type":n,operation:t,...r}})),Pe=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Fe=c.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Ie=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)}));function T(e={}){return new l.BatchSpanProcessor(ne(),{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:e.scheduledDelayMillis??5e3,exportTimeoutMillis:e.exportTimeoutMillis??3e4})}function E(e={}){let t=e.serviceName??h(`uploadista`),n=ie(),r=e.resourceAttributes??{};return{serviceName:t,...n,...r}}const Le=c.NodeSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Re(e={}){return c.NodeSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const ze=c.WebSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Be(e={}){return c.WebSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const Ve=c.WebSdk.layer(()=>{let e={serviceName:h(`uploadista-workers`)};return m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)}});function He(e={}){return c.WebSdk.layer(()=>{let t={serviceName:h(`uploadista-workers`),...e};return m()?{resource:E(t),spanProcessor:T(t)}:{resource:E(t)}})}function Ue(){let e=o.trace.getActiveSpan();if(!e)return;let t=e.spanContext();return{traceId:t.traceId,spanId:t.spanId,traceFlags:t.traceFlags}}const We=e.Effect.gen(function*(){let t=yield*e.Effect.currentSpan.pipe(e.Effect.option);return e.Option.match(t,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:e.sampled?1:0})})});function Ge(t){return e.Tracer.externalSpan({traceId:t.traceId,spanId:t.spanId,sampled:t.traceFlags===1})}function Ke(t){return n=>{let r=e.Tracer.externalSpan({traceId:t.traceId,spanId:t.spanId,sampled:t.traceFlags===1});return n.pipe(e.Effect.provideService(e.Tracer.ParentSpan,r))}}function qe(){let e=o.trace.getActiveSpan();return e?e.spanContext().traceId!==`00000000000000000000000000000000`:!1}const Je=e.Layer.mergeAll(Le,Ce,de);function Ye(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Re({serviceName:n,resourceAttributes:r,...t.traces}),we({serviceName:n,...t.metrics}),fe({serviceName:n,...t.logs}))}const Xe=e.Layer.mergeAll(ze,Te,pe);function Ze(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Be({serviceName:n,resourceAttributes:r,...t.traces}),Ee({serviceName:n,...t.metrics}),me({serviceName:n,...t.logs}))}const Qe=e.Layer.mergeAll(Ve,De,he);function $e(t={}){let n=t.serviceName??h(`uploadista-workers`),r=t.resourceAttributes;return e.Layer.mergeAll(He({serviceName:n,resourceAttributes:r,...t.traces}),Oe({serviceName:n,...t.metrics}),ge({serviceName:n,...t.logs}))}function D(){return typeof process<`u`&&process.versions?.node?`node`:typeof navigator<`u`&&typeof window<`u`?`web`:`workers`}const et=e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Je;case`web`:return Xe;case`workers`:return Qe}}));function tt(t={}){return e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Ye(t);case`web`:return Ze(t);case`workers`:return $e(t)}}))}var O=class extends e.Context.Tag(`Observability`)(){},k=class extends e.Context.Tag(`StorageObservability`)(){},A=class extends e.Context.Tag(`UploadObservability`)(){},j=class extends e.Context.Tag(`FlowObservability`)(){};const nt=(t,n=!0)=>e.Layer.succeed(O,{serviceName:t,enabled:n}),M=(t,n,r=!0)=>e.Layer.succeed(k,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),N=(t=!0)=>e.Layer.succeed(A,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),P=(t=!0)=>e.Layer.succeed(j,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),rt=nt(`uploadista-disabled`,!1),it=e=>M(e,{},!1),at=N(!1),ot=P(!1),st=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(O);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),ct=t=>e.Effect.gen(function*(){if(yield*st){let n=yield*t;return e.Option.some(n)}return e.Option.none()}),F=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),I=(e,t,n)=>F(`Upload progress`,{storage_type:e,upload_id:t,uploaded_bytes:n.uploadedBytes,total_bytes:n.totalBytes,progress_percentage:Math.round(n.uploadedBytes/n.totalBytes*100),...n.partNumber&&{part_number:n.partNumber},...n.speed&&{upload_speed_bps:n.speed}}),L=(e,t,n,r)=>F(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),R=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return F(`${e.toUpperCase()} upload completed`,{storage_type:e,upload_id:t,file_size_bytes:n.fileSize,file_size_mb:Math.round(n.fileSize/(1024*1024)*100)/100,total_duration_ms:n.totalDurationMs,total_duration_seconds:Math.round(n.totalDurationMs/1e3*100)/100,throughput_bps:n.throughputBps,throughput_mbps:Math.round(r*100)/100,...n.partsCount&&{parts_count:n.partsCount},...n.averagePartSize&&{average_part_size_bytes:n.averagePartSize,average_part_size_mb:Math.round(n.averagePartSize/(1024*1024)*100)/100},...n.retryCount&&{retry_count:n.retryCount}})},lt=t=>({uploadRequestsTotal:e.Metric.counter(`${t}_upload_requests_total`,{description:`Total number of upload requests for ${t}`}),uploadPartsTotal:e.Metric.counter(`${t}_upload_parts_total`,{description:`Total number of individual parts uploaded for ${t}`}),uploadSuccessTotal:e.Metric.counter(`${t}_upload_success_total`,{description:`Total number of successful uploads for ${t}`}),uploadErrorsTotal:e.Metric.counter(`${t}_upload_errors_total`,{description:`Total number of upload errors for ${t}`}),apiCallsTotal:e.Metric.counter(`${t}_api_calls_total`,{description:`Total number of API calls for ${t}`})}),ut=t=>({uploadDurationHistogram:e.Metric.histogram(`${t}_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of upload operations in seconds for ${t}`),partUploadDurationHistogram:e.Metric.histogram(`${t}_part_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual part uploads in seconds for ${t}`),fileSizeHistogram:e.Metric.histogram(`${t}_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes for ${t}`),partSizeHistogram:e.Metric.histogram(`${t}_part_size_bytes`,e.MetricBoundaries.linear({start:5242880,width:1048576,count:20}),`Size of upload parts in bytes for ${t}`)}),dt=t=>({activeUploadsGauge:e.Metric.gauge(`${t}_active_uploads`,{description:`Number of currently active uploads for ${t}`}),uploadThroughputGauge:e.Metric.gauge(`${t}_upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second for ${t}`})}),ft=t=>({uploadLatencySummary:e.Metric.summary({name:`${t}_upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload latency percentiles for ${t}`})}),z=e=>({...lt(e),...ut(e),...dt(e),...ft(e)}),pt=t=>{let n=z(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(k,r)},mt=()=>{let t={serviceName:`test-upload-server`,enabled:!0,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}};return e.Layer.succeed(A,t)},ht=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(j,t)},gt=t=>e.Effect.gen(function*(){let n=yield*t;return yield*e.Metric.snapshot,n}),_t=t=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let n=yield*t;return yield*e.Metric.snapshot,n}),vt=(e=`test-storage`)=>({storageObservability:pt(e),uploadObservability:mt(),flowObservability:ht()}),yt=(t,n=`test-storage`)=>{let r=vt(n);return t.pipe(e.Effect.provide(r.storageObservability),e.Effect.provide(r.uploadObservability),e.Effect.provide(r.flowObservability))},B=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.uploadRequestsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tapError(()=>t.uploadErrorsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tap(()=>t.uploadSuccessTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1)))),V=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.apiCallsTotal.pipe(e.Metric.tagged(`operation`,n))(e.Effect.succeed(1)))),H=(t,n)=>e.Effect.gen(function*(){let r=yield*e.Effect.sync(()=>Date.now()),i=yield*n,a=((yield*e.Effect.sync(()=>Date.now()))-r)/1e3;return yield*t(e.Effect.succeed(a)),i}),bt=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.fileSizeHistogram(e.Effect.succeed(n)))),xt=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.partSizeHistogram(e.Effect.succeed(n)))),St=(t,n)=>n.pipe(e.Effect.tap(()=>t.activeUploadsGauge(e.Effect.succeed(1))),e.Effect.ensuring(t.activeUploadsGauge(e.Effect.succeed(-1)))),Ct=(t,n,r)=>e.Effect.gen(function*(){let i=yield*e.Effect.sync(()=>Date.now()),a=yield*r,o=((yield*e.Effect.sync(()=>Date.now()))-i)/1e3,s=o>0?n/o:0;return yield*t.uploadThroughputGauge(e.Effect.succeed(s)),a}),U=(e,t,n,r,i)=>{let a=r.pipe(n=>V(e,t,n),t=>B(e,n,t),t=>H(e.uploadDurationHistogram,t),t=>St(e,t));return i!==void 0&&(a=a.pipe(t=>bt(e,i,t),t=>Ct(e,i,t))),a},W=()=>({flowStartedTotal:e.Metric.counter(`flow_started_total`,{description:`Total number of flows started`}),flowCompletedTotal:e.Metric.counter(`flow_completed_total`,{description:`Total number of flows completed successfully`}),flowFailedTotal:e.Metric.counter(`flow_failed_total`,{description:`Total number of flows that failed`}),flowPausedTotal:e.Metric.counter(`flow_paused_total`,{description:`Total number of flows that were paused`}),flowResumedTotal:e.Metric.counter(`flow_resumed_total`,{description:`Total number of flows that were resumed`}),nodeExecutedTotal:e.Metric.counter(`node_executed_total`,{description:`Total number of nodes executed`}),nodeSuccessTotal:e.Metric.counter(`node_success_total`,{description:`Total number of nodes executed successfully`}),nodeFailedTotal:e.Metric.counter(`node_failed_total`,{description:`Total number of nodes that failed`}),nodeSkippedTotal:e.Metric.counter(`node_skipped_total`,{description:`Total number of nodes skipped (conditional)`}),flowDurationHistogram:e.Metric.histogram(`flow_duration_seconds`,e.MetricBoundaries.exponential({start:.1,factor:2,count:20}),`Duration of complete flow execution in seconds`),nodeDurationHistogram:e.Metric.histogram(`node_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:18}),`Duration of individual node execution in seconds`),flowNodeCountHistogram:e.Metric.histogram(`flow_node_count`,e.MetricBoundaries.linear({start:1,width:5,count:20}),`Number of nodes in a flow`),parallelNodesHistogram:e.Metric.histogram(`parallel_nodes_count`,e.MetricBoundaries.linear({start:1,width:2,count:15}),`Number of nodes executed in parallel`),activeFlowsGauge:e.Metric.gauge(`active_flows`,{description:`Number of currently active flows`}),activeNodesGauge:e.Metric.gauge(`active_nodes`,{description:`Number of currently executing nodes`}),pausedFlowsGauge:e.Metric.gauge(`paused_flows`,{description:`Number of currently paused flows`}),flowLatencySummary:e.Metric.summary({name:`flow_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Flow execution latency percentiles`}),nodeLatencySummary:e.Metric.summary({name:`node_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Node execution latency percentiles`}),circuitBreakerOpenTotal:e.Metric.counter(`circuit_breaker_open_total`,{description:`Total number of times circuit breakers transitioned to open state`}),circuitBreakerCloseTotal:e.Metric.counter(`circuit_breaker_close_total`,{description:`Total number of times circuit breakers transitioned to closed state`}),circuitBreakerRejectedTotal:e.Metric.counter(`circuit_breaker_rejected_total`,{description:`Total number of requests rejected because circuit breaker is open`}),circuitBreakerHalfOpenTotal:e.Metric.counter(`circuit_breaker_half_open_total`,{description:`Total number of times circuit breakers transitioned to half-open state`}),circuitBreakerStateGauge:e.Metric.gauge(`circuit_breaker_state`,{description:`Current circuit breaker state (0=closed, 1=open, 2=half-open)`}),circuitBreakerFailuresGauge:e.Metric.gauge(`circuit_breaker_failures`,{description:`Number of failures currently in the circuit breaker sliding window`})}),wt=W(),G=e=>{if(!e||typeof e!=`object`)return`unknown_flow_error`;let t=`code`in e?e.code:void 0;if(!t)return`unknown_flow_error`;switch(t){case`FLOW_VALIDATION_ERROR`:case`FLOW_INVALID_INPUT`:case`FLOW_INVALID_OUTPUT`:return`flow_validation_error`;case`FLOW_NODE_NOT_FOUND`:case`FLOW_EDGE_INVALID`:return`node_not_found_error`;case`FLOW_NODE_EXECUTION_FAILED`:case`FLOW_NODE_ERROR`:return`node_execution_error`;case`FLOW_TIMEOUT`:return`flow_timeout_error`;case`FLOW_CANCELLED`:case`ABORTED`:return`flow_cancelled_error`;default:return`unknown_flow_error`}},Tt=t=>{let n=W(),r=G(t);return e.Effect.gen(function*(){yield*e.Metric.increment(n.flowFailedTotal),yield*e.Effect.logError(`Flow execution failed`).pipe(e.Effect.annotateLogs({"error.category":r,"error.message":String(t)}))})},Et=(t,n,r)=>{let i=W(),a=G(r);return e.Effect.gen(function*(){yield*e.Metric.increment(i.nodeFailedTotal),yield*e.Effect.logError(`Node execution failed`).pipe(e.Effect.annotateLogs({"node.id":t,"node.type":n,"error.category":a,"error.message":String(r)}))})},Dt=(t=`uploadista-flow-engine`)=>{let n=W();return e.Layer.succeed(j,{serviceName:t,enabled:!0,metrics:{flowStarted:e.Metric.increment(n.flowStartedTotal),flowCompleted:e.Metric.increment(n.flowCompletedTotal),flowFailed:e.Metric.increment(n.flowFailedTotal),nodeExecuted:e.Metric.increment(n.nodeExecutedTotal)}})},Ot=Dt(),kt=P(!1),At=e.Effect.gen(function*(){return(yield*j).metrics}),jt=t=>{let n=W();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.flowDurationHistogram,a),yield*e.Metric.update(n.flowLatencySummary,a),i}).pipe(e.Effect.withSpan(`flow-execution`))},Mt=(t,n,r,i)=>{let a=W(),o=i??n;return e.Effect.gen(function*(){let t=Date.now(),n=yield*r,i=(Date.now()-t)/1e3;return yield*e.Metric.update(a.nodeDurationHistogram,i),yield*e.Metric.update(a.nodeLatencySummary,i),n}).pipe(e.Effect.withSpan(`node-${o}`,{attributes:{"node.id":t,"node.type":n,"node.type_id":i??n}}))},Nt=t=>{let n=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeFlowsGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeFlowsGauge,-1))})},Pt=t=>{let n=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeNodesGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeNodesGauge,-1))})},Ft=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(j,t)},It=t=>t.pipe(e.Effect.provide(Ft())),Lt=(t,n)=>r=>r.pipe(e.Effect.withSpan(`flow-${t}`,{attributes:{"flow.operation":t,...n}})),Rt=t=>e.Effect.annotateCurrentSpan({"flow.id":t.flowId??`unknown`,"flow.name":t.flowName??`unknown`,"flow.job_id":t.jobId??`unknown`,"flow.node_count":t.nodeCount?.toString()??`0`,"flow.storage_id":t.storageId??`unknown`}),zt=t=>e.Effect.annotateCurrentSpan({"node.id":t.nodeId,"node.type":t.nodeType,"node.name":t.nodeName??`unknown`,"node.flow_id":t.flowId??`unknown`,"node.job_id":t.jobId??`unknown`}),Bt=t=>e.Effect.annotateCurrentSpan({"execution.order":t.executionOrder?.join(`,`)??``,"execution.current_index":t.currentIndex?.toString()??`0`,"execution.total_nodes":t.totalNodes?.toString()??`0`,"execution.parallel_count":t.parallelCount?.toString()??`0`}),Vt=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${t}-${n}`,{attributes:{"operation.domain":t,"operation.name":n,...r}})),Ht=t=>e.Effect.annotateCurrentSpan({"operation.domain":t.domain,"operation.name":t.operation,"operation.input_size":t.inputSize?.toString()??`unknown`,"operation.output_size":t.outputSize?.toString()??`unknown`}),Ut=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`circuit-breaker-${t}`,{attributes:{"circuit_breaker.node_type":t,"circuit_breaker.state":n,...r}})),Wt=t=>e.Effect.annotateCurrentSpan({"circuit_breaker.node_type":t.nodeType,"circuit_breaker.state":t.state,"circuit_breaker.failure_count":t.failureCount?.toString()??`0`,"circuit_breaker.failure_threshold":t.failureThreshold?.toString()??`5`,"circuit_breaker.reset_timeout":t.resetTimeout?.toString()??`30000`,"circuit_breaker.decision":t.decision??`unknown`}),Gt=t=>e.Effect.annotateCurrentSpan({"circuit_breaker.event":`state_change`,"circuit_breaker.node_type":t.nodeType,"circuit_breaker.previous_state":t.previousState,"circuit_breaker.new_state":t.newState,"circuit_breaker.failure_count":t.failureCount?.toString()??`0`,"circuit_breaker.timestamp":t.timestamp?.toString()??Date.now().toString()});var Kt=class extends e.Context.Tag(`MetricsService`)(){};const qt=e.Layer.succeed(Kt,{recordUpload:(t,n)=>e.Effect.void}),K=`azure`,q=z(K),Jt=C(K),Yt=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`statusCode`in e?e.statusCode:void 0;if(!t)return null;switch(t){case`BlobNotFound`:case`ContainerNotFound`:case`InvalidBlobOrBlock`:return`client_error`;case`ContainerAlreadyExists`:case`BlobAlreadyExists`:return`client_error`;case`InvalidBlockId`:case`InvalidBlockList`:case`InvalidBlobType`:return`client_error`;case`RequestBodyTooLarge`:case`InvalidHeaderValue`:return`client_error`;case`AuthenticationFailed`:case`InvalidAuthenticationInfo`:return`authentication_error`;case`AccountIsDisabled`:return`authorization_error`;case`InsufficientAccountPermissions`:return`authorization_error`;case`OperationTimedOut`:case`ServerBusy`:case`InternalError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},Xt=d(K,q,Yt),Zt=e.Layer.mergeAll(Jt),Qt=(e,t)=>B(q,e,t),$t=(e,t)=>V(q,e,t),en=H,tn=(e,t,n,r)=>U(q,e,t,n,r),nn=(e,t)=>n=>w(e,K,t)(n),rn=L.bind(null,K),an=I.bind(null,K),on=R.bind(null,K),sn=F,{uploadRequestsTotal:cn,uploadPartsTotal:ln,uploadSuccessTotal:un,uploadErrorsTotal:dn,apiCallsTotal:fn,uploadDurationHistogram:pn,partUploadDurationHistogram:mn,fileSizeHistogram:hn,partSizeHistogram:gn,activeUploadsGauge:_n,uploadThroughputGauge:vn,uploadLatencySummary:yn}=q,J=`filesystem`,Y=z(J),bn=C(J),xn=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`ENOENT`:case`ENOTDIR`:return`client_error`;case`EEXIST`:return`client_error`;case`EISDIR`:return`client_error`;case`EINVAL`:case`ENAMETOOLONG`:return`client_error`;case`EACCES`:case`EPERM`:return`authorization_error`;case`ENOSPC`:case`EDQUOT`:return`server_error`;case`EIO`:case`EROFS`:case`EMFILE`:case`ENFILE`:return`server_error`;case`EBUSY`:return`throttling_error`;default:return null}},Sn=d(J,Y,xn),Cn=e.Layer.mergeAll(bn),wn=(e,t)=>B(Y,e,t),Tn=(e,t)=>V(Y,e,t),En=H,Dn=(e,t,n,r)=>U(Y,e,t,n,r),On=(e,t)=>n=>w(e,J,t)(n),kn=L.bind(null,J),An=I.bind(null,J),jn=R.bind(null,J),Mn=F,{uploadRequestsTotal:Nn,uploadPartsTotal:Pn,uploadSuccessTotal:Fn,uploadErrorsTotal:In,apiCallsTotal:Ln,uploadDurationHistogram:Rn,partUploadDurationHistogram:zn,fileSizeHistogram:Bn,partSizeHistogram:Vn,activeUploadsGauge:Hn,uploadThroughputGauge:Un,uploadLatencySummary:Wn}=Y,Gn=`gcs`,X=z(`gcs`),Kn=C(`gcs`),qn=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`status`in e?e.status:void 0;if(!t)return null;switch(t){case`NoSuchBucket`:case`NoSuchKey`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyOwnedByYou`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidArgument`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`MalformedPolicy`:return`client_error`;case`Unauthorized`:case`AuthenticationRequired`:return`authentication_error`;case`Forbidden`:case`AccessDenied`:return`authorization_error`;case`TooManyRequests`:case`RateLimitExceeded`:return`throttling_error`;case`InternalError`:case`ServiceUnavailable`:case`BackendError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},Jn=d(`gcs`,X,qn),Yn=e.Layer.mergeAll(Kn),Xn=(e,t)=>B(X,e,t),Zn=(e,t)=>V(X,e,t),Qn=H,$n=(e,t,n,r)=>U(X,e,t,n,r),er=(e,t)=>n=>w(e,`gcs`,t)(n),tr=L.bind(null,`gcs`),nr=I.bind(null,`gcs`),rr=R.bind(null,`gcs`),ir=F,{uploadRequestsTotal:ar,uploadPartsTotal:or,uploadSuccessTotal:sr,uploadErrorsTotal:cr,apiCallsTotal:lr,uploadDurationHistogram:ur,partUploadDurationHistogram:dr,fileSizeHistogram:fr,partSizeHistogram:pr,activeUploadsGauge:mr,uploadThroughputGauge:hr,uploadLatencySummary:gr}=X,_r=`s3`,Z=z(`s3`),vr=C(`s3`),yr=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`NoSuchKey`:case`NoSuchBucket`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyExists`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`ExpiredToken`:case`TokenRefreshRequired`:return`authentication_error`;case`RequestTimeTooSkewed`:case`SlowDown`:return`throttling_error`;default:return null}},br=d(`s3`,Z,yr),xr=e.Layer.mergeAll(vr),Sr=(e,t)=>B(Z,e,t),Cr=(e,t)=>V(Z,e,t),wr=H,Tr=(e,t,n,r)=>U(Z,e,t,n,r),Er=(e,t)=>n=>w(e,`s3`,t)(n),Dr=L.bind(null,`s3`),Or=I.bind(null,`s3`),kr=R.bind(null,`s3`),Ar=F,{uploadRequestsTotal:jr,uploadPartsTotal:Mr,uploadSuccessTotal:Nr,uploadErrorsTotal:Pr,apiCallsTotal:Fr,uploadDurationHistogram:Ir,partUploadDurationHistogram:Lr,fileSizeHistogram:Rr,partSizeHistogram:zr,activeUploadsGauge:Br,uploadThroughputGauge:Vr,uploadLatencySummary:Hr}=Z,Q=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`ABORTED`||n===`AbortError`||r.includes(`abort`)?`abort_error`:t===`FILE_TOO_LARGE`||t===`LIMIT_FILE_SIZE`||t===`RequestEntityTooLarge`||r.includes(`too large`)||r.includes(`size limit`)||r.includes(`max size`)?`size_limit_error`:t===`INVALID_FILE`||t===`INVALID_METADATA`||t===`VALIDATION_ERROR`||r.includes(`validation`)||r.includes(`invalid`)?`validation_error`:t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.includes(`network`)||r.includes(`timeout`)?`network_error`:t===`UNAUTHORIZED`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.includes(`authentication`)||r.includes(`unauthorized`)?`authentication_error`:t===`FORBIDDEN`||t===`AccessDenied`||n===`AuthorizationError`||r.includes(`forbidden`)||r.includes(`permission`)?`authorization_error`:t===`FILE_WRITE_ERROR`||t===`STORAGE_ERROR`||r.includes(`storage`)||r.includes(`write error`)?`storage_error`:`unknown_error`},Ur=(t,n,r,i={})=>e.Effect.gen(function*(){let a=Q(r);yield*t.uploadFailedTotal.pipe(e.Metric.tagged(`operation`,n),e.Metric.tagged(`error_category`,a))(e.Effect.succeed(1));let o={operation:n,error_category:a,error_type:typeof r,error_message:r instanceof Error?r.message:String(r),error_code:r&&typeof r==`object`&&`code`in r?String(r.code):void 0,error_name:r&&typeof r==`object`&&`name`in r?String(r.name):void 0,...i};yield*e.Effect.logError(`Upload ${n} failed`).pipe(e.Effect.annotateLogs(o))}),Wr=e=>t=>{if(e){let n=e(t);if(n!==null)return n}return Q(t)},$=()=>({uploadCreatedTotal:e.Metric.counter(`upload_created_total`,{description:`Total number of uploads created`}),uploadCompletedTotal:e.Metric.counter(`upload_completed_total`,{description:`Total number of uploads completed successfully`}),uploadFailedTotal:e.Metric.counter(`upload_failed_total`,{description:`Total number of uploads that failed`}),chunkUploadedTotal:e.Metric.counter(`chunk_uploaded_total`,{description:`Total number of chunks uploaded`}),uploadFromUrlTotal:e.Metric.counter(`upload_from_url_total`,{description:`Total number of URL-based uploads`}),uploadFromUrlSuccessTotal:e.Metric.counter(`upload_from_url_success_total`,{description:`Total number of successful URL-based uploads`}),uploadFromUrlFailedTotal:e.Metric.counter(`upload_from_url_failed_total`,{description:`Total number of failed URL-based uploads`}),uploadDurationHistogram:e.Metric.histogram(`upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of complete upload operations in seconds`),chunkUploadDurationHistogram:e.Metric.histogram(`chunk_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual chunk uploads in seconds`),uploadFileSizeHistogram:e.Metric.histogram(`upload_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes`),chunkSizeHistogram:e.Metric.histogram(`chunk_size_bytes`,e.MetricBoundaries.linear({start:262144,width:262144,count:20}),`Size of uploaded chunks in bytes`),activeUploadsGauge:e.Metric.gauge(`active_uploads`,{description:`Number of currently active uploads`}),uploadThroughputGauge:e.Metric.gauge(`upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second`}),uploadLatencySummary:e.Metric.summary({name:`upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload operation latency percentiles`}),chunkLatencySummary:e.Metric.summary({name:`chunk_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Chunk upload latency percentiles`})}),Gr=$(),Kr=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(A,{serviceName:t,enabled:!0,metrics:{uploadCreated:e.Effect.succeed(n.uploadCreatedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadCompleted:e.Effect.succeed(n.uploadCompletedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadFailed:e.Effect.succeed(n.uploadFailedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),chunkUploaded:e.Effect.succeed(n.chunkUploadedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t)))}})},qr=Kr(),Jr=N(!1),Yr=e.Effect.gen(function*(){return(yield*A).metrics}),Xr=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.uploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`upload-operation`))},Zr=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.chunkUploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`chunk-upload`))},Qr=e.Layer.succeed(A,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:()=>Promise.resolve(),uploadCompleted:()=>Promise.resolve(),uploadFailed:()=>Promise.resolve(),chunkUploaded:()=>Promise.resolve()}}),$r=()=>$(),ei=()=>{let e=$r(),t=[`uploadCreatedTotal`,`uploadCompletedTotal`,`uploadFailedTotal`,`chunkUploadedTotal`,`uploadFromUrlTotal`,`uploadFromUrlSuccessTotal`,`uploadFromUrlFailedTotal`,`uploadDurationHistogram`,`chunkUploadDurationHistogram`,`uploadFileSizeHistogram`,`chunkSizeHistogram`,`activeUploadsGauge`,`uploadThroughputGauge`,`uploadLatencySummary`,`chunkLatencySummary`].filter(t=>!(t in e));if(t.length>0)throw Error(`Missing required metrics: ${t.join(`, `)}`);return!0},ti=(t,n)=>r=>r.pipe(e.Effect.withSpan(`upload-${t}`,{attributes:{"upload.operation":t,...n}})),ni=t=>e.Effect.annotateCurrentSpan({"upload.id":t.uploadId??`unknown`,"upload.file_name":t.fileName??`unknown`,"upload.file_size":t.fileSize?.toString()??`0`,"upload.storage_id":t.storageId??`unknown`,"upload.mime_type":t.mimeType??`unknown`}),ri=t=>e.Effect.annotateCurrentSpan({"chunk.upload_id":t.uploadId,"chunk.size":t.chunkSize.toString(),"chunk.offset":t.offset.toString(),"chunk.total_size":t.totalSize?.toString()??`0`,"chunk.progress":t.totalSize&&t.totalSize>0?(t.offset/t.totalSize*100).toFixed(2):`0`});exports.AzureObservabilityLayer=Zt,exports.AzureTracingLayer=Jt,Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return i.BatchLogRecordProcessor}}),exports.FilesystemObservabilityLayer=Cn,exports.FilesystemTracingLayer=bn,exports.FlowObservability=j,exports.FlowObservabilityDisabled=ot,exports.FlowObservabilityLive=Ot,exports.GCSObservabilityLayer=Yn,exports.GCSTracingLayer=Kn,Object.defineProperty(exports,`LoggerProvider`,{enumerable:!0,get:function(){return i.LoggerProvider}}),Object.defineProperty(exports,`MeterProvider`,{enumerable:!0,get:function(){return a.MeterProvider}}),exports.MetricsService=Kt,exports.NoOpMetricsServiceLive=qt,exports.NodeSdkLive=Fe,Object.defineProperty(exports,`OTLPLogExporter`,{enumerable:!0,get:function(){return t.OTLPLogExporter}}),Object.defineProperty(exports,`OTLPMetricExporter`,{enumerable:!0,get:function(){return n.OTLPMetricExporter}}),exports.Observability=O,exports.ObservabilityDisabled=rt,exports.OtelLogger=g,exports.OtelMeter=x,exports.OtlpAutoSdkLive=et,exports.OtlpFullObservabilityNodeSdkLive=Je,exports.OtlpFullObservabilityWebSdkLive=Xe,exports.OtlpFullObservabilityWorkersSdkLive=Qe,exports.OtlpLogsNodeSdkLive=de,exports.OtlpLogsWebSdkLive=pe,exports.OtlpLogsWorkersSdkLive=he,exports.OtlpMetricsNodeSdkLive=Ce,exports.OtlpMetricsWebSdkLive=Te,exports.OtlpMetricsWorkersSdkLive=De,exports.OtlpNodeSdkLive=Le,exports.OtlpWebSdkLive=ze,exports.OtlpWorkersSdkLive=Ve,Object.defineProperty(exports,`PeriodicExportingMetricReader`,{enumerable:!0,get:function(){return a.PeriodicExportingMetricReader}}),exports.S3ObservabilityLayer=xr,exports.S3TracingLayer=vr,Object.defineProperty(exports,`SeverityNumber`,{enumerable:!0,get:function(){return s.SeverityNumber}}),exports.StorageObservability=k,exports.StorageObservabilityDisabled=it,exports.TracingService=Me,exports.UploadObservability=A,exports.UploadObservabilityDisabled=at,exports.UploadObservabilityLive=qr,exports.UploadObservabilityTest=Qr,exports.WebSdkLive=Pe,exports.WorkersSdkLive=Ie,exports.annotateCircuitBreakerStateChange=Gt,exports.azureActiveUploadsGauge=_n,exports.azureApiCallsTotal=fn,exports.azureFileSizeHistogram=hn,exports.azureMetrics=q,exports.azurePartSizeHistogram=gn,exports.azurePartUploadDurationHistogram=mn,exports.azureUploadDurationHistogram=pn,exports.azureUploadErrorsTotal=dn,exports.azureUploadLatencySummary=yn,exports.azureUploadPartsTotal=ln,exports.azureUploadRequestsTotal=cn,exports.azureUploadSuccessTotal=un,exports.azureUploadThroughputGauge=vn,exports.captureMetrics=gt,exports.captureTraceContext=Ue,exports.captureTraceContextEffect=We,exports.classifyFlowError=G,exports.classifyStorageError=u,exports.classifyUploadError=Q,exports.createExternalSpan=Ge,exports.createFlowMetrics=W,exports.createGauge=je,exports.createOtlpAutoSdkLayer=tt,exports.createOtlpEffectLogger=_e,exports.createOtlpFullObservabilityNodeSdkLayer=Ye,exports.createOtlpFullObservabilityWebSdkLayer=Ze,exports.createOtlpFullObservabilityWorkersSdkLayer=$e,exports.createOtlpLogExporter=ae,exports.createOtlpLoggerProvider=le,exports.createOtlpLogsNodeSdkLayer=fe,exports.createOtlpLogsWebSdkLayer=me,exports.createOtlpLogsWorkersSdkLayer=ge,exports.createOtlpMeterProvider=se,exports.createOtlpMetricExporter=re,exports.createOtlpMetricsNodeSdkLayer=we,exports.createOtlpMetricsWebSdkLayer=Ee,exports.createOtlpMetricsWorkersSdkLayer=Oe,exports.createOtlpNodeSdkLayer=Re,exports.createOtlpTraceExporter=ne,exports.createOtlpWebSdkLayer=Be,exports.createOtlpWorkersSdkLayer=He,exports.createStorageErrorClassifier=ee,exports.createStorageErrorTracker=d,exports.createStorageMetrics=z,exports.createStorageTracingLayer=C,exports.createTestFixture=vt,exports.createTracingLayer=Ne,exports.createUploadEngineMetrics=$,exports.createUploadErrorClassifier=Wr,exports.createUploadGauges=dt,exports.createUploadHistograms=ut,exports.createUploadMetrics=lt,exports.createUploadSummaries=ft,exports.detectEnvironment=D,exports.emitLog=b,exports.filesystemActiveUploadsGauge=Hn,exports.filesystemApiCallsTotal=Ln,exports.filesystemFileSizeHistogram=Bn,exports.filesystemMetrics=Y,exports.filesystemPartSizeHistogram=Vn,exports.filesystemPartUploadDurationHistogram=zn,exports.filesystemUploadDurationHistogram=Rn,exports.filesystemUploadErrorsTotal=In,exports.filesystemUploadLatencySummary=Wn,exports.filesystemUploadPartsTotal=Pn,exports.filesystemUploadRequestsTotal=Nn,exports.filesystemUploadSuccessTotal=Fn,exports.filesystemUploadThroughputGauge=Un,exports.flowMetrics=wt,exports.gcsActiveUploadsGauge=mr,exports.gcsApiCallsTotal=lr,exports.gcsFileSizeHistogram=fr,exports.gcsMetrics=X,exports.gcsPartSizeHistogram=pr,exports.gcsPartUploadDurationHistogram=dr,exports.gcsUploadDurationHistogram=ur,exports.gcsUploadErrorsTotal=cr,exports.gcsUploadLatencySummary=gr,exports.gcsUploadPartsTotal=or,exports.gcsUploadRequestsTotal=ar,exports.gcsUploadSuccessTotal=sr,exports.gcsUploadThroughputGauge=hr,exports.getFlowMetrics=At,exports.getLogsExportInterval=ce,exports.getMetricsExportInterval=oe,exports.getOtlpEndpoint=p,exports.getServiceName=h,exports.getTestMetrics=$r,exports.getTraceContext=v,exports.getUploadMetrics=Yr,exports.hasActiveTraceContext=qe,exports.isObservabilityEnabled=st,exports.isOtlpExportEnabled=m,exports.logAzureContext=sn,exports.logAzureOperation=rn,exports.logAzureUploadCompletion=on,exports.logAzureUploadProgress=an,exports.logDebug=ve,exports.logError=xe,exports.logFatal=Se,exports.logFilesystemContext=Mn,exports.logFilesystemOperation=kn,exports.logFilesystemUploadCompletion=jn,exports.logFilesystemUploadProgress=An,exports.logGCSContext=ir,exports.logGCSOperation=tr,exports.logGCSUploadCompletion=rr,exports.logGCSUploadProgress=nr,exports.logInfo=ye,exports.logS3Context=Ar,exports.logS3Operation=Dr,exports.logS3UploadCompletion=kr,exports.logS3UploadProgress=Or,exports.logStorageOperation=L,exports.logUploadCompletion=R,exports.logUploadProgress=I,exports.logWarn=be,exports.logWithContext=F,exports.makeFlowObservabilityLayer=P,exports.makeFlowObservabilityLive=Dt,exports.makeObservabilityLayer=nt,exports.makeStorageObservabilityLayer=M,exports.makeTestFlowObservability=ht,exports.makeTestFlowObservabilityUtil=Ft,exports.makeTestStorageObservability=pt,exports.makeTestUploadObservability=mt,exports.makeUploadObservabilityLayer=N,exports.makeUploadObservabilityLive=Kr,exports.mapLogLevelToSeverity=_,exports.parseOtlpHeaders=f,exports.parseResourceAttributes=ie,exports.recordCounter=ke,exports.recordHistogram=Ae,exports.runWithTestFlowObservability=It,exports.runWithTestObservability=yt,exports.s3ActiveUploadsGauge=Br,exports.s3ApiCallsTotal=Fr,exports.s3FileSizeHistogram=Rr,exports.s3Metrics=Z,exports.s3PartSizeHistogram=zr,exports.s3PartUploadDurationHistogram=Lr,exports.s3UploadDurationHistogram=Ir,exports.s3UploadErrorsTotal=Pr,exports.s3UploadLatencySummary=Hr,exports.s3UploadPartsTotal=Mr,exports.s3UploadRequestsTotal=jr,exports.s3UploadSuccessTotal=Nr,exports.s3UploadThroughputGauge=Vr,exports.severityToText=ue,exports.trackActiveFlow=Nt,exports.trackActiveNode=Pt,exports.trackAzureError=Xt,exports.trackFileSize=bt,exports.trackFilesystemError=Sn,exports.trackFlowError=Tt,exports.trackGCSError=Jn,exports.trackNodeError=Et,exports.trackPartSize=xt,exports.trackS3Error=br,exports.trackStorageError=te,exports.trackUploadError=Ur,exports.uploadEngineMetrics=Gr,exports.validateMetricsExist=ei,exports.whenObservabilityEnabled=ct,exports.withActiveUploadTracking=St,exports.withApiMetrics=V,exports.withAzureApiMetrics=$t,exports.withAzureOperationMetrics=tn,exports.withAzureSpan=nn,exports.withAzureTimingMetrics=en,exports.withAzureUploadMetrics=Qt,exports.withChunkContext=ri,exports.withChunkDuration=Zr,exports.withCircuitBreakerContext=Wt,exports.withCircuitBreakerSpan=Ut,exports.withExecutionContext=Bt,exports.withFilesystemApiMetrics=Tn,exports.withFilesystemOperationMetrics=Dn,exports.withFilesystemSpan=On,exports.withFilesystemTimingMetrics=En,exports.withFilesystemUploadMetrics=wn,exports.withFlowContext=Rt,exports.withFlowDuration=jt,exports.withFlowSpan=Lt,exports.withGCSApiMetrics=Zn,exports.withGCSOperationMetrics=$n,exports.withGCSSpan=er,exports.withGCSTimingMetrics=Qn,exports.withGCSUploadMetrics=Xn,exports.withMetricTracking=_t,exports.withNodeContext=zt,exports.withNodeDuration=Mt,exports.withOperationContext=Ht,exports.withOperationSpan=Vt,exports.withParentContext=Ke,exports.withS3ApiMetrics=Cr,exports.withS3OperationMetrics=Tr,exports.withS3Span=Er,exports.withS3TimingMetrics=wr,exports.withS3UploadMetrics=Sr,exports.withStorageOperationMetrics=U,exports.withStorageSpan=w,exports.withThroughputTracking=Ct,exports.withTimingMetrics=H,exports.withUploadContext=ni,exports.withUploadDuration=Xr,exports.withUploadMetrics=B,exports.withUploadSpan=ti;
1
+ let e=require(`effect`),t=require(`@opentelemetry/exporter-logs-otlp-http`),n=require(`@opentelemetry/exporter-metrics-otlp-http`),r=require(`@opentelemetry/exporter-trace-otlp-http`),i=require(`@opentelemetry/sdk-logs`),a=require(`@opentelemetry/sdk-metrics`),o=require(`@opentelemetry/api`),s=require(`@opentelemetry/api-logs`),c=require(`@effect/opentelemetry`),l=require(`@opentelemetry/sdk-trace-base`);const u=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.indexOf(`network`)>=0||r.indexOf(`timeout`)>=0?`network_error`:t===`InvalidAccessKeyId`||t===`SignatureDoesNotMatch`||t===`TokenRefreshRequired`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.indexOf(`authentication`)>=0||r.indexOf(`unauthorized`)>=0?`authentication_error`:t===`AccessDenied`||t===`AccountProblem`||t===`Forbidden`||n===`AuthorizationError`||r.indexOf(`forbidden`)>=0||r.indexOf(`permission`)>=0?`authorization_error`:t===`SlowDown`||t===`RequestTimeTooSkewed`||t===`TooManyRequests`||n===`ThrottlingError`||r.indexOf(`throttl`)>=0||r.indexOf(`rate limit`)>=0?`throttling_error`:t===`InternalError`||t===`ServiceUnavailable`||t===`InternalServerError`||n===`ServerError`||r.indexOf(`server error`)>=0||r.indexOf(`service unavailable`)>=0?`server_error`:t===`InvalidRequest`||t===`MalformedXML`||t===`RequestEntityTooLarge`||t===`BadRequest`||n===`ClientError`||r.indexOf(`bad request`)>=0||r.indexOf(`invalid`)>=0?`client_error`:`unknown_error`},ee=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return u(e)},te=(t,n,r,i,a={},o=u)=>e.Effect.gen(function*(){let s=o(i);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,r),e.Metric.tagged(`error_category`,s))(e.Effect.succeed(1));let c={storage_type:t,operation:r,error_category:s,error_type:typeof i,error_message:i instanceof Error?i.message:String(i),error_code:i&&typeof i==`object`&&`code`in i?i.code:void 0,error_name:i&&typeof i==`object`&&`name`in i?i.name:void 0,...a};yield*e.Effect.logError(`${t.toUpperCase()} ${r} failed`).pipe(e.Effect.annotateLogs(c))}),d=(e,t,n)=>{let r=ee(e,n);return(n,i,a={})=>te(e,t,n,i,a,r)};function f(){let e=typeof process<`u`?process.env.OTEL_EXPORTER_OTLP_HEADERS:void 0;if(!e)return;let t={},n=e.split(`,`);for(let e of n){let[n,...r]=e.split(`=`);n&&r.length>0&&(t[n.trim()]=r.join(`=`).trim())}return Object.keys(t).length>0?t:void 0}function p(e,t){if(t)return t;if(typeof process<`u`){let t;switch(e){case`traces`:t=process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;break;case`metrics`:t=process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;break;case`logs`:t=process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT;break}if(t)return t;if(process.env.OTEL_EXPORTER_OTLP_ENDPOINT)return process.env.OTEL_EXPORTER_OTLP_ENDPOINT}return`http://localhost:4318`}function ne(e={}){let t=p(`traces`,e.endpoint),n=e.headers??f(),i=e.timeoutMillis??3e4;return new r.OTLPTraceExporter({url:`${t}/v1/traces`,headers:n,timeoutMillis:i})}function re(e={}){let t=p(`metrics`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new n.OTLPMetricExporter({url:`${t}/v1/metrics`,headers:r,timeoutMillis:i})}function m(){if(typeof process<`u`){let e=process.env.UPLOADISTA_OBSERVABILITY_ENABLED;if(e!==void 0)return e.toLowerCase()!==`false`&&e!==`0`}return!0}function h(e=`uploadista`){return typeof process<`u`&&process.env.OTEL_SERVICE_NAME?process.env.OTEL_SERVICE_NAME:e}function ie(){if(typeof process>`u`)return{};let e=process.env.OTEL_RESOURCE_ATTRIBUTES;if(!e)return{};let t={},n=e.split(`,`);for(let e of n){let[n,...r]=e.split(`=`);n&&r.length>0&&(t[n.trim()]=r.join(`=`).trim())}return t}function ae(e={}){let n=p(`logs`,e.endpoint),r=e.headers??f(),i=e.timeoutMillis??3e4;return new t.OTLPLogExporter({url:`${n}/v1/logs`,headers:r,timeoutMillis:i})}function oe(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_METRICS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_METRICS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 6e4}function se(e={}){return new a.MeterProvider({readers:[new a.PeriodicExportingMetricReader({exporter:re(e),exportIntervalMillis:oe(e.exportIntervalMillis),exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}function ce(e){if(e!==void 0)return e;if(typeof process<`u`&&process.env.OTEL_LOGS_EXPORT_INTERVAL){let e=Number.parseInt(process.env.OTEL_LOGS_EXPORT_INTERVAL,10);if(!Number.isNaN(e)&&e>0)return e}return 5e3}function le(e={}){let t=ae(e),n=ce(e.scheduledDelayMillis);return new i.LoggerProvider({processors:[new i.BatchLogRecordProcessor(t,{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:n,exportTimeoutMillis:e.exportTimeoutMillis??3e4})]})}var g=class extends e.Context.Tag(`OtelLogger`)(){};function _(e){switch(e.toLowerCase()){case`debug`:case`trace`:return s.SeverityNumber.DEBUG;case`info`:return s.SeverityNumber.INFO;case`warning`:case`warn`:return s.SeverityNumber.WARN;case`error`:return s.SeverityNumber.ERROR;case`fatal`:case`critical`:return s.SeverityNumber.FATAL;default:return s.SeverityNumber.INFO}}function ue(e){return e<=s.SeverityNumber.DEBUG?`DEBUG`:e<=s.SeverityNumber.INFO?`INFO`:e<=s.SeverityNumber.WARN?`WARN`:e<=s.SeverityNumber.ERROR?`ERROR`:`FATAL`}function v(){let e=o.trace.getActiveSpan();if(!e)return{};let t=e.spanContext();return t.traceId===`00000000000000000000000000000000`?{}:{trace_id:t.traceId,span_id:t.spanId,trace_flags:String(t.traceFlags)}}function y(t={}){return e.Layer.scoped(g,e.Effect.gen(function*(){if(!m()){let{LoggerProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-logs`)),n=new t;return{logger:n.getLogger(h(`uploadista`)),provider:n}}let n=le(t),r=t.serviceName??h(`uploadista`),i=n.getLogger(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down LoggerProvider:`,e)}})),{logger:i,provider:n}}))}const de=y();function fe(e={}){return y(e)}const pe=y();function me(e={}){return y(e)}const he=y({serviceName:h(`uploadista-workers`)});function ge(e={}){return y({serviceName:h(`uploadista-workers`),...e})}const _e=t=>e.Logger.make(({logLevel:e,message:n,annotations:r})=>{let i=_(e.label);if(t!==void 0&&i<t)return;let a={...v()};for(let[e,t]of r)typeof t==`string`||typeof t==`number`||typeof t==`boolean`?a[e]=t:a[e]=String(t);(i>=s.SeverityNumber.ERROR?console.error:i>=s.SeverityNumber.WARN?console.warn:console.log)(`[${e.label}] ${String(n)}`,a)}),b=(t,n,r)=>e.Effect.gen(function*(){let{logger:e}=yield*g,i=_(t),a=v();e.emit({severityNumber:i,severityText:ue(i),body:n,attributes:{...a,...r}})}),ve=(e,t)=>b(`debug`,e,t),ye=(e,t)=>b(`info`,e,t),be=(e,t)=>b(`warn`,e,t),xe=(e,t)=>b(`error`,e,t),Se=(e,t)=>b(`fatal`,e,t);var x=class extends e.Context.Tag(`OtelMeter`)(){};function S(t={}){return e.Layer.scoped(x,e.Effect.gen(function*(){if(!m()){let{MeterProvider:t}=yield*e.Effect.promise(()=>import(`@opentelemetry/sdk-metrics`)),n=new t;return{meter:n.getMeter(h(`uploadista`)),provider:n}}let n=se(t),r=t.serviceName??h(`uploadista`),i=n.getMeter(r);return yield*e.Effect.addFinalizer(()=>e.Effect.promise(async()=>{try{await n.shutdown()}catch(e){console.warn(`Error shutting down MeterProvider:`,e)}})),{meter:i,provider:n}}))}const Ce=S();function we(e={}){return S(e)}const Te=S();function Ee(e={}){return S(e)}const De=S({serviceName:h(`uploadista-workers`)});function Oe(e={}){return S({serviceName:h(`uploadista-workers`),...e})}const ke=(t,n=1,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createCounter(t).add(n,r)}),Ae=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createHistogram(t).record(n,r)}),je=(t,n,r)=>e.Effect.gen(function*(){let{meter:e}=yield*x;e.createObservableGauge(t,{description:t}).addCallback(e=>{e.observe(n(),r)})}),Me=e.Context.GenericTag(`TracingService`),Ne=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(Me,{serviceName:n})},C=e=>Ne({serviceName:`uploadista-${e}-store`}),w=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${n}-${t}`,{attributes:{"storage.type":n,operation:t,...r}})),Pe=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Fe=c.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)})),Ie=c.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new l.BatchSpanProcessor(new l.ConsoleSpanExporter)}));function T(e={}){return new l.BatchSpanProcessor(ne(),{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:e.scheduledDelayMillis??5e3,exportTimeoutMillis:e.exportTimeoutMillis??3e4})}function E(e={}){let t=e.serviceName??h(`uploadista`),n=ie(),r=e.resourceAttributes??{};return{serviceName:t,...n,...r}}const Le=c.NodeSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Re(e={}){return c.NodeSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const ze=c.WebSdk.layer(()=>m()?{resource:E(),spanProcessor:T()}:{resource:E()});function Be(e={}){return c.WebSdk.layer(()=>m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)})}const Ve=c.WebSdk.layer(()=>{let e={serviceName:h(`uploadista-workers`)};return m()?{resource:E(e),spanProcessor:T(e)}:{resource:E(e)}});function He(e={}){return c.WebSdk.layer(()=>{let t={serviceName:h(`uploadista-workers`),...e};return m()?{resource:E(t),spanProcessor:T(t)}:{resource:E(t)}})}function Ue(){let e=o.trace.getActiveSpan();if(!e)return;let t=e.spanContext();return{traceId:t.traceId,spanId:t.spanId,traceFlags:t.traceFlags}}const We=e.Effect.gen(function*(){let t=yield*e.Effect.currentSpan.pipe(e.Effect.option);return e.Option.match(t,{onNone:()=>void 0,onSome:e=>({traceId:e.traceId,spanId:e.spanId,traceFlags:e.sampled?1:0})})});function Ge(t){return e.Tracer.externalSpan({traceId:t.traceId,spanId:t.spanId,sampled:t.traceFlags===1})}function Ke(t){return n=>{let r=e.Tracer.externalSpan({traceId:t.traceId,spanId:t.spanId,sampled:t.traceFlags===1});return n.pipe(e.Effect.provideService(e.Tracer.ParentSpan,r))}}function qe(){let e=o.trace.getActiveSpan();return e?e.spanContext().traceId!==`00000000000000000000000000000000`:!1}const Je=e.Layer.mergeAll(Le,Ce,de);function Ye(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Re({serviceName:n,resourceAttributes:r,...t.traces}),we({serviceName:n,...t.metrics}),fe({serviceName:n,...t.logs}))}const Xe=e.Layer.mergeAll(ze,Te,pe);function Ze(t={}){let n=t.serviceName??h(`uploadista`),r=t.resourceAttributes;return e.Layer.mergeAll(Be({serviceName:n,resourceAttributes:r,...t.traces}),Ee({serviceName:n,...t.metrics}),me({serviceName:n,...t.logs}))}const Qe=e.Layer.mergeAll(Ve,De,he);function $e(t={}){let n=t.serviceName??h(`uploadista-workers`),r=t.resourceAttributes;return e.Layer.mergeAll(He({serviceName:n,resourceAttributes:r,...t.traces}),Oe({serviceName:n,...t.metrics}),ge({serviceName:n,...t.logs}))}function D(){return typeof process<`u`&&process.versions?.node?`node`:typeof navigator<`u`&&typeof window<`u`?`web`:`workers`}const et=e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Je;case`web`:return Xe;case`workers`:return Qe}}));function tt(t={}){return e.Layer.unwrapEffect(e.Effect.sync(()=>{switch(D()){case`node`:return Ye(t);case`web`:return Ze(t);case`workers`:return $e(t)}}))}var O=class extends e.Context.Tag(`Observability`)(){},k=class extends e.Context.Tag(`StorageObservability`)(){},A=class extends e.Context.Tag(`UploadObservability`)(){},j=class extends e.Context.Tag(`FlowObservability`)(){};const nt=(t,n=!0)=>e.Layer.succeed(O,{serviceName:t,enabled:n}),M=(t,n,r=!0)=>e.Layer.succeed(k,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),N=(t=!0)=>e.Layer.succeed(A,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),P=(t=!0)=>e.Layer.succeed(j,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),rt=nt(`uploadista-disabled`,!1),it=e=>M(e,{},!1),at=N(!1),ot=P(!1),st=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(O);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),ct=t=>e.Effect.gen(function*(){if(yield*st){let n=yield*t;return e.Option.some(n)}return e.Option.none()}),F=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),I=(e,t,n)=>F(`Upload progress`,{storage_type:e,upload_id:t,uploaded_bytes:n.uploadedBytes,total_bytes:n.totalBytes,progress_percentage:Math.round(n.uploadedBytes/n.totalBytes*100),...n.partNumber&&{part_number:n.partNumber},...n.speed&&{upload_speed_bps:n.speed}}),L=(e,t,n,r)=>F(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),R=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return F(`${e.toUpperCase()} upload completed`,{storage_type:e,upload_id:t,file_size_bytes:n.fileSize,file_size_mb:Math.round(n.fileSize/(1024*1024)*100)/100,total_duration_ms:n.totalDurationMs,total_duration_seconds:Math.round(n.totalDurationMs/1e3*100)/100,throughput_bps:n.throughputBps,throughput_mbps:Math.round(r*100)/100,...n.partsCount&&{parts_count:n.partsCount},...n.averagePartSize&&{average_part_size_bytes:n.averagePartSize,average_part_size_mb:Math.round(n.averagePartSize/(1024*1024)*100)/100},...n.retryCount&&{retry_count:n.retryCount}})},lt=t=>({uploadRequestsTotal:e.Metric.counter(`${t}_upload_requests_total`,{description:`Total number of upload requests for ${t}`}),uploadPartsTotal:e.Metric.counter(`${t}_upload_parts_total`,{description:`Total number of individual parts uploaded for ${t}`}),uploadSuccessTotal:e.Metric.counter(`${t}_upload_success_total`,{description:`Total number of successful uploads for ${t}`}),uploadErrorsTotal:e.Metric.counter(`${t}_upload_errors_total`,{description:`Total number of upload errors for ${t}`}),apiCallsTotal:e.Metric.counter(`${t}_api_calls_total`,{description:`Total number of API calls for ${t}`})}),ut=t=>({uploadDurationHistogram:e.Metric.histogram(`${t}_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of upload operations in seconds for ${t}`),partUploadDurationHistogram:e.Metric.histogram(`${t}_part_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual part uploads in seconds for ${t}`),fileSizeHistogram:e.Metric.histogram(`${t}_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes for ${t}`),partSizeHistogram:e.Metric.histogram(`${t}_part_size_bytes`,e.MetricBoundaries.linear({start:5242880,width:1048576,count:20}),`Size of upload parts in bytes for ${t}`)}),dt=t=>({activeUploadsGauge:e.Metric.gauge(`${t}_active_uploads`,{description:`Number of currently active uploads for ${t}`}),uploadThroughputGauge:e.Metric.gauge(`${t}_upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second for ${t}`})}),ft=t=>({uploadLatencySummary:e.Metric.summary({name:`${t}_upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload latency percentiles for ${t}`})}),z=e=>({...lt(e),...ut(e),...dt(e),...ft(e)}),pt=t=>{let n=z(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(k,r)},mt=()=>{let t={serviceName:`test-upload-server`,enabled:!0,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}};return e.Layer.succeed(A,t)},ht=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(j,t)},gt=t=>e.Effect.gen(function*(){let n=yield*t;return yield*e.Metric.snapshot,n}),_t=t=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let n=yield*t;return yield*e.Metric.snapshot,n}),vt=(e=`test-storage`)=>({storageObservability:pt(e),uploadObservability:mt(),flowObservability:ht()}),yt=(t,n=`test-storage`)=>{let r=vt(n);return t.pipe(e.Effect.provide(r.storageObservability),e.Effect.provide(r.uploadObservability),e.Effect.provide(r.flowObservability))},B=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.uploadRequestsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tapError(()=>t.uploadErrorsTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1))),e.Effect.tap(()=>t.uploadSuccessTotal.pipe(e.Metric.tagged(`upload_id`,n))(e.Effect.succeed(1)))),V=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.apiCallsTotal.pipe(e.Metric.tagged(`operation`,n))(e.Effect.succeed(1)))),H=(t,n)=>e.Effect.gen(function*(){let r=yield*e.Effect.sync(()=>Date.now()),i=yield*n,a=((yield*e.Effect.sync(()=>Date.now()))-r)/1e3;return yield*t(e.Effect.succeed(a)),i}),bt=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.fileSizeHistogram(e.Effect.succeed(n)))),xt=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.partSizeHistogram(e.Effect.succeed(n)))),St=(t,n)=>n.pipe(e.Effect.tap(()=>t.activeUploadsGauge(e.Effect.succeed(1))),e.Effect.ensuring(t.activeUploadsGauge(e.Effect.succeed(-1)))),Ct=(t,n,r)=>e.Effect.gen(function*(){let i=yield*e.Effect.sync(()=>Date.now()),a=yield*r,o=((yield*e.Effect.sync(()=>Date.now()))-i)/1e3,s=o>0?n/o:0;return yield*t.uploadThroughputGauge(e.Effect.succeed(s)),a}),U=(e,t,n,r,i)=>{let a=r.pipe(n=>V(e,t,n),t=>B(e,n,t),t=>H(e.uploadDurationHistogram,t),t=>St(e,t));return i!==void 0&&(a=a.pipe(t=>bt(e,i,t),t=>Ct(e,i,t))),a},W=()=>({flowStartedTotal:e.Metric.counter(`flow_started_total`,{description:`Total number of flows started`}),flowCompletedTotal:e.Metric.counter(`flow_completed_total`,{description:`Total number of flows completed successfully`}),flowFailedTotal:e.Metric.counter(`flow_failed_total`,{description:`Total number of flows that failed`}),flowPausedTotal:e.Metric.counter(`flow_paused_total`,{description:`Total number of flows that were paused`}),flowResumedTotal:e.Metric.counter(`flow_resumed_total`,{description:`Total number of flows that were resumed`}),nodeExecutedTotal:e.Metric.counter(`node_executed_total`,{description:`Total number of nodes executed`}),nodeSuccessTotal:e.Metric.counter(`node_success_total`,{description:`Total number of nodes executed successfully`}),nodeFailedTotal:e.Metric.counter(`node_failed_total`,{description:`Total number of nodes that failed`}),nodeSkippedTotal:e.Metric.counter(`node_skipped_total`,{description:`Total number of nodes skipped (conditional)`}),flowDurationHistogram:e.Metric.histogram(`flow_duration_seconds`,e.MetricBoundaries.exponential({start:.1,factor:2,count:20}),`Duration of complete flow execution in seconds`),nodeDurationHistogram:e.Metric.histogram(`node_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:18}),`Duration of individual node execution in seconds`),flowNodeCountHistogram:e.Metric.histogram(`flow_node_count`,e.MetricBoundaries.linear({start:1,width:5,count:20}),`Number of nodes in a flow`),parallelNodesHistogram:e.Metric.histogram(`parallel_nodes_count`,e.MetricBoundaries.linear({start:1,width:2,count:15}),`Number of nodes executed in parallel`),activeFlowsGauge:e.Metric.gauge(`active_flows`,{description:`Number of currently active flows`}),activeNodesGauge:e.Metric.gauge(`active_nodes`,{description:`Number of currently executing nodes`}),pausedFlowsGauge:e.Metric.gauge(`paused_flows`,{description:`Number of currently paused flows`}),flowLatencySummary:e.Metric.summary({name:`flow_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Flow execution latency percentiles`}),nodeLatencySummary:e.Metric.summary({name:`node_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Node execution latency percentiles`}),circuitBreakerOpenTotal:e.Metric.counter(`circuit_breaker_open_total`,{description:`Total number of times circuit breakers transitioned to open state`}),circuitBreakerCloseTotal:e.Metric.counter(`circuit_breaker_close_total`,{description:`Total number of times circuit breakers transitioned to closed state`}),circuitBreakerRejectedTotal:e.Metric.counter(`circuit_breaker_rejected_total`,{description:`Total number of requests rejected because circuit breaker is open`}),circuitBreakerHalfOpenTotal:e.Metric.counter(`circuit_breaker_half_open_total`,{description:`Total number of times circuit breakers transitioned to half-open state`}),circuitBreakerStateGauge:e.Metric.gauge(`circuit_breaker_state`,{description:`Current circuit breaker state (0=closed, 1=open, 2=half-open)`}),circuitBreakerFailuresGauge:e.Metric.gauge(`circuit_breaker_failures`,{description:`Number of failures currently in the circuit breaker sliding window`})}),wt=W(),G=e=>{if(!e||typeof e!=`object`)return`unknown_flow_error`;let t=`code`in e?e.code:void 0;if(!t)return`unknown_flow_error`;switch(t){case`FLOW_VALIDATION_ERROR`:case`FLOW_INVALID_INPUT`:case`FLOW_INVALID_OUTPUT`:return`flow_validation_error`;case`FLOW_NODE_NOT_FOUND`:case`FLOW_EDGE_INVALID`:return`node_not_found_error`;case`FLOW_NODE_EXECUTION_FAILED`:case`FLOW_NODE_ERROR`:return`node_execution_error`;case`FLOW_TIMEOUT`:return`flow_timeout_error`;case`FLOW_CANCELLED`:case`ABORTED`:return`flow_cancelled_error`;default:return`unknown_flow_error`}},Tt=t=>{let n=W(),r=G(t);return e.Effect.gen(function*(){yield*e.Metric.increment(n.flowFailedTotal),yield*e.Effect.logError(`Flow execution failed`).pipe(e.Effect.annotateLogs({"error.category":r,"error.message":String(t)}))})},Et=(t,n,r)=>{let i=W(),a=G(r);return e.Effect.gen(function*(){yield*e.Metric.increment(i.nodeFailedTotal),yield*e.Effect.logError(`Node execution failed`).pipe(e.Effect.annotateLogs({"node.id":t,"node.type":n,"error.category":a,"error.message":String(r)}))})},Dt=(t=`uploadista-flow-engine`)=>{let n=W();return e.Layer.succeed(j,{serviceName:t,enabled:!0,metrics:{flowStarted:e.Metric.increment(n.flowStartedTotal),flowCompleted:e.Metric.increment(n.flowCompletedTotal),flowFailed:e.Metric.increment(n.flowFailedTotal),nodeExecuted:e.Metric.increment(n.nodeExecutedTotal)}})},Ot=Dt(),kt=P(!1),At=e.Effect.gen(function*(){return(yield*j).metrics}),jt=t=>{let n=W();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.flowDurationHistogram,a),yield*e.Metric.update(n.flowLatencySummary,a),i}).pipe(e.Effect.withSpan(`flow-execution`))},Mt=(t,n,r,i)=>{let a=W(),o=i??n;return e.Effect.gen(function*(){let t=Date.now(),n=yield*r,i=(Date.now()-t)/1e3;return yield*e.Metric.update(a.nodeDurationHistogram,i),yield*e.Metric.update(a.nodeLatencySummary,i),n}).pipe(e.Effect.withSpan(`node-${o}`,{attributes:{"node.id":t,"node.type":n,"node.type_id":i??n}}))},Nt=t=>{let n=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeFlowsGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeFlowsGauge,-1))})},Pt=t=>{let n=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(n.activeNodesGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>t,()=>e.Metric.set(n.activeNodesGauge,-1))})},Ft=()=>{let t={serviceName:`test-flow-engine`,enabled:!0,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}};return e.Layer.succeed(j,t)},It=t=>t.pipe(e.Effect.provide(Ft())),Lt=(t,n)=>r=>r.pipe(e.Effect.withSpan(`flow-${t}`,{attributes:{"flow.operation":t,...n}})),Rt=t=>e.Effect.annotateCurrentSpan({"flow.id":t.flowId??`unknown`,"flow.name":t.flowName??`unknown`,"flow.job_id":t.jobId??`unknown`,"flow.node_count":t.nodeCount?.toString()??`0`,"flow.storage_id":t.storageId??`unknown`}),zt=t=>e.Effect.annotateCurrentSpan({"node.id":t.nodeId,"node.type":t.nodeType,"node.name":t.nodeName??`unknown`,"node.flow_id":t.flowId??`unknown`,"node.job_id":t.jobId??`unknown`}),Bt=t=>e.Effect.annotateCurrentSpan({"execution.order":t.executionOrder?.join(`,`)??``,"execution.current_index":t.currentIndex?.toString()??`0`,"execution.total_nodes":t.totalNodes?.toString()??`0`,"execution.parallel_count":t.parallelCount?.toString()??`0`}),Vt=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${t}-${n}`,{attributes:{"operation.domain":t,"operation.name":n,...r}})),Ht=t=>e.Effect.annotateCurrentSpan({"operation.domain":t.domain,"operation.name":t.operation,"operation.input_size":t.inputSize?.toString()??`unknown`,"operation.output_size":t.outputSize?.toString()??`unknown`}),Ut=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`circuit-breaker-${t}`,{attributes:{"circuit_breaker.node_type":t,"circuit_breaker.state":n,...r}})),Wt=t=>e.Effect.annotateCurrentSpan({"circuit_breaker.node_type":t.nodeType,"circuit_breaker.state":t.state,"circuit_breaker.failure_count":t.failureCount?.toString()??`0`,"circuit_breaker.failure_threshold":t.failureThreshold?.toString()??`5`,"circuit_breaker.reset_timeout":t.resetTimeout?.toString()??`30000`,"circuit_breaker.decision":t.decision??`unknown`}),Gt=t=>e.Effect.annotateCurrentSpan({"circuit_breaker.event":`state_change`,"circuit_breaker.node_type":t.nodeType,"circuit_breaker.previous_state":t.previousState,"circuit_breaker.new_state":t.newState,"circuit_breaker.failure_count":t.failureCount?.toString()??`0`,"circuit_breaker.timestamp":t.timestamp?.toString()??Date.now().toString()});var Kt=class extends e.Context.Tag(`MetricsService`)(){};const qt=e.Layer.succeed(Kt,{recordUpload:(t,n)=>e.Effect.void}),K=`azure`,q=z(K),Jt=C(K),Yt=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`statusCode`in e?e.statusCode:void 0;if(!t)return null;switch(t){case`BlobNotFound`:case`ContainerNotFound`:case`InvalidBlobOrBlock`:return`client_error`;case`ContainerAlreadyExists`:case`BlobAlreadyExists`:return`client_error`;case`InvalidBlockId`:case`InvalidBlockList`:case`InvalidBlobType`:return`client_error`;case`RequestBodyTooLarge`:case`InvalidHeaderValue`:return`client_error`;case`AuthenticationFailed`:case`InvalidAuthenticationInfo`:return`authentication_error`;case`AccountIsDisabled`:return`authorization_error`;case`InsufficientAccountPermissions`:return`authorization_error`;case`OperationTimedOut`:case`ServerBusy`:case`InternalError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},Xt=d(K,q,Yt),Zt=e.Layer.mergeAll(Jt),Qt=(e,t)=>B(q,e,t),$t=(e,t)=>V(q,e,t),en=H,tn=(e,t,n,r)=>U(q,e,t,n,r),nn=(e,t)=>n=>w(e,K,t)(n),rn=L.bind(null,K),an=I.bind(null,K),on=R.bind(null,K),sn=F,{uploadRequestsTotal:cn,uploadPartsTotal:ln,uploadSuccessTotal:un,uploadErrorsTotal:dn,apiCallsTotal:fn,uploadDurationHistogram:pn,partUploadDurationHistogram:mn,fileSizeHistogram:hn,partSizeHistogram:gn,activeUploadsGauge:_n,uploadThroughputGauge:vn,uploadLatencySummary:yn}=q,J=`filesystem`,Y=z(J),bn=C(J),xn=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`ENOENT`:case`ENOTDIR`:return`client_error`;case`EEXIST`:return`client_error`;case`EISDIR`:return`client_error`;case`EINVAL`:case`ENAMETOOLONG`:return`client_error`;case`EACCES`:case`EPERM`:return`authorization_error`;case`ENOSPC`:case`EDQUOT`:return`server_error`;case`EIO`:case`EROFS`:case`EMFILE`:case`ENFILE`:return`server_error`;case`EBUSY`:return`throttling_error`;default:return null}},Sn=d(J,Y,xn),Cn=e.Layer.mergeAll(bn),wn=(e,t)=>B(Y,e,t),Tn=(e,t)=>V(Y,e,t),En=H,Dn=(e,t,n,r)=>U(Y,e,t,n,r),On=(e,t)=>n=>w(e,J,t)(n),kn=L.bind(null,J),An=I.bind(null,J),jn=R.bind(null,J),Mn=F,{uploadRequestsTotal:Nn,uploadPartsTotal:Pn,uploadSuccessTotal:Fn,uploadErrorsTotal:In,apiCallsTotal:Ln,uploadDurationHistogram:Rn,partUploadDurationHistogram:zn,fileSizeHistogram:Bn,partSizeHistogram:Vn,activeUploadsGauge:Hn,uploadThroughputGauge:Un,uploadLatencySummary:Wn}=Y,Gn=`gcs`,X=z(`gcs`),Kn=C(`gcs`),qn=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:`status`in e?e.status:void 0;if(!t)return null;switch(t){case`NoSuchBucket`:case`NoSuchKey`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyOwnedByYou`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidArgument`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`MalformedPolicy`:return`client_error`;case`Unauthorized`:case`AuthenticationRequired`:return`authentication_error`;case`Forbidden`:case`AccessDenied`:return`authorization_error`;case`TooManyRequests`:case`RateLimitExceeded`:return`throttling_error`;case`InternalError`:case`ServiceUnavailable`:case`BackendError`:return`server_error`;default:if(typeof t==`number`){if(t>=500)return`server_error`;if(t===429)return`throttling_error`;if(t===403)return`authorization_error`;if(t===401)return`authentication_error`;if(t>=400)return`client_error`}return null}},Jn=d(`gcs`,X,qn),Yn=e.Layer.mergeAll(Kn),Xn=(e,t)=>B(X,e,t),Zn=(e,t)=>V(X,e,t),Qn=H,$n=(e,t,n,r)=>U(X,e,t,n,r),er=(e,t)=>n=>w(e,`gcs`,t)(n),tr=L.bind(null,`gcs`),nr=I.bind(null,`gcs`),rr=R.bind(null,`gcs`),ir=F,{uploadRequestsTotal:ar,uploadPartsTotal:or,uploadSuccessTotal:sr,uploadErrorsTotal:cr,apiCallsTotal:lr,uploadDurationHistogram:ur,partUploadDurationHistogram:dr,fileSizeHistogram:fr,partSizeHistogram:pr,activeUploadsGauge:mr,uploadThroughputGauge:hr,uploadLatencySummary:gr}=X,_r=`s3`,Z=z(`s3`),vr=C(`s3`),yr=e=>{if(!e||typeof e!=`object`)return null;let t=`code`in e?e.code:void 0;if(!t)return null;switch(t){case`NoSuchKey`:case`NoSuchBucket`:case`NoSuchUpload`:return`client_error`;case`BucketAlreadyExists`:case`BucketNotEmpty`:return`client_error`;case`InvalidBucketName`:case`InvalidPart`:case`InvalidPartOrder`:return`client_error`;case`EntityTooSmall`:case`EntityTooLarge`:return`client_error`;case`ExpiredToken`:case`TokenRefreshRequired`:return`authentication_error`;case`RequestTimeTooSkewed`:case`SlowDown`:return`throttling_error`;default:return null}},br=d(`s3`,Z,yr),xr=e.Layer.mergeAll(vr),Sr=(e,t)=>B(Z,e,t),Cr=(e,t)=>V(Z,e,t),wr=H,Tr=(e,t,n,r)=>U(Z,e,t,n,r),Er=(e,t)=>n=>w(e,`s3`,t)(n),Dr=L.bind(null,`s3`),Or=I.bind(null,`s3`),kr=R.bind(null,`s3`),Ar=F,{uploadRequestsTotal:jr,uploadPartsTotal:Mr,uploadSuccessTotal:Nr,uploadErrorsTotal:Pr,apiCallsTotal:Fr,uploadDurationHistogram:Ir,partUploadDurationHistogram:Lr,fileSizeHistogram:Rr,partSizeHistogram:zr,activeUploadsGauge:Br,uploadThroughputGauge:Vr,uploadLatencySummary:Hr}=Z,Q=e=>{if(!e||typeof e!=`object`)return`unknown_error`;let t=`code`in e?e.code:void 0,n=`name`in e?e.name:void 0,r=e instanceof Error?e.message.toLowerCase():``;return t===`ABORTED`||n===`AbortError`||r.includes(`abort`)?`abort_error`:t===`FILE_TOO_LARGE`||t===`LIMIT_FILE_SIZE`||t===`RequestEntityTooLarge`||r.includes(`too large`)||r.includes(`size limit`)||r.includes(`max size`)?`size_limit_error`:t===`INVALID_FILE`||t===`INVALID_METADATA`||t===`VALIDATION_ERROR`||r.includes(`validation`)||r.includes(`invalid`)?`validation_error`:t===`NetworkError`||t===`ECONNRESET`||t===`ENOTFOUND`||t===`ETIMEDOUT`||r.includes(`network`)||r.includes(`timeout`)?`network_error`:t===`UNAUTHORIZED`||t===`AuthenticationFailed`||n===`AuthenticationError`||r.includes(`authentication`)||r.includes(`unauthorized`)?`authentication_error`:t===`FORBIDDEN`||t===`AccessDenied`||n===`AuthorizationError`||r.includes(`forbidden`)||r.includes(`permission`)?`authorization_error`:t===`FILE_WRITE_ERROR`||t===`STORAGE_ERROR`||r.includes(`storage`)||r.includes(`write error`)?`storage_error`:`unknown_error`},Ur=(t,n,r,i={})=>e.Effect.gen(function*(){let a=Q(r);yield*t.uploadFailedTotal.pipe(e.Metric.tagged(`operation`,n),e.Metric.tagged(`error_category`,a))(e.Effect.succeed(1));let o={operation:n,error_category:a,error_type:typeof r,error_message:r instanceof Error?r.message:String(r),error_code:r&&typeof r==`object`&&`code`in r?String(r.code):void 0,error_name:r&&typeof r==`object`&&`name`in r?String(r.name):void 0,...i};yield*e.Effect.logError(`Upload ${n} failed`).pipe(e.Effect.annotateLogs(o))}),Wr=e=>t=>{if(e){let n=e(t);if(n!==null)return n}return Q(t)},$=()=>({uploadCreatedTotal:e.Metric.counter(`upload_created_total`,{description:`Total number of uploads created`}),uploadCompletedTotal:e.Metric.counter(`upload_completed_total`,{description:`Total number of uploads completed successfully`}),uploadFailedTotal:e.Metric.counter(`upload_failed_total`,{description:`Total number of uploads that failed`}),chunkUploadedTotal:e.Metric.counter(`chunk_uploaded_total`,{description:`Total number of chunks uploaded`}),uploadFromUrlTotal:e.Metric.counter(`upload_from_url_total`,{description:`Total number of URL-based uploads`}),uploadFromUrlSuccessTotal:e.Metric.counter(`upload_from_url_success_total`,{description:`Total number of successful URL-based uploads`}),uploadFromUrlFailedTotal:e.Metric.counter(`upload_from_url_failed_total`,{description:`Total number of failed URL-based uploads`}),uploadDurationHistogram:e.Metric.histogram(`upload_duration_seconds`,e.MetricBoundaries.exponential({start:.01,factor:2,count:20}),`Duration of complete upload operations in seconds`),chunkUploadDurationHistogram:e.Metric.histogram(`chunk_upload_duration_seconds`,e.MetricBoundaries.exponential({start:.001,factor:2,count:15}),`Duration of individual chunk uploads in seconds`),uploadFileSizeHistogram:e.Metric.histogram(`upload_file_size_bytes`,e.MetricBoundaries.exponential({start:1024,factor:2,count:25}),`Size of uploaded files in bytes`),chunkSizeHistogram:e.Metric.histogram(`chunk_size_bytes`,e.MetricBoundaries.linear({start:262144,width:262144,count:20}),`Size of uploaded chunks in bytes`),activeUploadsGauge:e.Metric.gauge(`active_uploads`,{description:`Number of currently active uploads`}),uploadThroughputGauge:e.Metric.gauge(`upload_throughput_bytes_per_second`,{description:`Current upload throughput in bytes per second`}),uploadLatencySummary:e.Metric.summary({name:`upload_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Upload operation latency percentiles`}),chunkLatencySummary:e.Metric.summary({name:`chunk_latency_seconds`,maxAge:`10 minutes`,maxSize:1e3,error:.01,quantiles:[.5,.9,.95,.99],description:`Chunk upload latency percentiles`})}),Gr=$(),Kr=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(A,{serviceName:t,enabled:!0,metrics:{uploadCreated:e.Effect.succeed(n.uploadCreatedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadCompleted:e.Effect.succeed(n.uploadCompletedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),uploadFailed:e.Effect.succeed(n.uploadFailedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t))),chunkUploaded:e.Effect.succeed(n.chunkUploadedTotal).pipe(e.Effect.flatMap(t=>e.Metric.increment(t)))}})},qr=Kr(),Jr=N(!1),Yr=e.Effect.gen(function*(){return(yield*A).metrics}),Xr=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.uploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`upload-operation`))},Zr=t=>{let n=$();return e.Effect.gen(function*(){let r=Date.now(),i=yield*t,a=(Date.now()-r)/1e3;return yield*e.Metric.update(n.chunkUploadDurationHistogram,a),i}).pipe(e.Effect.withSpan(`chunk-upload`))},Qr=e.Layer.succeed(A,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),$r=()=>$(),ei=()=>{let e=$r(),t=[`uploadCreatedTotal`,`uploadCompletedTotal`,`uploadFailedTotal`,`chunkUploadedTotal`,`uploadFromUrlTotal`,`uploadFromUrlSuccessTotal`,`uploadFromUrlFailedTotal`,`uploadDurationHistogram`,`chunkUploadDurationHistogram`,`uploadFileSizeHistogram`,`chunkSizeHistogram`,`activeUploadsGauge`,`uploadThroughputGauge`,`uploadLatencySummary`,`chunkLatencySummary`].filter(t=>!(t in e));if(t.length>0)throw Error(`Missing required metrics: ${t.join(`, `)}`);return!0},ti=(t,n)=>r=>r.pipe(e.Effect.withSpan(`upload-${t}`,{attributes:{"upload.operation":t,...n}})),ni=t=>e.Effect.annotateCurrentSpan({"upload.id":t.uploadId??`unknown`,"upload.file_name":t.fileName??`unknown`,"upload.file_size":t.fileSize?.toString()??`0`,"upload.storage_id":t.storageId??`unknown`,"upload.mime_type":t.mimeType??`unknown`}),ri=t=>e.Effect.annotateCurrentSpan({"chunk.upload_id":t.uploadId,"chunk.size":t.chunkSize.toString(),"chunk.offset":t.offset.toString(),"chunk.total_size":t.totalSize?.toString()??`0`,"chunk.progress":t.totalSize&&t.totalSize>0?(t.offset/t.totalSize*100).toFixed(2):`0`});exports.AzureObservabilityLayer=Zt,exports.AzureTracingLayer=Jt,Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return i.BatchLogRecordProcessor}}),exports.FilesystemObservabilityLayer=Cn,exports.FilesystemTracingLayer=bn,exports.FlowObservability=j,exports.FlowObservabilityDisabled=ot,exports.FlowObservabilityLive=Ot,exports.GCSObservabilityLayer=Yn,exports.GCSTracingLayer=Kn,Object.defineProperty(exports,`LoggerProvider`,{enumerable:!0,get:function(){return i.LoggerProvider}}),Object.defineProperty(exports,`MeterProvider`,{enumerable:!0,get:function(){return a.MeterProvider}}),exports.MetricsService=Kt,exports.NoOpMetricsServiceLive=qt,exports.NodeSdkLive=Fe,Object.defineProperty(exports,`OTLPLogExporter`,{enumerable:!0,get:function(){return t.OTLPLogExporter}}),Object.defineProperty(exports,`OTLPMetricExporter`,{enumerable:!0,get:function(){return n.OTLPMetricExporter}}),exports.Observability=O,exports.ObservabilityDisabled=rt,exports.OtelLogger=g,exports.OtelMeter=x,exports.OtlpAutoSdkLive=et,exports.OtlpFullObservabilityNodeSdkLive=Je,exports.OtlpFullObservabilityWebSdkLive=Xe,exports.OtlpFullObservabilityWorkersSdkLive=Qe,exports.OtlpLogsNodeSdkLive=de,exports.OtlpLogsWebSdkLive=pe,exports.OtlpLogsWorkersSdkLive=he,exports.OtlpMetricsNodeSdkLive=Ce,exports.OtlpMetricsWebSdkLive=Te,exports.OtlpMetricsWorkersSdkLive=De,exports.OtlpNodeSdkLive=Le,exports.OtlpWebSdkLive=ze,exports.OtlpWorkersSdkLive=Ve,Object.defineProperty(exports,`PeriodicExportingMetricReader`,{enumerable:!0,get:function(){return a.PeriodicExportingMetricReader}}),exports.S3ObservabilityLayer=xr,exports.S3TracingLayer=vr,Object.defineProperty(exports,`SeverityNumber`,{enumerable:!0,get:function(){return s.SeverityNumber}}),exports.StorageObservability=k,exports.StorageObservabilityDisabled=it,exports.TracingService=Me,exports.UploadObservability=A,exports.UploadObservabilityDisabled=at,exports.UploadObservabilityLive=qr,exports.UploadObservabilityTest=Qr,exports.WebSdkLive=Pe,exports.WorkersSdkLive=Ie,exports.annotateCircuitBreakerStateChange=Gt,exports.azureActiveUploadsGauge=_n,exports.azureApiCallsTotal=fn,exports.azureFileSizeHistogram=hn,exports.azureMetrics=q,exports.azurePartSizeHistogram=gn,exports.azurePartUploadDurationHistogram=mn,exports.azureUploadDurationHistogram=pn,exports.azureUploadErrorsTotal=dn,exports.azureUploadLatencySummary=yn,exports.azureUploadPartsTotal=ln,exports.azureUploadRequestsTotal=cn,exports.azureUploadSuccessTotal=un,exports.azureUploadThroughputGauge=vn,exports.captureMetrics=gt,exports.captureTraceContext=Ue,exports.captureTraceContextEffect=We,exports.classifyFlowError=G,exports.classifyStorageError=u,exports.classifyUploadError=Q,exports.createExternalSpan=Ge,exports.createFlowMetrics=W,exports.createGauge=je,exports.createOtlpAutoSdkLayer=tt,exports.createOtlpEffectLogger=_e,exports.createOtlpFullObservabilityNodeSdkLayer=Ye,exports.createOtlpFullObservabilityWebSdkLayer=Ze,exports.createOtlpFullObservabilityWorkersSdkLayer=$e,exports.createOtlpLogExporter=ae,exports.createOtlpLoggerProvider=le,exports.createOtlpLogsNodeSdkLayer=fe,exports.createOtlpLogsWebSdkLayer=me,exports.createOtlpLogsWorkersSdkLayer=ge,exports.createOtlpMeterProvider=se,exports.createOtlpMetricExporter=re,exports.createOtlpMetricsNodeSdkLayer=we,exports.createOtlpMetricsWebSdkLayer=Ee,exports.createOtlpMetricsWorkersSdkLayer=Oe,exports.createOtlpNodeSdkLayer=Re,exports.createOtlpTraceExporter=ne,exports.createOtlpWebSdkLayer=Be,exports.createOtlpWorkersSdkLayer=He,exports.createStorageErrorClassifier=ee,exports.createStorageErrorTracker=d,exports.createStorageMetrics=z,exports.createStorageTracingLayer=C,exports.createTestFixture=vt,exports.createTracingLayer=Ne,exports.createUploadEngineMetrics=$,exports.createUploadErrorClassifier=Wr,exports.createUploadGauges=dt,exports.createUploadHistograms=ut,exports.createUploadMetrics=lt,exports.createUploadSummaries=ft,exports.detectEnvironment=D,exports.emitLog=b,exports.filesystemActiveUploadsGauge=Hn,exports.filesystemApiCallsTotal=Ln,exports.filesystemFileSizeHistogram=Bn,exports.filesystemMetrics=Y,exports.filesystemPartSizeHistogram=Vn,exports.filesystemPartUploadDurationHistogram=zn,exports.filesystemUploadDurationHistogram=Rn,exports.filesystemUploadErrorsTotal=In,exports.filesystemUploadLatencySummary=Wn,exports.filesystemUploadPartsTotal=Pn,exports.filesystemUploadRequestsTotal=Nn,exports.filesystemUploadSuccessTotal=Fn,exports.filesystemUploadThroughputGauge=Un,exports.flowMetrics=wt,exports.gcsActiveUploadsGauge=mr,exports.gcsApiCallsTotal=lr,exports.gcsFileSizeHistogram=fr,exports.gcsMetrics=X,exports.gcsPartSizeHistogram=pr,exports.gcsPartUploadDurationHistogram=dr,exports.gcsUploadDurationHistogram=ur,exports.gcsUploadErrorsTotal=cr,exports.gcsUploadLatencySummary=gr,exports.gcsUploadPartsTotal=or,exports.gcsUploadRequestsTotal=ar,exports.gcsUploadSuccessTotal=sr,exports.gcsUploadThroughputGauge=hr,exports.getFlowMetrics=At,exports.getLogsExportInterval=ce,exports.getMetricsExportInterval=oe,exports.getOtlpEndpoint=p,exports.getServiceName=h,exports.getTestMetrics=$r,exports.getTraceContext=v,exports.getUploadMetrics=Yr,exports.hasActiveTraceContext=qe,exports.isObservabilityEnabled=st,exports.isOtlpExportEnabled=m,exports.logAzureContext=sn,exports.logAzureOperation=rn,exports.logAzureUploadCompletion=on,exports.logAzureUploadProgress=an,exports.logDebug=ve,exports.logError=xe,exports.logFatal=Se,exports.logFilesystemContext=Mn,exports.logFilesystemOperation=kn,exports.logFilesystemUploadCompletion=jn,exports.logFilesystemUploadProgress=An,exports.logGCSContext=ir,exports.logGCSOperation=tr,exports.logGCSUploadCompletion=rr,exports.logGCSUploadProgress=nr,exports.logInfo=ye,exports.logS3Context=Ar,exports.logS3Operation=Dr,exports.logS3UploadCompletion=kr,exports.logS3UploadProgress=Or,exports.logStorageOperation=L,exports.logUploadCompletion=R,exports.logUploadProgress=I,exports.logWarn=be,exports.logWithContext=F,exports.makeFlowObservabilityLayer=P,exports.makeFlowObservabilityLive=Dt,exports.makeObservabilityLayer=nt,exports.makeStorageObservabilityLayer=M,exports.makeTestFlowObservability=ht,exports.makeTestFlowObservabilityUtil=Ft,exports.makeTestStorageObservability=pt,exports.makeTestUploadObservability=mt,exports.makeUploadObservabilityLayer=N,exports.makeUploadObservabilityLive=Kr,exports.mapLogLevelToSeverity=_,exports.parseOtlpHeaders=f,exports.parseResourceAttributes=ie,exports.recordCounter=ke,exports.recordHistogram=Ae,exports.runWithTestFlowObservability=It,exports.runWithTestObservability=yt,exports.s3ActiveUploadsGauge=Br,exports.s3ApiCallsTotal=Fr,exports.s3FileSizeHistogram=Rr,exports.s3Metrics=Z,exports.s3PartSizeHistogram=zr,exports.s3PartUploadDurationHistogram=Lr,exports.s3UploadDurationHistogram=Ir,exports.s3UploadErrorsTotal=Pr,exports.s3UploadLatencySummary=Hr,exports.s3UploadPartsTotal=Mr,exports.s3UploadRequestsTotal=jr,exports.s3UploadSuccessTotal=Nr,exports.s3UploadThroughputGauge=Vr,exports.severityToText=ue,exports.trackActiveFlow=Nt,exports.trackActiveNode=Pt,exports.trackAzureError=Xt,exports.trackFileSize=bt,exports.trackFilesystemError=Sn,exports.trackFlowError=Tt,exports.trackGCSError=Jn,exports.trackNodeError=Et,exports.trackPartSize=xt,exports.trackS3Error=br,exports.trackStorageError=te,exports.trackUploadError=Ur,exports.uploadEngineMetrics=Gr,exports.validateMetricsExist=ei,exports.whenObservabilityEnabled=ct,exports.withActiveUploadTracking=St,exports.withApiMetrics=V,exports.withAzureApiMetrics=$t,exports.withAzureOperationMetrics=tn,exports.withAzureSpan=nn,exports.withAzureTimingMetrics=en,exports.withAzureUploadMetrics=Qt,exports.withChunkContext=ri,exports.withChunkDuration=Zr,exports.withCircuitBreakerContext=Wt,exports.withCircuitBreakerSpan=Ut,exports.withExecutionContext=Bt,exports.withFilesystemApiMetrics=Tn,exports.withFilesystemOperationMetrics=Dn,exports.withFilesystemSpan=On,exports.withFilesystemTimingMetrics=En,exports.withFilesystemUploadMetrics=wn,exports.withFlowContext=Rt,exports.withFlowDuration=jt,exports.withFlowSpan=Lt,exports.withGCSApiMetrics=Zn,exports.withGCSOperationMetrics=$n,exports.withGCSSpan=er,exports.withGCSTimingMetrics=Qn,exports.withGCSUploadMetrics=Xn,exports.withMetricTracking=_t,exports.withNodeContext=zt,exports.withNodeDuration=Mt,exports.withOperationContext=Ht,exports.withOperationSpan=Vt,exports.withParentContext=Ke,exports.withS3ApiMetrics=Cr,exports.withS3OperationMetrics=Tr,exports.withS3Span=Er,exports.withS3TimingMetrics=wr,exports.withS3UploadMetrics=Sr,exports.withStorageOperationMetrics=U,exports.withStorageSpan=w,exports.withThroughputTracking=Ct,exports.withTimingMetrics=H,exports.withUploadContext=ni,exports.withUploadDuration=Xr,exports.withUploadMetrics=B,exports.withUploadSpan=ti;
package/dist/index.d.cts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { Context, Effect, Layer, Logger, Metric, Option, Tracer } from "effect";
2
- import * as effect_MetricKeyType19 from "effect/MetricKeyType";
3
- import * as effect_MetricState19 from "effect/MetricState";
2
+ import * as effect_MetricKeyType51 from "effect/MetricKeyType";
3
+ import * as effect_MetricState51 from "effect/MetricState";
4
4
  import { OTLPLogExporter, OTLPLogExporter as OTLPLogExporter$1 } from "@opentelemetry/exporter-logs-otlp-http";
5
5
  import { OTLPMetricExporter, OTLPMetricExporter as OTLPMetricExporter$1 } from "@opentelemetry/exporter-metrics-otlp-http";
6
6
  import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
7
7
  import { BatchLogRecordProcessor, LoggerProvider, LoggerProvider as LoggerProvider$1 } from "@opentelemetry/sdk-logs";
8
8
  import { MeterProvider, MeterProvider as MeterProvider$1, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
9
- import * as _effect_opentelemetry_Resource7 from "@effect/opentelemetry/Resource";
9
+ import * as _effect_opentelemetry_Resource0 from "@effect/opentelemetry/Resource";
10
10
  import { Meter } from "@opentelemetry/api";
11
11
  import { Logger as Logger$1, SeverityNumber, SeverityNumber as SeverityNumber$1 } from "@opentelemetry/api-logs";
12
12
  import * as effect_Metric64 from "effect/Metric";
@@ -20,10 +20,10 @@ declare const createUploadMetrics: (storageType: string) => {
20
20
  apiCallsTotal: Metric.Metric.Counter<number>;
21
21
  };
22
22
  declare const createUploadHistograms: (storageType: string) => {
23
- uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
24
- partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
25
- fileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
26
- partSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
23
+ uploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
24
+ partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
25
+ fileSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
26
+ partSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
27
27
  };
28
28
  declare const createUploadGauges: (storageType: string) => {
29
29
  activeUploadsGauge: Metric.Metric.Gauge<number>;
@@ -36,10 +36,10 @@ declare const createStorageMetrics: (storageType: string) => {
36
36
  uploadLatencySummary: Metric.Metric.Summary<number>;
37
37
  activeUploadsGauge: Metric.Metric.Gauge<number>;
38
38
  uploadThroughputGauge: Metric.Metric.Gauge<number>;
39
- uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
40
- partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
41
- fileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
42
- partSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
39
+ uploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
40
+ partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
41
+ fileSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
42
+ partSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
43
43
  uploadRequestsTotal: Metric.Metric.Counter<number>;
44
44
  uploadPartsTotal: Metric.Metric.Counter<number>;
45
45
  uploadSuccessTotal: Metric.Metric.Counter<number>;
@@ -51,7 +51,7 @@ type StorageMetrics = ReturnType<typeof createStorageMetrics>;
51
51
  //#region src/core/errors.d.ts
52
52
  type StorageErrorCategory = "network_error" | "authentication_error" | "authorization_error" | "throttling_error" | "server_error" | "client_error" | "unknown_error";
53
53
  declare const classifyStorageError: (error: unknown) => StorageErrorCategory;
54
- declare const createStorageErrorClassifier: (storageType: string, customErrorMapping?: (error: unknown) => StorageErrorCategory | null) => (error: unknown) => StorageErrorCategory;
54
+ declare const createStorageErrorClassifier: (_storageType: string, customErrorMapping?: (error: unknown) => StorageErrorCategory | null) => (error: unknown) => StorageErrorCategory;
55
55
  declare const trackStorageError: (storageType: string, metrics: StorageMetrics, operation: string, error: unknown, context?: Record<string, unknown>, errorClassifier?: (error: unknown) => StorageErrorCategory) => Effect.Effect<void, never, never>;
56
56
  declare const createStorageErrorTracker: (storageType: string, metrics: StorageMetrics, customErrorClassifier?: (error: unknown) => StorageErrorCategory | null) => (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
57
57
  //#endregion
@@ -649,9 +649,9 @@ declare const createStorageTracingLayer: (storageType: string) => Layer.Layer<{
649
649
  serviceName: string;
650
650
  }, never, never>;
651
651
  declare const withStorageSpan: <A, E, R>(operation: string, storageType: string, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>;
652
- declare const WebSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
653
- declare const NodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
654
- declare const WorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
652
+ declare const WebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
653
+ declare const NodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
654
+ declare const WorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
655
655
  /**
656
656
  * Configuration options for OTLP SDK layers.
657
657
  */
@@ -692,7 +692,7 @@ interface OtlpSdkConfig {
692
692
  * // OTEL_SERVICE_NAME=my-upload-service
693
693
  * ```
694
694
  */
695
- declare const OtlpNodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
695
+ declare const OtlpNodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
696
696
  /**
697
697
  * Creates a customized OTLP Node.js SDK Layer.
698
698
  *
@@ -716,7 +716,7 @@ declare const OtlpNodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resou
716
716
  * const program = myEffect.pipe(Effect.provide(customSdk));
717
717
  * ```
718
718
  */
719
- declare function createOtlpNodeSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
719
+ declare function createOtlpNodeSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
720
720
  /**
721
721
  * Browser OTLP SDK Layer for production use.
722
722
  *
@@ -730,14 +730,14 @@ declare function createOtlpNodeSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_ef
730
730
  * const program = myEffect.pipe(Effect.provide(OtlpWebSdkLive));
731
731
  * ```
732
732
  */
733
- declare const OtlpWebSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
733
+ declare const OtlpWebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
734
734
  /**
735
735
  * Creates a customized OTLP Web SDK Layer.
736
736
  *
737
737
  * @param config - Custom configuration options
738
738
  * @returns Configured Effect Layer for browser environments
739
739
  */
740
- declare function createOtlpWebSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
740
+ declare function createOtlpWebSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
741
741
  /**
742
742
  * Cloudflare Workers OTLP SDK Layer for production use.
743
743
  *
@@ -758,14 +758,14 @@ declare function createOtlpWebSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_eff
758
758
  * };
759
759
  * ```
760
760
  */
761
- declare const OtlpWorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
761
+ declare const OtlpWorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
762
762
  /**
763
763
  * Creates a customized OTLP Workers SDK Layer.
764
764
  *
765
765
  * @param config - Custom configuration options
766
766
  * @returns Configured Effect Layer for Cloudflare Workers
767
767
  */
768
- declare function createOtlpWorkersSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource7.Resource, never, never>;
768
+ declare function createOtlpWorkersSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
769
769
  /**
770
770
  * @deprecated Use `captureTraceContextEffect` instead. This synchronous function
771
771
  * uses OpenTelemetry's `trace.getActiveSpan()` which may not be synchronized
@@ -905,7 +905,7 @@ interface FullObservabilityConfig {
905
905
  * }).pipe(Effect.provide(OtlpFullObservabilityNodeSdkLive));
906
906
  * ```
907
907
  */
908
- declare const OtlpFullObservabilityNodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
908
+ declare const OtlpFullObservabilityNodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
909
909
  /**
910
910
  * Creates a customized Full Observability Node.js SDK Layer.
911
911
  *
@@ -922,7 +922,7 @@ declare const OtlpFullObservabilityNodeSdkLive: Layer.Layer<_effect_opentelemetr
922
922
  * });
923
923
  * ```
924
924
  */
925
- declare function createOtlpFullObservabilityNodeSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
925
+ declare function createOtlpFullObservabilityNodeSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
926
926
  /**
927
927
  * Browser Full Observability SDK Layer.
928
928
  *
@@ -935,14 +935,14 @@ declare function createOtlpFullObservabilityNodeSdkLayer(config?: FullObservabil
935
935
  * const program = myEffect.pipe(Effect.provide(OtlpFullObservabilityWebSdkLive));
936
936
  * ```
937
937
  */
938
- declare const OtlpFullObservabilityWebSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
938
+ declare const OtlpFullObservabilityWebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
939
939
  /**
940
940
  * Creates a customized Full Observability Web SDK Layer.
941
941
  *
942
942
  * @param config - Configuration for all three pillars
943
943
  * @returns Combined Effect Layer for browser environments
944
944
  */
945
- declare function createOtlpFullObservabilityWebSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
945
+ declare function createOtlpFullObservabilityWebSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
946
946
  /**
947
947
  * Cloudflare Workers Full Observability SDK Layer.
948
948
  *
@@ -962,14 +962,14 @@ declare function createOtlpFullObservabilityWebSdkLayer(config?: FullObservabili
962
962
  * };
963
963
  * ```
964
964
  */
965
- declare const OtlpFullObservabilityWorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
965
+ declare const OtlpFullObservabilityWorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
966
966
  /**
967
967
  * Creates a customized Full Observability Workers SDK Layer.
968
968
  *
969
969
  * @param config - Configuration for all three pillars
970
970
  * @returns Combined Effect Layer for Cloudflare Workers
971
971
  */
972
- declare function createOtlpFullObservabilityWorkersSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
972
+ declare function createOtlpFullObservabilityWorkersSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
973
973
  /**
974
974
  * Runtime environment types.
975
975
  */
@@ -993,14 +993,14 @@ declare function detectEnvironment(): Environment;
993
993
  * const program = myEffect.pipe(Effect.provide(OtlpAutoSdkLive));
994
994
  * ```
995
995
  */
996
- declare const OtlpAutoSdkLive: Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
996
+ declare const OtlpAutoSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
997
997
  /**
998
998
  * Creates an auto-detecting Full Observability SDK Layer with custom config.
999
999
  *
1000
1000
  * @param config - Configuration for all three pillars
1001
1001
  * @returns Auto-detecting combined Effect Layer
1002
1002
  */
1003
- declare function createOtlpAutoSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource7.Resource | OtelMeter | OtelLogger, never, never>;
1003
+ declare function createOtlpAutoSdkLayer(config?: FullObservabilityConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource | OtelMeter | OtelLogger, never, never>;
1004
1004
  //#endregion
1005
1005
  //#region src/core/layers.d.ts
1006
1006
  /**
@@ -1238,10 +1238,10 @@ declare const createFlowMetrics: () => {
1238
1238
  nodeSuccessTotal: Metric.Metric.Counter<number>;
1239
1239
  nodeFailedTotal: Metric.Metric.Counter<number>;
1240
1240
  nodeSkippedTotal: Metric.Metric.Counter<number>;
1241
- flowDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1242
- nodeDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1243
- flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1244
- parallelNodesHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1241
+ flowDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1242
+ nodeDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1243
+ flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1244
+ parallelNodesHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1245
1245
  activeFlowsGauge: Metric.Metric.Gauge<number>;
1246
1246
  activeNodesGauge: Metric.Metric.Gauge<number>;
1247
1247
  pausedFlowsGauge: Metric.Metric.Gauge<number>;
@@ -1277,10 +1277,10 @@ declare const flowMetrics: {
1277
1277
  nodeSuccessTotal: Metric.Metric.Counter<number>;
1278
1278
  nodeFailedTotal: Metric.Metric.Counter<number>;
1279
1279
  nodeSkippedTotal: Metric.Metric.Counter<number>;
1280
- flowDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1281
- nodeDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1282
- flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1283
- parallelNodesHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1280
+ flowDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1281
+ nodeDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1282
+ flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1283
+ parallelNodesHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1284
1284
  activeFlowsGauge: Metric.Metric.Gauge<number>;
1285
1285
  activeNodesGauge: Metric.Metric.Gauge<number>;
1286
1286
  pausedFlowsGauge: Metric.Metric.Gauge<number>;
@@ -1436,10 +1436,10 @@ declare const azureMetrics: {
1436
1436
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1437
1437
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1438
1438
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1439
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1440
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1441
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1442
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1439
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1440
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1441
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1442
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1443
1443
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1444
1444
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1445
1445
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1474,7 +1474,7 @@ declare const logAzureUploadCompletion: (uploadId: string, metrics: {
1474
1474
  retryCount?: number;
1475
1475
  }) => Effect.Effect<void, never, never>;
1476
1476
  declare const logAzureContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
1477
- declare const azureUploadRequestsTotal: effect_Metric64.Metric.Counter<number>, azureUploadPartsTotal: effect_Metric64.Metric.Counter<number>, azureUploadSuccessTotal: effect_Metric64.Metric.Counter<number>, azureUploadErrorsTotal: effect_Metric64.Metric.Counter<number>, azureApiCallsTotal: effect_Metric64.Metric.Counter<number>, azureUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azurePartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azureFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azurePartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, azureActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, azureUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, azureUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1477
+ declare const azureUploadRequestsTotal: effect_Metric64.Metric.Counter<number>, azureUploadPartsTotal: effect_Metric64.Metric.Counter<number>, azureUploadSuccessTotal: effect_Metric64.Metric.Counter<number>, azureUploadErrorsTotal: effect_Metric64.Metric.Counter<number>, azureApiCallsTotal: effect_Metric64.Metric.Counter<number>, azureUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, azurePartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, azureFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, azurePartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, azureActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, azureUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, azureUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1478
1478
  type AzureMetrics = StorageMetrics;
1479
1479
  //#endregion
1480
1480
  //#region src/storage/filesystem.d.ts
@@ -1482,10 +1482,10 @@ declare const filesystemMetrics: {
1482
1482
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1483
1483
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1484
1484
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1485
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1486
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1487
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1488
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1485
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1486
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1487
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1488
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1489
1489
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1490
1490
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1491
1491
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1520,7 +1520,7 @@ declare const logFilesystemUploadCompletion: (uploadId: string, metrics: {
1520
1520
  retryCount?: number;
1521
1521
  }) => Effect.Effect<void, never, never>;
1522
1522
  declare const logFilesystemContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
1523
- declare const filesystemUploadRequestsTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadPartsTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadSuccessTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadErrorsTotal: effect_Metric64.Metric.Counter<number>, filesystemApiCallsTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemPartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemPartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, filesystemActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, filesystemUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, filesystemUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1523
+ declare const filesystemUploadRequestsTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadPartsTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadSuccessTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadErrorsTotal: effect_Metric64.Metric.Counter<number>, filesystemApiCallsTotal: effect_Metric64.Metric.Counter<number>, filesystemUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, filesystemPartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, filesystemFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, filesystemPartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, filesystemActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, filesystemUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, filesystemUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1524
1524
  type FilesystemMetrics = StorageMetrics;
1525
1525
  //#endregion
1526
1526
  //#region src/storage/gcs.d.ts
@@ -1528,10 +1528,10 @@ declare const gcsMetrics: {
1528
1528
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1529
1529
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1530
1530
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1531
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1532
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1533
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1534
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1531
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1532
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1533
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1534
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1535
1535
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1536
1536
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1537
1537
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1566,7 +1566,7 @@ declare const logGCSUploadCompletion: (uploadId: string, metrics: {
1566
1566
  retryCount?: number;
1567
1567
  }) => Effect.Effect<void, never, never>;
1568
1568
  declare const logGCSContext: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
1569
- declare const gcsUploadRequestsTotal: effect_Metric64.Metric.Counter<number>, gcsUploadPartsTotal: effect_Metric64.Metric.Counter<number>, gcsUploadSuccessTotal: effect_Metric64.Metric.Counter<number>, gcsUploadErrorsTotal: effect_Metric64.Metric.Counter<number>, gcsApiCallsTotal: effect_Metric64.Metric.Counter<number>, gcsUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsPartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsPartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, gcsActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, gcsUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, gcsUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1569
+ declare const gcsUploadRequestsTotal: effect_Metric64.Metric.Counter<number>, gcsUploadPartsTotal: effect_Metric64.Metric.Counter<number>, gcsUploadSuccessTotal: effect_Metric64.Metric.Counter<number>, gcsUploadErrorsTotal: effect_Metric64.Metric.Counter<number>, gcsApiCallsTotal: effect_Metric64.Metric.Counter<number>, gcsUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, gcsPartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, gcsFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, gcsPartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, gcsActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, gcsUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, gcsUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1570
1570
  type GCSMetrics = StorageMetrics;
1571
1571
  //#endregion
1572
1572
  //#region src/storage/s3.d.ts
@@ -1574,10 +1574,10 @@ declare const s3Metrics: {
1574
1574
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1575
1575
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1576
1576
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1577
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1578
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1579
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1580
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1577
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1578
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1579
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1580
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1581
1581
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1582
1582
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1583
1583
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1612,7 +1612,7 @@ declare const logS3UploadCompletion: (uploadId: string, metrics: {
1612
1612
  retryCount?: number;
1613
1613
  }) => Effect.Effect<void, never, never>;
1614
1614
  declare const logS3Context: (message: string, context: Record<string, unknown>) => Effect.Effect<void, never, never>;
1615
- declare const s3UploadRequestsTotal: effect_Metric64.Metric.Counter<number>, s3UploadPartsTotal: effect_Metric64.Metric.Counter<number>, s3UploadSuccessTotal: effect_Metric64.Metric.Counter<number>, s3UploadErrorsTotal: effect_Metric64.Metric.Counter<number>, s3ApiCallsTotal: effect_Metric64.Metric.Counter<number>, s3UploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3PartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3FileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3PartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>, s3ActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, s3UploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, s3UploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1615
+ declare const s3UploadRequestsTotal: effect_Metric64.Metric.Counter<number>, s3UploadPartsTotal: effect_Metric64.Metric.Counter<number>, s3UploadSuccessTotal: effect_Metric64.Metric.Counter<number>, s3UploadErrorsTotal: effect_Metric64.Metric.Counter<number>, s3ApiCallsTotal: effect_Metric64.Metric.Counter<number>, s3UploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, s3PartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, s3FileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, s3PartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>, s3ActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, s3UploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, s3UploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1616
1616
  type S3Metrics = StorageMetrics;
1617
1617
  //#endregion
1618
1618
  //#region src/upload/metrics.d.ts
@@ -1627,10 +1627,10 @@ declare const createUploadEngineMetrics: () => {
1627
1627
  uploadFromUrlTotal: Metric.Metric.Counter<number>;
1628
1628
  uploadFromUrlSuccessTotal: Metric.Metric.Counter<number>;
1629
1629
  uploadFromUrlFailedTotal: Metric.Metric.Counter<number>;
1630
- uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1631
- chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1632
- uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1633
- chunkSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1630
+ uploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1631
+ chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1632
+ uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1633
+ chunkSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1634
1634
  activeUploadsGauge: Metric.Metric.Gauge<number>;
1635
1635
  uploadThroughputGauge: Metric.Metric.Gauge<number>;
1636
1636
  uploadLatencySummary: Metric.Metric.Summary<number>;
@@ -1651,10 +1651,10 @@ declare const uploadEngineMetrics: {
1651
1651
  uploadFromUrlTotal: Metric.Metric.Counter<number>;
1652
1652
  uploadFromUrlSuccessTotal: Metric.Metric.Counter<number>;
1653
1653
  uploadFromUrlFailedTotal: Metric.Metric.Counter<number>;
1654
- uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1655
- chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1656
- uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1657
- chunkSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1654
+ uploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1655
+ chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1656
+ uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1657
+ chunkSizeHistogram: Metric.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1658
1658
  activeUploadsGauge: Metric.Metric.Gauge<number>;
1659
1659
  uploadThroughputGauge: Metric.Metric.Gauge<number>;
1660
1660
  uploadLatencySummary: Metric.Metric.Summary<number>;
@@ -1720,10 +1720,10 @@ declare const getTestMetrics: () => {
1720
1720
  uploadFromUrlTotal: effect_Metric64.Metric.Counter<number>;
1721
1721
  uploadFromUrlSuccessTotal: effect_Metric64.Metric.Counter<number>;
1722
1722
  uploadFromUrlFailedTotal: effect_Metric64.Metric.Counter<number>;
1723
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1724
- chunkUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1725
- uploadFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1726
- chunkSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1723
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1724
+ chunkUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1725
+ uploadFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1726
+ chunkSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType51.MetricKeyType.Histogram, number, effect_MetricState51.MetricState.Histogram>;
1727
1727
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1728
1728
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1729
1729
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;