@uploadista/observability 0.1.2 → 0.1.3-beta.10

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: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;
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=(e,t,n)=>r=>r.pipe(r.Effect.withSpan(`${t}-${e}`,{attributes:{"storage.type":t,operation:e,...n}})),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(e){return t=>{let n=t.Tracer.externalSpan({traceId:e.traceId,spanId:e.spanId,sampled:e.traceFlags===1});return t.pipe(t.Effect.provideService(t.Tracer.ParentSpan,n))}}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}),rt=(t,n,r=!0)=>e.Layer.succeed(k,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),M=(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}}),N=(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}}),it=nt(`uploadista-disabled`,!1),at=e=>rt(e,{},!1),ot=M(!1),st=N(!1),P=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(O);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),ct=e=>e.Effect.gen(function*(){if(yield*P){let t=yield*e;return e.Option.some(t)}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=e=>e.Effect.gen(function*(){let t=yield*e;return yield*e.Metric.snapshot,t}),_t=e=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let t=yield*e;return yield*e.Metric.snapshot,t}),vt=(e=`test-storage`)=>({storageObservability:pt(e),uploadObservability:mt(),flowObservability:ht()}),yt=(e,t=`test-storage`)=>{let n=vt(t);return e.pipe(e.Effect.provide(n.storageObservability),e.Effect.provide(n.uploadObservability),e.Effect.provide(n.flowObservability))},B=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.uploadRequestsTotal.pipe(n.Metric.tagged(`upload_id`,t))(n.Effect.succeed(1))),n.Effect.tapError(()=>e.uploadErrorsTotal.pipe(n.Metric.tagged(`upload_id`,t))(n.Effect.succeed(1))),n.Effect.tap(()=>e.uploadSuccessTotal.pipe(n.Metric.tagged(`upload_id`,t))(n.Effect.succeed(1)))),V=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.apiCallsTotal.pipe(n.Metric.tagged(`operation`,t))(n.Effect.succeed(1)))),H=(e,t)=>t.Effect.gen(function*(){let n=yield*t.Effect.sync(()=>Date.now()),r=yield*t,i=((yield*t.Effect.sync(()=>Date.now()))-n)/1e3;return yield*e(t.Effect.succeed(i)),r}),bt=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.fileSizeHistogram(n.Effect.succeed(t)))),xt=(e,t,n)=>n.pipe(n.Effect.tap(()=>e.partSizeHistogram(n.Effect.succeed(t)))),St=(e,t)=>t.pipe(t.Effect.tap(()=>e.activeUploadsGauge(t.Effect.succeed(1))),t.Effect.ensuring(e.activeUploadsGauge(t.Effect.succeed(-1)))),Ct=(e,t,n)=>n.Effect.gen(function*(){let r=yield*n.Effect.sync(()=>Date.now()),i=yield*n,a=((yield*n.Effect.sync(()=>Date.now()))-r)/1e3,o=a>0?t/a:0;return yield*e.uploadThroughputGauge(n.Effect.succeed(o)),i}),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();N(!1);const kt=e.Effect.gen(function*(){return(yield*j).metrics}),At=e=>{let t=W();return e.Effect.gen(function*(){let n=Date.now(),r=yield*e,i=(Date.now()-n)/1e3;return yield*e.Metric.update(t.flowDurationHistogram,i),yield*e.Metric.update(t.flowLatencySummary,i),r}).pipe(e.Effect.withSpan(`flow-execution`))},jt=(e,t,n,r)=>{let i=W(),a=r??t;return n.Effect.gen(function*(){let e=Date.now(),t=yield*n,r=(Date.now()-e)/1e3;return yield*n.Metric.update(i.nodeDurationHistogram,r),yield*n.Metric.update(i.nodeLatencySummary,r),t}).pipe(n.Effect.withSpan(`node-${a}`,{attributes:{"node.id":e,"node.type":t,"node.type_id":r??t}}))},Mt=e=>{let t=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(t.activeFlowsGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>e,()=>e.Metric.set(t.activeFlowsGauge,-1))})},Nt=e=>{let t=W();return e.Effect.gen(function*(){return yield*e.Metric.increment(t.activeNodesGauge),yield*e.Effect.acquireUseRelease(e.Effect.void,()=>e,()=>e.Metric.set(t.activeNodesGauge,-1))})},Pt=()=>{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)},Ft=e=>e.pipe(e.Effect.provide(Pt())),It=(e,t)=>n=>n.pipe(n.Effect.withSpan(`flow-${e}`,{attributes:{"flow.operation":e,...t}})),Lt=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`}),Rt=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`}),zt=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`}),Bt=(e,t,n)=>r=>r.pipe(r.Effect.withSpan(`${e}-${t}`,{attributes:{"operation.domain":e,"operation.name":t,...n}})),Vt=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`}),Ht=(e,t,n)=>r=>r.pipe(r.Effect.withSpan(`circuit-breaker-${e}`,{attributes:{"circuit_breaker.node_type":e,"circuit_breaker.state":t,...n}})),Ut=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`}),Wt=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 Gt=class extends e.Context.Tag(`MetricsService`)(){};const Kt=e.Layer.succeed(Gt,{recordUpload:(t,n)=>e.Effect.void}),K=`azure`,q=z(K),qt=C(K),Jt=d(K,q,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}}),Yt=e.Layer.mergeAll(qt),Xt=(e,t)=>B(q,e,t),Zt=(e,t)=>V(q,e,t),Qt=H,$t=(e,t,n,r)=>U(q,e,t,n,r),en=(e,t)=>n=>w(e,K,t)(n),tn=L.bind(null,K),nn=I.bind(null,K),rn=R.bind(null,K),an=F,{uploadRequestsTotal:on,uploadPartsTotal:sn,uploadSuccessTotal:cn,uploadErrorsTotal:ln,apiCallsTotal:un,uploadDurationHistogram:dn,partUploadDurationHistogram:fn,fileSizeHistogram:pn,partSizeHistogram:mn,activeUploadsGauge:hn,uploadThroughputGauge:gn,uploadLatencySummary:_n}=q,J=`filesystem`,Y=z(J),vn=C(J),yn=d(J,Y,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}}),bn=e.Layer.mergeAll(vn),xn=(e,t)=>B(Y,e,t),Sn=(e,t)=>V(Y,e,t),Cn=H,wn=(e,t,n,r)=>U(Y,e,t,n,r),Tn=(e,t)=>n=>w(e,J,t)(n),En=L.bind(null,J),Dn=I.bind(null,J),On=R.bind(null,J),kn=F,{uploadRequestsTotal:An,uploadPartsTotal:jn,uploadSuccessTotal:Mn,uploadErrorsTotal:Nn,apiCallsTotal:Pn,uploadDurationHistogram:Fn,partUploadDurationHistogram:In,fileSizeHistogram:Ln,partSizeHistogram:Rn,activeUploadsGauge:zn,uploadThroughputGauge:Bn,uploadLatencySummary:Vn}=Y,X=z(`gcs`),Hn=C(`gcs`),Un=d(`gcs`,X,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}}),Wn=e.Layer.mergeAll(Hn),Gn=(e,t)=>B(X,e,t),Kn=(e,t)=>V(X,e,t),qn=H,Jn=(e,t,n,r)=>U(X,e,t,n,r),Yn=(e,t)=>n=>w(e,`gcs`,t)(n),Xn=L.bind(null,`gcs`),Zn=I.bind(null,`gcs`),Qn=R.bind(null,`gcs`),$n=F,{uploadRequestsTotal:er,uploadPartsTotal:tr,uploadSuccessTotal:nr,uploadErrorsTotal:rr,apiCallsTotal:ir,uploadDurationHistogram:ar,partUploadDurationHistogram:or,fileSizeHistogram:sr,partSizeHistogram:cr,activeUploadsGauge:lr,uploadThroughputGauge:ur,uploadLatencySummary:dr}=X,Z=z(`s3`),fr=C(`s3`),pr=d(`s3`,Z,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}}),mr=e.Layer.mergeAll(fr),hr=(e,t)=>B(Z,e,t),gr=(e,t)=>V(Z,e,t),_r=H,vr=(e,t,n,r)=>U(Z,e,t,n,r),yr=(e,t)=>n=>w(e,`s3`,t)(n),br=L.bind(null,`s3`),xr=I.bind(null,`s3`),Sr=R.bind(null,`s3`),Cr=F,{uploadRequestsTotal:wr,uploadPartsTotal:Tr,uploadSuccessTotal:Er,uploadErrorsTotal:Dr,apiCallsTotal:Or,uploadDurationHistogram:kr,partUploadDurationHistogram:Ar,fileSizeHistogram:jr,partSizeHistogram:Mr,activeUploadsGauge:Nr,uploadThroughputGauge:Pr,uploadLatencySummary:Fr}=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`},Ir=(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))}),Lr=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`})}),Rr=$(),zr=(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)))}})},Br=zr();M(!1);const Vr=e.Effect.gen(function*(){return(yield*A).metrics}),Hr=e=>{let t=$();return e.Effect.gen(function*(){let n=Date.now(),r=yield*e,i=(Date.now()-n)/1e3;return yield*e.Metric.update(t.uploadDurationHistogram,i),r}).pipe(e.Effect.withSpan(`upload-operation`))},Ur=e=>{let t=$();return e.Effect.gen(function*(){let n=Date.now(),r=yield*e,i=(Date.now()-n)/1e3;return yield*e.Metric.update(t.chunkUploadDurationHistogram,i),r}).pipe(e.Effect.withSpan(`chunk-upload`))},Wr=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}}),Gr=()=>$(),Kr=()=>{let e=Gr(),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},qr=(e,t)=>n=>n.pipe(n.Effect.withSpan(`upload-${e}`,{attributes:{"upload.operation":e,...t}})),Jr=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`}),Yr=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=Yt,exports.AzureTracingLayer=qt,Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return i.BatchLogRecordProcessor}}),exports.FilesystemObservabilityLayer=bn,exports.FilesystemTracingLayer=vn,exports.FlowObservability=j,exports.FlowObservabilityDisabled=st,exports.FlowObservabilityLive=Ot,exports.GCSObservabilityLayer=Wn,exports.GCSTracingLayer=Hn,Object.defineProperty(exports,`LoggerProvider`,{enumerable:!0,get:function(){return i.LoggerProvider}}),Object.defineProperty(exports,`MeterProvider`,{enumerable:!0,get:function(){return a.MeterProvider}}),exports.MetricsService=Gt,exports.NoOpMetricsServiceLive=Kt,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=it,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=mr,exports.S3TracingLayer=fr,Object.defineProperty(exports,`SeverityNumber`,{enumerable:!0,get:function(){return s.SeverityNumber}}),exports.StorageObservability=k,exports.StorageObservabilityDisabled=at,exports.TracingService=Me,exports.UploadObservability=A,exports.UploadObservabilityDisabled=ot,exports.UploadObservabilityLive=Br,exports.UploadObservabilityTest=Wr,exports.WebSdkLive=Pe,exports.WorkersSdkLive=Ie,exports.annotateCircuitBreakerStateChange=Wt,exports.azureActiveUploadsGauge=hn,exports.azureApiCallsTotal=un,exports.azureFileSizeHistogram=pn,exports.azureMetrics=q,exports.azurePartSizeHistogram=mn,exports.azurePartUploadDurationHistogram=fn,exports.azureUploadDurationHistogram=dn,exports.azureUploadErrorsTotal=ln,exports.azureUploadLatencySummary=_n,exports.azureUploadPartsTotal=sn,exports.azureUploadRequestsTotal=on,exports.azureUploadSuccessTotal=cn,exports.azureUploadThroughputGauge=gn,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=Lr,exports.createUploadGauges=dt,exports.createUploadHistograms=ut,exports.createUploadMetrics=lt,exports.createUploadSummaries=ft,exports.detectEnvironment=D,exports.emitLog=b,exports.filesystemActiveUploadsGauge=zn,exports.filesystemApiCallsTotal=Pn,exports.filesystemFileSizeHistogram=Ln,exports.filesystemMetrics=Y,exports.filesystemPartSizeHistogram=Rn,exports.filesystemPartUploadDurationHistogram=In,exports.filesystemUploadDurationHistogram=Fn,exports.filesystemUploadErrorsTotal=Nn,exports.filesystemUploadLatencySummary=Vn,exports.filesystemUploadPartsTotal=jn,exports.filesystemUploadRequestsTotal=An,exports.filesystemUploadSuccessTotal=Mn,exports.filesystemUploadThroughputGauge=Bn,exports.flowMetrics=wt,exports.gcsActiveUploadsGauge=lr,exports.gcsApiCallsTotal=ir,exports.gcsFileSizeHistogram=sr,exports.gcsMetrics=X,exports.gcsPartSizeHistogram=cr,exports.gcsPartUploadDurationHistogram=or,exports.gcsUploadDurationHistogram=ar,exports.gcsUploadErrorsTotal=rr,exports.gcsUploadLatencySummary=dr,exports.gcsUploadPartsTotal=tr,exports.gcsUploadRequestsTotal=er,exports.gcsUploadSuccessTotal=nr,exports.gcsUploadThroughputGauge=ur,exports.getFlowMetrics=kt,exports.getLogsExportInterval=ce,exports.getMetricsExportInterval=oe,exports.getOtlpEndpoint=p,exports.getServiceName=h,exports.getTestMetrics=Gr,exports.getTraceContext=v,exports.getUploadMetrics=Vr,exports.hasActiveTraceContext=qe,exports.isObservabilityEnabled=P,exports.isOtlpExportEnabled=m,exports.logAzureContext=an,exports.logAzureOperation=tn,exports.logAzureUploadCompletion=rn,exports.logAzureUploadProgress=nn,exports.logDebug=ve,exports.logError=xe,exports.logFatal=Se,exports.logFilesystemContext=kn,exports.logFilesystemOperation=En,exports.logFilesystemUploadCompletion=On,exports.logFilesystemUploadProgress=Dn,exports.logGCSContext=$n,exports.logGCSOperation=Xn,exports.logGCSUploadCompletion=Qn,exports.logGCSUploadProgress=Zn,exports.logInfo=ye,exports.logS3Context=Cr,exports.logS3Operation=br,exports.logS3UploadCompletion=Sr,exports.logS3UploadProgress=xr,exports.logStorageOperation=L,exports.logUploadCompletion=R,exports.logUploadProgress=I,exports.logWarn=be,exports.logWithContext=F,exports.makeFlowObservabilityLayer=N,exports.makeFlowObservabilityLive=Dt,exports.makeObservabilityLayer=nt,exports.makeStorageObservabilityLayer=rt,exports.makeTestFlowObservability=ht,exports.makeTestFlowObservabilityUtil=Pt,exports.makeTestStorageObservability=pt,exports.makeTestUploadObservability=mt,exports.makeUploadObservabilityLayer=M,exports.makeUploadObservabilityLive=zr,exports.mapLogLevelToSeverity=_,exports.parseOtlpHeaders=f,exports.parseResourceAttributes=ie,exports.recordCounter=ke,exports.recordHistogram=Ae,exports.runWithTestFlowObservability=Ft,exports.runWithTestObservability=yt,exports.s3ActiveUploadsGauge=Nr,exports.s3ApiCallsTotal=Or,exports.s3FileSizeHistogram=jr,exports.s3Metrics=Z,exports.s3PartSizeHistogram=Mr,exports.s3PartUploadDurationHistogram=Ar,exports.s3UploadDurationHistogram=kr,exports.s3UploadErrorsTotal=Dr,exports.s3UploadLatencySummary=Fr,exports.s3UploadPartsTotal=Tr,exports.s3UploadRequestsTotal=wr,exports.s3UploadSuccessTotal=Er,exports.s3UploadThroughputGauge=Pr,exports.severityToText=ue,exports.trackActiveFlow=Mt,exports.trackActiveNode=Nt,exports.trackAzureError=Jt,exports.trackFileSize=bt,exports.trackFilesystemError=yn,exports.trackFlowError=Tt,exports.trackGCSError=Un,exports.trackNodeError=Et,exports.trackPartSize=xt,exports.trackS3Error=pr,exports.trackStorageError=te,exports.trackUploadError=Ir,exports.uploadEngineMetrics=Rr,exports.validateMetricsExist=Kr,exports.whenObservabilityEnabled=ct,exports.withActiveUploadTracking=St,exports.withApiMetrics=V,exports.withAzureApiMetrics=Zt,exports.withAzureOperationMetrics=$t,exports.withAzureSpan=en,exports.withAzureTimingMetrics=Qt,exports.withAzureUploadMetrics=Xt,exports.withChunkContext=Yr,exports.withChunkDuration=Ur,exports.withCircuitBreakerContext=Ut,exports.withCircuitBreakerSpan=Ht,exports.withExecutionContext=zt,exports.withFilesystemApiMetrics=Sn,exports.withFilesystemOperationMetrics=wn,exports.withFilesystemSpan=Tn,exports.withFilesystemTimingMetrics=Cn,exports.withFilesystemUploadMetrics=xn,exports.withFlowContext=Lt,exports.withFlowDuration=At,exports.withFlowSpan=It,exports.withGCSApiMetrics=Kn,exports.withGCSOperationMetrics=Jn,exports.withGCSSpan=Yn,exports.withGCSTimingMetrics=qn,exports.withGCSUploadMetrics=Gn,exports.withMetricTracking=_t,exports.withNodeContext=Rt,exports.withNodeDuration=jt,exports.withOperationContext=Vt,exports.withOperationSpan=Bt,exports.withParentContext=Ke,exports.withS3ApiMetrics=gr,exports.withS3OperationMetrics=vr,exports.withS3Span=yr,exports.withS3TimingMetrics=_r,exports.withS3UploadMetrics=hr,exports.withStorageOperationMetrics=U,exports.withStorageSpan=w,exports.withThroughputTracking=Ct,exports.withTimingMetrics=H,exports.withUploadContext=Jr,exports.withUploadDuration=Hr,exports.withUploadMetrics=B,exports.withUploadSpan=qr;
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Context, Effect, Layer, Logger, Metric, Option, Tracer } from "effect";
2
- import * as effect_MetricKeyType7 from "effect/MetricKeyType";
3
- import * as effect_MetricState7 from "effect/MetricState";
2
+ import * as effect_MetricKeyType19 from "effect/MetricKeyType";
3
+ import * as effect_MetricState19 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";
@@ -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_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
24
- partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
25
- fileSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
26
- partSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
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>;
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_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
40
- partUploadDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
41
- fileSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
42
- partSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
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>;
43
43
  uploadRequestsTotal: Metric.Metric.Counter<number>;
44
44
  uploadPartsTotal: Metric.Metric.Counter<number>;
45
45
  uploadSuccessTotal: Metric.Metric.Counter<number>;
@@ -626,11 +626,8 @@ declare const logFatal: (message: string, attributes?: Record<string, string | n
626
626
  * ```
627
627
  */
628
628
  type TraceContext = {
629
- /** 128-bit trace identifier (32 hex characters) */
630
- traceId: string;
631
- /** 64-bit span identifier (16 hex characters) */
632
- spanId: string;
633
- /** Trace flags (1 = sampled) */
629
+ /** 128-bit trace identifier (32 hex characters) */traceId: string; /** 64-bit span identifier (16 hex characters) */
630
+ spanId: string; /** Trace flags (1 = sampled) */
634
631
  traceFlags: number;
635
632
  };
636
633
  //#endregion
@@ -1238,26 +1235,20 @@ declare const createFlowMetrics: () => {
1238
1235
  nodeSuccessTotal: Metric.Metric.Counter<number>;
1239
1236
  nodeFailedTotal: Metric.Metric.Counter<number>;
1240
1237
  nodeSkippedTotal: Metric.Metric.Counter<number>;
1241
- flowDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1242
- nodeDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1243
- flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1244
- parallelNodesHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1238
+ flowDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1239
+ nodeDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1240
+ flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1241
+ parallelNodesHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1245
1242
  activeFlowsGauge: Metric.Metric.Gauge<number>;
1246
1243
  activeNodesGauge: Metric.Metric.Gauge<number>;
1247
1244
  pausedFlowsGauge: Metric.Metric.Gauge<number>;
1248
1245
  flowLatencySummary: Metric.Metric.Summary<number>;
1249
- nodeLatencySummary: Metric.Metric.Summary<number>;
1250
- /** Total number of times circuit breakers opened */
1251
- circuitBreakerOpenTotal: Metric.Metric.Counter<number>;
1252
- /** Total number of times circuit breakers closed */
1253
- circuitBreakerCloseTotal: Metric.Metric.Counter<number>;
1254
- /** Total number of requests rejected by open circuit breakers */
1255
- circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
1256
- /** Total number of times circuit breakers transitioned to half-open */
1257
- circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
1258
- /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
1259
- circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
1260
- /** Number of failures in circuit breaker sliding window */
1246
+ nodeLatencySummary: Metric.Metric.Summary<number>; /** Total number of times circuit breakers opened */
1247
+ circuitBreakerOpenTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers closed */
1248
+ circuitBreakerCloseTotal: Metric.Metric.Counter<number>; /** Total number of requests rejected by open circuit breakers */
1249
+ circuitBreakerRejectedTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers transitioned to half-open */
1250
+ circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>; /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
1251
+ circuitBreakerStateGauge: Metric.Metric.Gauge<number>; /** Number of failures in circuit breaker sliding window */
1261
1252
  circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
1262
1253
  };
1263
1254
  /**
@@ -1277,26 +1268,20 @@ declare const flowMetrics: {
1277
1268
  nodeSuccessTotal: Metric.Metric.Counter<number>;
1278
1269
  nodeFailedTotal: Metric.Metric.Counter<number>;
1279
1270
  nodeSkippedTotal: Metric.Metric.Counter<number>;
1280
- flowDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1281
- nodeDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1282
- flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1283
- parallelNodesHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1271
+ flowDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1272
+ nodeDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1273
+ flowNodeCountHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1274
+ parallelNodesHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1284
1275
  activeFlowsGauge: Metric.Metric.Gauge<number>;
1285
1276
  activeNodesGauge: Metric.Metric.Gauge<number>;
1286
1277
  pausedFlowsGauge: Metric.Metric.Gauge<number>;
1287
1278
  flowLatencySummary: Metric.Metric.Summary<number>;
1288
- nodeLatencySummary: Metric.Metric.Summary<number>;
1289
- /** Total number of times circuit breakers opened */
1290
- circuitBreakerOpenTotal: Metric.Metric.Counter<number>;
1291
- /** Total number of times circuit breakers closed */
1292
- circuitBreakerCloseTotal: Metric.Metric.Counter<number>;
1293
- /** Total number of requests rejected by open circuit breakers */
1294
- circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
1295
- /** Total number of times circuit breakers transitioned to half-open */
1296
- circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
1297
- /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
1298
- circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
1299
- /** Number of failures in circuit breaker sliding window */
1279
+ nodeLatencySummary: Metric.Metric.Summary<number>; /** Total number of times circuit breakers opened */
1280
+ circuitBreakerOpenTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers closed */
1281
+ circuitBreakerCloseTotal: Metric.Metric.Counter<number>; /** Total number of requests rejected by open circuit breakers */
1282
+ circuitBreakerRejectedTotal: Metric.Metric.Counter<number>; /** Total number of times circuit breakers transitioned to half-open */
1283
+ circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>; /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
1284
+ circuitBreakerStateGauge: Metric.Metric.Gauge<number>; /** Number of failures in circuit breaker sliding window */
1300
1285
  circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
1301
1286
  };
1302
1287
  //#endregion
@@ -1436,10 +1421,10 @@ declare const azureMetrics: {
1436
1421
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1437
1422
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1438
1423
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1439
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1440
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1441
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1442
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1424
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1425
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1426
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1427
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1443
1428
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1444
1429
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1445
1430
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1474,7 +1459,7 @@ declare const logAzureUploadCompletion: (uploadId: string, metrics: {
1474
1459
  retryCount?: number;
1475
1460
  }) => Effect.Effect<void, never, never>;
1476
1461
  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_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azurePartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azureFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azurePartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, azureActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, azureUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, azureUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1462
+ 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>;
1478
1463
  type AzureMetrics = StorageMetrics;
1479
1464
  //#endregion
1480
1465
  //#region src/storage/filesystem.d.ts
@@ -1482,10 +1467,10 @@ declare const filesystemMetrics: {
1482
1467
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1483
1468
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1484
1469
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1485
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1486
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1487
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1488
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1470
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1471
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1472
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1473
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1489
1474
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1490
1475
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1491
1476
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1520,7 +1505,7 @@ declare const logFilesystemUploadCompletion: (uploadId: string, metrics: {
1520
1505
  retryCount?: number;
1521
1506
  }) => Effect.Effect<void, never, never>;
1522
1507
  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_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemPartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemPartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, filesystemActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, filesystemUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, filesystemUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1508
+ 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>;
1524
1509
  type FilesystemMetrics = StorageMetrics;
1525
1510
  //#endregion
1526
1511
  //#region src/storage/gcs.d.ts
@@ -1528,10 +1513,10 @@ declare const gcsMetrics: {
1528
1513
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1529
1514
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1530
1515
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1531
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1532
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1533
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1534
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1516
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1517
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1518
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1519
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1535
1520
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1536
1521
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1537
1522
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1566,7 +1551,7 @@ declare const logGCSUploadCompletion: (uploadId: string, metrics: {
1566
1551
  retryCount?: number;
1567
1552
  }) => Effect.Effect<void, never, never>;
1568
1553
  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_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsPartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsPartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, gcsActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, gcsUploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, gcsUploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1554
+ 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>;
1570
1555
  type GCSMetrics = StorageMetrics;
1571
1556
  //#endregion
1572
1557
  //#region src/storage/s3.d.ts
@@ -1574,10 +1559,10 @@ declare const s3Metrics: {
1574
1559
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1575
1560
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1576
1561
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1577
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1578
- partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1579
- fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1580
- partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1562
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1563
+ partUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1564
+ fileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1565
+ partSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1581
1566
  uploadRequestsTotal: effect_Metric64.Metric.Counter<number>;
1582
1567
  uploadPartsTotal: effect_Metric64.Metric.Counter<number>;
1583
1568
  uploadSuccessTotal: effect_Metric64.Metric.Counter<number>;
@@ -1612,7 +1597,7 @@ declare const logS3UploadCompletion: (uploadId: string, metrics: {
1612
1597
  retryCount?: number;
1613
1598
  }) => Effect.Effect<void, never, never>;
1614
1599
  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_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3PartUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3FileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3PartSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>, s3ActiveUploadsGauge: effect_Metric64.Metric.Gauge<number>, s3UploadThroughputGauge: effect_Metric64.Metric.Gauge<number>, s3UploadLatencySummary: effect_Metric64.Metric.Summary<number>;
1600
+ 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>;
1616
1601
  type S3Metrics = StorageMetrics;
1617
1602
  //#endregion
1618
1603
  //#region src/upload/metrics.d.ts
@@ -1627,10 +1612,10 @@ declare const createUploadEngineMetrics: () => {
1627
1612
  uploadFromUrlTotal: Metric.Metric.Counter<number>;
1628
1613
  uploadFromUrlSuccessTotal: Metric.Metric.Counter<number>;
1629
1614
  uploadFromUrlFailedTotal: Metric.Metric.Counter<number>;
1630
- uploadDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1631
- chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1632
- uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1633
- chunkSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1615
+ uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1616
+ chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1617
+ uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1618
+ chunkSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1634
1619
  activeUploadsGauge: Metric.Metric.Gauge<number>;
1635
1620
  uploadThroughputGauge: Metric.Metric.Gauge<number>;
1636
1621
  uploadLatencySummary: Metric.Metric.Summary<number>;
@@ -1651,10 +1636,10 @@ declare const uploadEngineMetrics: {
1651
1636
  uploadFromUrlTotal: Metric.Metric.Counter<number>;
1652
1637
  uploadFromUrlSuccessTotal: Metric.Metric.Counter<number>;
1653
1638
  uploadFromUrlFailedTotal: Metric.Metric.Counter<number>;
1654
- uploadDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1655
- chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1656
- uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1657
- chunkSizeHistogram: Metric.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1639
+ uploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1640
+ chunkUploadDurationHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1641
+ uploadFileSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1642
+ chunkSizeHistogram: Metric.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1658
1643
  activeUploadsGauge: Metric.Metric.Gauge<number>;
1659
1644
  uploadThroughputGauge: Metric.Metric.Gauge<number>;
1660
1645
  uploadLatencySummary: Metric.Metric.Summary<number>;
@@ -1720,10 +1705,10 @@ declare const getTestMetrics: () => {
1720
1705
  uploadFromUrlTotal: effect_Metric64.Metric.Counter<number>;
1721
1706
  uploadFromUrlSuccessTotal: effect_Metric64.Metric.Counter<number>;
1722
1707
  uploadFromUrlFailedTotal: effect_Metric64.Metric.Counter<number>;
1723
- uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1724
- chunkUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1725
- uploadFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1726
- chunkSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType7.MetricKeyType.Histogram, number, effect_MetricState7.MetricState.Histogram>;
1708
+ uploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1709
+ chunkUploadDurationHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1710
+ uploadFileSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1711
+ chunkSizeHistogram: effect_Metric64.Metric<effect_MetricKeyType19.MetricKeyType.Histogram, number, effect_MetricState19.MetricState.Histogram>;
1727
1712
  activeUploadsGauge: effect_Metric64.Metric.Gauge<number>;
1728
1713
  uploadThroughputGauge: effect_Metric64.Metric.Gauge<number>;
1729
1714
  uploadLatencySummary: effect_Metric64.Metric.Summary<number>;