@uploadista/observability 0.0.18-beta.1 → 0.0.18-beta.11

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(`@effect/opentelemetry`),n=require(`@opentelemetry/sdk-trace-base`);const r=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`},i=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return r(e)},a=(t,n,i,a,o={},s=r)=>e.Effect.gen(function*(){let r=s(a);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,i),e.Metric.tagged(`error_category`,r))(e.Effect.succeed(1));let c={storage_type:t,operation:i,error_category:r,error_type:typeof a,error_message:a instanceof Error?a.message:String(a),error_code:a&&typeof a==`object`&&`code`in a?a.code:void 0,error_name:a&&typeof a==`object`&&`name`in a?a.name:void 0,...o};yield*e.Effect.logError(`${t.toUpperCase()} ${i} failed`).pipe(e.Effect.annotateLogs(c))}),o=(e,t,n)=>{let r=i(e,n);return(n,i,o={})=>a(e,t,n,i,o,r)};var s=class extends e.Context.Tag(`Observability`)(){},c=class extends e.Context.Tag(`StorageObservability`)(){},l=class extends e.Context.Tag(`UploadObservability`)(){},u=class extends e.Context.Tag(`FlowObservability`)(){};const d=(t,n=!0)=>e.Layer.succeed(s,{serviceName:t,enabled:n}),f=(t,n,r=!0)=>e.Layer.succeed(c,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),p=(t=!0)=>e.Layer.succeed(l,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),m=(t=!0)=>e.Layer.succeed(u,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),ee=d(`uploadista-disabled`,!1),te=e=>f(e,{},!1),ne=p(!1),re=m(!1),h=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(s);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),ie=t=>e.Effect.gen(function*(){if(yield*h){let n=yield*t;return e.Option.some(n)}return e.Option.none()}),g=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),_=(e,t,n)=>g(`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}}),v=(e,t,n,r)=>g(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),y=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return g(`${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}})},ae=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}`})}),oe=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}`)}),se=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}`})}),b=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}`})}),x=e=>({...ae(e),...oe(e),...se(e),...b(e)}),S=t=>{let n=x(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(c,r)},C=()=>{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(l,t)},w=()=>{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(u,t)},ce=t=>e.Effect.gen(function*(){let n=yield*t;return yield*e.Metric.snapshot,n}),le=t=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let n=yield*t;return yield*e.Metric.snapshot,n}),T=(e=`test-storage`)=>({storageObservability:S(e),uploadObservability:C(),flowObservability:w()}),ue=(t,n=`test-storage`)=>{let r=T(n);return t.pipe(e.Effect.provide(r.storageObservability),e.Effect.provide(r.uploadObservability),e.Effect.provide(r.flowObservability))},E=e.Context.GenericTag(`TracingService`),D=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(E,{serviceName:n})},O=e=>D({serviceName:`uploadista-${e}-store`}),k=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${n}-${t}`,{attributes:{"storage.type":n,operation:t,...r}})),de=t.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new n.BatchSpanProcessor(new n.ConsoleSpanExporter)})),fe=t.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new n.BatchSpanProcessor(new n.ConsoleSpanExporter)})),pe=t.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new n.BatchSpanProcessor(new n.ConsoleSpanExporter)})),A=(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)))),j=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.apiCallsTotal.pipe(e.Metric.tagged(`operation`,n))(e.Effect.succeed(1)))),M=(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}),N=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.fileSizeHistogram(e.Effect.succeed(n)))),me=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.partSizeHistogram(e.Effect.succeed(n)))),P=(t,n)=>n.pipe(e.Effect.tap(()=>t.activeUploadsGauge(e.Effect.succeed(1))),e.Effect.ensuring(t.activeUploadsGauge(e.Effect.succeed(-1)))),F=(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}),I=(e,t,n,r,i)=>{let a=r.pipe(n=>j(e,t,n),t=>A(e,n,t),t=>M(e.uploadDurationHistogram,t),t=>P(e,t));return i!==void 0&&(a=a.pipe(t=>N(e,i,t),t=>F(e,i,t))),a},L=()=>({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`})}),he=L(),R=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`}},ge=t=>{let n=L(),r=R(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)}))})},_e=(t,n,r)=>{let i=L(),a=R(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)}))})},z=(t=`uploadista-flow-engine`)=>{let n=L();return e.Layer.succeed(u,{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)}})},ve=z(),ye=m(!1),be=e.Effect.gen(function*(){return(yield*u).metrics}),xe=t=>{let n=L();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`))},Se=(t,n,r)=>{let i=L();return e.Effect.gen(function*(){let t=Date.now(),n=yield*r,a=(Date.now()-t)/1e3;return yield*e.Metric.update(i.nodeDurationHistogram,a),yield*e.Metric.update(i.nodeLatencySummary,a),n}).pipe(e.Effect.withSpan(`node-${n}`,{attributes:{"node.id":t,"node.type":n}}))},Ce=t=>{let n=L();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))})},we=t=>{let n=L();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))})},B=()=>{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(u,t)},Te=t=>t.pipe(e.Effect.provide(B())),Ee=(t,n)=>r=>r.pipe(e.Effect.withSpan(`flow-${t}`,{attributes:{"flow.operation":t,...n}})),De=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`}),Oe=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`}),ke=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`});var V=class extends e.Context.Tag(`MetricsService`)(){};const Ae=e.Layer.succeed(V,{recordUpload:(t,n)=>e.Effect.void}),H=`azure`,U=x(H),W=O(H),je=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}},Me=o(H,U,je),Ne=e.Layer.mergeAll(W),Pe=(e,t)=>A(U,e,t),Fe=(e,t)=>j(U,e,t),Ie=M,Le=(e,t,n,r)=>I(U,e,t,n,r),Re=(e,t)=>n=>k(e,H,t)(n),ze=v.bind(null,H),Be=_.bind(null,H),Ve=y.bind(null,H),He=g,{uploadRequestsTotal:Ue,uploadPartsTotal:We,uploadSuccessTotal:Ge,uploadErrorsTotal:Ke,apiCallsTotal:qe,uploadDurationHistogram:Je,partUploadDurationHistogram:Ye,fileSizeHistogram:Xe,partSizeHistogram:Ze,activeUploadsGauge:Qe,uploadThroughputGauge:$e,uploadLatencySummary:et}=U,G=`filesystem`,K=x(G),q=O(G),tt=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}},nt=o(G,K,tt),rt=e.Layer.mergeAll(q),it=(e,t)=>A(K,e,t),at=(e,t)=>j(K,e,t),ot=M,st=(e,t,n,r)=>I(K,e,t,n,r),ct=(e,t)=>n=>k(e,G,t)(n),lt=v.bind(null,G),ut=_.bind(null,G),dt=y.bind(null,G),ft=g,{uploadRequestsTotal:pt,uploadPartsTotal:mt,uploadSuccessTotal:ht,uploadErrorsTotal:gt,apiCallsTotal:_t,uploadDurationHistogram:vt,partUploadDurationHistogram:yt,fileSizeHistogram:bt,partSizeHistogram:xt,activeUploadsGauge:St,uploadThroughputGauge:Ct,uploadLatencySummary:wt}=K,Tt=`gcs`,J=x(`gcs`),Y=O(`gcs`),Et=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}},Dt=o(`gcs`,J,Et),Ot=e.Layer.mergeAll(Y),kt=(e,t)=>A(J,e,t),At=(e,t)=>j(J,e,t),jt=M,Mt=(e,t,n,r)=>I(J,e,t,n,r),Nt=(e,t)=>n=>k(e,`gcs`,t)(n),Pt=v.bind(null,`gcs`),Ft=_.bind(null,`gcs`),It=y.bind(null,`gcs`),Lt=g,{uploadRequestsTotal:Rt,uploadPartsTotal:zt,uploadSuccessTotal:Bt,uploadErrorsTotal:Vt,apiCallsTotal:Ht,uploadDurationHistogram:Ut,partUploadDurationHistogram:Wt,fileSizeHistogram:Gt,partSizeHistogram:Kt,activeUploadsGauge:qt,uploadThroughputGauge:Jt,uploadLatencySummary:Yt}=J,Xt=`s3`,X=x(`s3`),Z=O(`s3`),Zt=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}},Qt=o(`s3`,X,Zt),$t=e.Layer.mergeAll(Z),en=(e,t)=>A(X,e,t),tn=(e,t)=>j(X,e,t),nn=M,rn=(e,t,n,r)=>I(X,e,t,n,r),an=(e,t)=>n=>k(e,`s3`,t)(n),on=v.bind(null,`s3`),sn=_.bind(null,`s3`),cn=y.bind(null,`s3`),ln=g,{uploadRequestsTotal:un,uploadPartsTotal:dn,uploadSuccessTotal:fn,uploadErrorsTotal:pn,apiCallsTotal:mn,uploadDurationHistogram:hn,partUploadDurationHistogram:gn,fileSizeHistogram:_n,partSizeHistogram:vn,activeUploadsGauge:yn,uploadThroughputGauge:bn,uploadLatencySummary:xn}=X,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`},Sn=(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))}),Cn=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`})}),wn=$(),Tn=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(l,{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)))}})},En=Tn(),Dn=p(!1),On=e.Effect.gen(function*(){return(yield*l).metrics}),kn=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`))},An=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`))},jn=e.Layer.succeed(l,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:()=>Promise.resolve(),uploadCompleted:()=>Promise.resolve(),uploadFailed:()=>Promise.resolve(),chunkUploaded:()=>Promise.resolve()}}),Mn=()=>$(),Nn=()=>{let e=Mn(),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},Pn=(t,n)=>r=>r.pipe(e.Effect.withSpan(`upload-${t}`,{attributes:{"upload.operation":t,...n}})),Fn=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`}),In=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=Ne,exports.AzureTracingLayer=W,exports.FilesystemObservabilityLayer=rt,exports.FilesystemTracingLayer=q,exports.FlowObservability=u,exports.FlowObservabilityDisabled=re,exports.FlowObservabilityLive=ve,exports.GCSObservabilityLayer=Ot,exports.GCSTracingLayer=Y,exports.MetricsService=V,exports.NoOpMetricsServiceLive=Ae,exports.NodeSdkLive=fe,exports.Observability=s,exports.ObservabilityDisabled=ee,exports.S3ObservabilityLayer=$t,exports.S3TracingLayer=Z,exports.StorageObservability=c,exports.StorageObservabilityDisabled=te,exports.TracingService=E,exports.UploadObservability=l,exports.UploadObservabilityDisabled=ne,exports.UploadObservabilityLive=En,exports.UploadObservabilityTest=jn,exports.WebSdkLive=de,exports.WorkersSdkLive=pe,exports.azureActiveUploadsGauge=Qe,exports.azureApiCallsTotal=qe,exports.azureFileSizeHistogram=Xe,exports.azureMetrics=U,exports.azurePartSizeHistogram=Ze,exports.azurePartUploadDurationHistogram=Ye,exports.azureUploadDurationHistogram=Je,exports.azureUploadErrorsTotal=Ke,exports.azureUploadLatencySummary=et,exports.azureUploadPartsTotal=We,exports.azureUploadRequestsTotal=Ue,exports.azureUploadSuccessTotal=Ge,exports.azureUploadThroughputGauge=$e,exports.captureMetrics=ce,exports.classifyFlowError=R,exports.classifyStorageError=r,exports.classifyUploadError=Q,exports.createFlowMetrics=L,exports.createStorageErrorClassifier=i,exports.createStorageErrorTracker=o,exports.createStorageMetrics=x,exports.createStorageTracingLayer=O,exports.createTestFixture=T,exports.createTracingLayer=D,exports.createUploadErrorClassifier=Cn,exports.createUploadGauges=se,exports.createUploadHistograms=oe,exports.createUploadMetrics=ae,exports.createUploadServerMetrics=$,exports.createUploadSummaries=b,exports.filesystemActiveUploadsGauge=St,exports.filesystemApiCallsTotal=_t,exports.filesystemFileSizeHistogram=bt,exports.filesystemMetrics=K,exports.filesystemPartSizeHistogram=xt,exports.filesystemPartUploadDurationHistogram=yt,exports.filesystemUploadDurationHistogram=vt,exports.filesystemUploadErrorsTotal=gt,exports.filesystemUploadLatencySummary=wt,exports.filesystemUploadPartsTotal=mt,exports.filesystemUploadRequestsTotal=pt,exports.filesystemUploadSuccessTotal=ht,exports.filesystemUploadThroughputGauge=Ct,exports.flowMetrics=he,exports.gcsActiveUploadsGauge=qt,exports.gcsApiCallsTotal=Ht,exports.gcsFileSizeHistogram=Gt,exports.gcsMetrics=J,exports.gcsPartSizeHistogram=Kt,exports.gcsPartUploadDurationHistogram=Wt,exports.gcsUploadDurationHistogram=Ut,exports.gcsUploadErrorsTotal=Vt,exports.gcsUploadLatencySummary=Yt,exports.gcsUploadPartsTotal=zt,exports.gcsUploadRequestsTotal=Rt,exports.gcsUploadSuccessTotal=Bt,exports.gcsUploadThroughputGauge=Jt,exports.getFlowMetrics=be,exports.getTestMetrics=Mn,exports.getUploadMetrics=On,exports.isObservabilityEnabled=h,exports.logAzureContext=He,exports.logAzureOperation=ze,exports.logAzureUploadCompletion=Ve,exports.logAzureUploadProgress=Be,exports.logFilesystemContext=ft,exports.logFilesystemOperation=lt,exports.logFilesystemUploadCompletion=dt,exports.logFilesystemUploadProgress=ut,exports.logGCSContext=Lt,exports.logGCSOperation=Pt,exports.logGCSUploadCompletion=It,exports.logGCSUploadProgress=Ft,exports.logS3Context=ln,exports.logS3Operation=on,exports.logS3UploadCompletion=cn,exports.logS3UploadProgress=sn,exports.logStorageOperation=v,exports.logUploadCompletion=y,exports.logUploadProgress=_,exports.logWithContext=g,exports.makeFlowObservabilityLayer=m,exports.makeFlowObservabilityLive=z,exports.makeObservabilityLayer=d,exports.makeStorageObservabilityLayer=f,exports.makeTestFlowObservability=w,exports.makeTestFlowObservabilityUtil=B,exports.makeTestStorageObservability=S,exports.makeTestUploadObservability=C,exports.makeUploadObservabilityLayer=p,exports.makeUploadObservabilityLive=Tn,exports.runWithTestFlowObservability=Te,exports.runWithTestObservability=ue,exports.s3ActiveUploadsGauge=yn,exports.s3ApiCallsTotal=mn,exports.s3FileSizeHistogram=_n,exports.s3Metrics=X,exports.s3PartSizeHistogram=vn,exports.s3PartUploadDurationHistogram=gn,exports.s3UploadDurationHistogram=hn,exports.s3UploadErrorsTotal=pn,exports.s3UploadLatencySummary=xn,exports.s3UploadPartsTotal=dn,exports.s3UploadRequestsTotal=un,exports.s3UploadSuccessTotal=fn,exports.s3UploadThroughputGauge=bn,exports.trackActiveFlow=Ce,exports.trackActiveNode=we,exports.trackAzureError=Me,exports.trackFileSize=N,exports.trackFilesystemError=nt,exports.trackFlowError=ge,exports.trackGCSError=Dt,exports.trackNodeError=_e,exports.trackPartSize=me,exports.trackS3Error=Qt,exports.trackStorageError=a,exports.trackUploadError=Sn,exports.uploadServerMetrics=wn,exports.validateMetricsExist=Nn,exports.whenObservabilityEnabled=ie,exports.withActiveUploadTracking=P,exports.withApiMetrics=j,exports.withAzureApiMetrics=Fe,exports.withAzureOperationMetrics=Le,exports.withAzureSpan=Re,exports.withAzureTimingMetrics=Ie,exports.withAzureUploadMetrics=Pe,exports.withChunkContext=In,exports.withChunkDuration=An,exports.withExecutionContext=ke,exports.withFilesystemApiMetrics=at,exports.withFilesystemOperationMetrics=st,exports.withFilesystemSpan=ct,exports.withFilesystemTimingMetrics=ot,exports.withFilesystemUploadMetrics=it,exports.withFlowContext=De,exports.withFlowDuration=xe,exports.withFlowSpan=Ee,exports.withGCSApiMetrics=At,exports.withGCSOperationMetrics=Mt,exports.withGCSSpan=Nt,exports.withGCSTimingMetrics=jt,exports.withGCSUploadMetrics=kt,exports.withMetricTracking=le,exports.withNodeContext=Oe,exports.withNodeDuration=Se,exports.withS3ApiMetrics=tn,exports.withS3OperationMetrics=rn,exports.withS3Span=an,exports.withS3TimingMetrics=nn,exports.withS3UploadMetrics=en,exports.withStorageOperationMetrics=I,exports.withStorageSpan=k,exports.withThroughputTracking=F,exports.withTimingMetrics=M,exports.withUploadContext=Fn,exports.withUploadDuration=kn,exports.withUploadMetrics=A,exports.withUploadSpan=Pn;
1
+ let e=require(`effect`),t=require(`@opentelemetry/exporter-metrics-otlp-http`),n=require(`@opentelemetry/exporter-trace-otlp-http`),r=require(`@effect/opentelemetry`),i=require(`@opentelemetry/sdk-trace-base`);const a=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`},o=(e,t)=>e=>{if(t){let n=t(e);if(n!==null)return n}return a(e)},s=(t,n,r,i,o={},s=a)=>e.Effect.gen(function*(){let a=s(i);yield*n.uploadErrorsTotal.pipe(e.Metric.tagged(`operation`,r),e.Metric.tagged(`error_category`,a))(e.Effect.succeed(1));let c={storage_type:t,operation:r,error_category:a,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,...o};yield*e.Effect.logError(`${t.toUpperCase()} ${r} failed`).pipe(e.Effect.annotateLogs(c))}),c=(e,t,n)=>{let r=o(e,n);return(n,i,a={})=>s(e,t,n,i,a,r)};function l(){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 u(e,t){if(t)return t;if(typeof process<`u`){let t=e===`traces`?process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;if(t)return t;if(process.env.OTEL_EXPORTER_OTLP_ENDPOINT)return process.env.OTEL_EXPORTER_OTLP_ENDPOINT}return`http://localhost:4318`}function ee(e={}){let t=u(`traces`,e.endpoint),r=e.headers??l(),i=e.timeoutMillis??5e3;return new n.OTLPTraceExporter({url:`${t}/v1/traces`,headers:r,timeoutMillis:i})}function te(e={}){let n=u(`metrics`,e.endpoint),r=e.headers??l(),i=e.timeoutMillis??5e3;return new t.OTLPMetricExporter({url:`${n}/v1/metrics`,headers:r,timeoutMillis:i})}function d(){if(typeof process<`u`){let e=process.env.UPLOADISTA_OBSERVABILITY_ENABLED;if(e!==void 0)return e.toLowerCase()!==`false`&&e!==`0`}return!0}function f(e=`uploadista`){return typeof process<`u`&&process.env.OTEL_SERVICE_NAME?process.env.OTEL_SERVICE_NAME:e}function ne(){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}var p=class extends e.Context.Tag(`Observability`)(){},m=class extends e.Context.Tag(`StorageObservability`)(){},h=class extends e.Context.Tag(`UploadObservability`)(){},g=class extends e.Context.Tag(`FlowObservability`)(){};const re=(t,n=!0)=>e.Layer.succeed(p,{serviceName:t,enabled:n}),ie=(t,n,r=!0)=>e.Layer.succeed(m,{serviceName:`uploadista-${t}-store`,storageType:t,metrics:n,enabled:r}),_=(t=!0)=>e.Layer.succeed(h,{serviceName:`uploadista-upload-server`,enabled:t,metrics:{uploadCreated:e.Effect.void,uploadCompleted:e.Effect.void,uploadFailed:e.Effect.void,chunkUploaded:e.Effect.void}}),v=(t=!0)=>e.Layer.succeed(g,{serviceName:`uploadista-flow-engine`,enabled:t,metrics:{flowStarted:e.Effect.void,flowCompleted:e.Effect.void,flowFailed:e.Effect.void,nodeExecuted:e.Effect.void}}),ae=re(`uploadista-disabled`,!1),oe=e=>ie(e,{},!1),se=_(!1),ce=v(!1),y=e.Effect.gen(function*(){let t=yield*e.Effect.serviceOption(p);return e.Option.match(t,{onNone:()=>!1,onSome:e=>e.enabled})}),le=t=>e.Effect.gen(function*(){if(yield*y){let n=yield*t;return e.Option.some(n)}return e.Option.none()}),b=(t,n)=>e.Effect.log(t).pipe(e.Effect.annotateLogs(n)),x=(e,t,n)=>b(`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}}),S=(e,t,n,r)=>b(`${e.toUpperCase()} ${t}`,{storage_type:e,operation:t,upload_id:n,...r}),C=(e,t,n)=>{let r=n.throughputBps?n.throughputBps/(1024*1024):0;return b(`${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}})},ue=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}`})}),w=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}`)}),T=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}`})}),E=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}`})}),D=e=>({...ue(e),...w(e),...T(e),...E(e)}),O=t=>{let n=D(t),r={serviceName:`test-${t}-store`,storageType:t,metrics:n,enabled:!0};return e.Layer.succeed(m,r)},de=()=>{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(h,t)},fe=()=>{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(g,t)},pe=t=>e.Effect.gen(function*(){let n=yield*t;return yield*e.Metric.snapshot,n}),me=t=>e.Effect.gen(function*(){yield*e.Metric.snapshot;let n=yield*t;return yield*e.Metric.snapshot,n}),he=(e=`test-storage`)=>({storageObservability:O(e),uploadObservability:de(),flowObservability:fe()}),ge=(t,n=`test-storage`)=>{let r=he(n);return t.pipe(e.Effect.provide(r.storageObservability),e.Effect.provide(r.uploadObservability),e.Effect.provide(r.flowObservability))},_e=e.Context.GenericTag(`TracingService`),ve=t=>{let n=t?.serviceName??`uploadista-storage`;return e.Layer.succeed(_e,{serviceName:n})},k=e=>ve({serviceName:`uploadista-${e}-store`}),A=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`${n}-${t}`,{attributes:{"storage.type":n,operation:t,...r}})),ye=r.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new i.BatchSpanProcessor(new i.ConsoleSpanExporter)})),be=r.NodeSdk.layer(()=>({resource:{serviceName:`uploadista-storage`},spanProcessor:new i.BatchSpanProcessor(new i.ConsoleSpanExporter)})),xe=r.WebSdk.layer(()=>({resource:{serviceName:`uploadista-storage-workers`},spanProcessor:new i.BatchSpanProcessor(new i.ConsoleSpanExporter)}));function j(e={}){return new i.BatchSpanProcessor(ee(),{maxQueueSize:e.maxQueueSize??512,maxExportBatchSize:e.maxExportBatchSize??512,scheduledDelayMillis:e.scheduledDelayMillis??5e3,exportTimeoutMillis:e.exportTimeoutMillis??5e3})}function M(e={}){let t=e.serviceName??f(`uploadista`),n=ne(),r=e.resourceAttributes??{};return{serviceName:t,...n,...r}}const Se=r.NodeSdk.layer(()=>d()?{resource:M(),spanProcessor:j()}:{resource:M()});function Ce(e={}){return r.NodeSdk.layer(()=>d()?{resource:M(e),spanProcessor:j(e)}:{resource:M(e)})}const we=r.WebSdk.layer(()=>d()?{resource:M(),spanProcessor:j()}:{resource:M()});function Te(e={}){return r.WebSdk.layer(()=>d()?{resource:M(e),spanProcessor:j(e)}:{resource:M(e)})}const Ee=r.WebSdk.layer(()=>{let e={serviceName:f(`uploadista-workers`)};return d()?{resource:M(e),spanProcessor:j(e)}:{resource:M(e)}});function De(e={}){return r.WebSdk.layer(()=>{let t={serviceName:f(`uploadista-workers`),...e};return d()?{resource:M(t),spanProcessor:j(t)}:{resource:M(t)}})}const N=(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)))),P=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.apiCallsTotal.pipe(e.Metric.tagged(`operation`,n))(e.Effect.succeed(1)))),F=(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}),I=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.fileSizeHistogram(e.Effect.succeed(n)))),Oe=(t,n,r)=>r.pipe(e.Effect.tap(()=>t.partSizeHistogram(e.Effect.succeed(n)))),L=(t,n)=>n.pipe(e.Effect.tap(()=>t.activeUploadsGauge(e.Effect.succeed(1))),e.Effect.ensuring(t.activeUploadsGauge(e.Effect.succeed(-1)))),R=(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}),z=(e,t,n,r,i)=>{let a=r.pipe(n=>P(e,t,n),t=>N(e,n,t),t=>F(e.uploadDurationHistogram,t),t=>L(e,t));return i!==void 0&&(a=a.pipe(t=>I(e,i,t),t=>R(e,i,t))),a},B=()=>({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`})}),ke=B(),V=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`}},Ae=t=>{let n=B(),r=V(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)}))})},je=(t,n,r)=>{let i=B(),a=V(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)}))})},H=(t=`uploadista-flow-engine`)=>{let n=B();return e.Layer.succeed(g,{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)}})},Me=H(),Ne=v(!1),Pe=e.Effect.gen(function*(){return(yield*g).metrics}),Fe=t=>{let n=B();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`))},Ie=(t,n,r)=>{let i=B();return e.Effect.gen(function*(){let t=Date.now(),n=yield*r,a=(Date.now()-t)/1e3;return yield*e.Metric.update(i.nodeDurationHistogram,a),yield*e.Metric.update(i.nodeLatencySummary,a),n}).pipe(e.Effect.withSpan(`node-${n}`,{attributes:{"node.id":t,"node.type":n}}))},Le=t=>{let n=B();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))})},Re=t=>{let n=B();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))})},U=()=>{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(g,t)},ze=t=>t.pipe(e.Effect.provide(U())),Be=(t,n)=>r=>r.pipe(e.Effect.withSpan(`flow-${t}`,{attributes:{"flow.operation":t,...n}})),Ve=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`}),He=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`}),Ue=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`}),We=(t,n,r)=>i=>i.pipe(e.Effect.withSpan(`circuit-breaker-${t}`,{attributes:{"circuit_breaker.node_type":t,"circuit_breaker.state":n,...r}})),Ge=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`}),Ke=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 W=class extends e.Context.Tag(`MetricsService`)(){};const qe=e.Layer.succeed(W,{recordUpload:(t,n)=>e.Effect.void}),G=`azure`,K=D(G),Je=k(G),Ye=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}},Xe=c(G,K,Ye),Ze=e.Layer.mergeAll(Je),Qe=(e,t)=>N(K,e,t),$e=(e,t)=>P(K,e,t),et=F,tt=(e,t,n,r)=>z(K,e,t,n,r),nt=(e,t)=>n=>A(e,G,t)(n),rt=S.bind(null,G),it=x.bind(null,G),at=C.bind(null,G),ot=b,{uploadRequestsTotal:st,uploadPartsTotal:ct,uploadSuccessTotal:lt,uploadErrorsTotal:ut,apiCallsTotal:dt,uploadDurationHistogram:ft,partUploadDurationHistogram:pt,fileSizeHistogram:mt,partSizeHistogram:ht,activeUploadsGauge:gt,uploadThroughputGauge:_t,uploadLatencySummary:vt}=K,q=`filesystem`,J=D(q),yt=k(q),bt=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}},xt=c(q,J,bt),St=e.Layer.mergeAll(yt),Ct=(e,t)=>N(J,e,t),wt=(e,t)=>P(J,e,t),Tt=F,Et=(e,t,n,r)=>z(J,e,t,n,r),Dt=(e,t)=>n=>A(e,q,t)(n),Ot=S.bind(null,q),kt=x.bind(null,q),At=C.bind(null,q),jt=b,{uploadRequestsTotal:Mt,uploadPartsTotal:Nt,uploadSuccessTotal:Pt,uploadErrorsTotal:Ft,apiCallsTotal:It,uploadDurationHistogram:Lt,partUploadDurationHistogram:Rt,fileSizeHistogram:zt,partSizeHistogram:Bt,activeUploadsGauge:Vt,uploadThroughputGauge:Ht,uploadLatencySummary:Ut}=J,Wt=`gcs`,Y=D(`gcs`),Gt=k(`gcs`),Kt=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}},qt=c(`gcs`,Y,Kt),Jt=e.Layer.mergeAll(Gt),Yt=(e,t)=>N(Y,e,t),Xt=(e,t)=>P(Y,e,t),Zt=F,Qt=(e,t,n,r)=>z(Y,e,t,n,r),$t=(e,t)=>n=>A(e,`gcs`,t)(n),en=S.bind(null,`gcs`),tn=x.bind(null,`gcs`),nn=C.bind(null,`gcs`),rn=b,{uploadRequestsTotal:an,uploadPartsTotal:on,uploadSuccessTotal:sn,uploadErrorsTotal:cn,apiCallsTotal:ln,uploadDurationHistogram:un,partUploadDurationHistogram:dn,fileSizeHistogram:fn,partSizeHistogram:pn,activeUploadsGauge:mn,uploadThroughputGauge:hn,uploadLatencySummary:gn}=Y,_n=`s3`,X=D(`s3`),Z=k(`s3`),vn=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}},yn=c(`s3`,X,vn),bn=e.Layer.mergeAll(Z),xn=(e,t)=>N(X,e,t),Sn=(e,t)=>P(X,e,t),Cn=F,wn=(e,t,n,r)=>z(X,e,t,n,r),Tn=(e,t)=>n=>A(e,`s3`,t)(n),En=S.bind(null,`s3`),Dn=x.bind(null,`s3`),On=C.bind(null,`s3`),kn=b,{uploadRequestsTotal:An,uploadPartsTotal:jn,uploadSuccessTotal:Mn,uploadErrorsTotal:Nn,apiCallsTotal:Pn,uploadDurationHistogram:Fn,partUploadDurationHistogram:In,fileSizeHistogram:Ln,partSizeHistogram:Rn,activeUploadsGauge:zn,uploadThroughputGauge:Bn,uploadLatencySummary:Vn}=X,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`},Hn=(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))}),Un=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`})}),Wn=$(),Gn=(t=`uploadista-upload-server`)=>{let n=$();return e.Layer.succeed(h,{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)))}})},Kn=Gn(),qn=_(!1),Jn=e.Effect.gen(function*(){return(yield*h).metrics}),Yn=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`))},Xn=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`))},Zn=e.Layer.succeed(h,{serviceName:`uploadista-upload-server-test`,enabled:!0,metrics:{uploadCreated:()=>Promise.resolve(),uploadCompleted:()=>Promise.resolve(),uploadFailed:()=>Promise.resolve(),chunkUploaded:()=>Promise.resolve()}}),Qn=()=>$(),$n=()=>{let e=Qn(),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},er=(t,n)=>r=>r.pipe(e.Effect.withSpan(`upload-${t}`,{attributes:{"upload.operation":t,...n}})),tr=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`}),nr=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=Ze,exports.AzureTracingLayer=Je,exports.FilesystemObservabilityLayer=St,exports.FilesystemTracingLayer=yt,exports.FlowObservability=g,exports.FlowObservabilityDisabled=ce,exports.FlowObservabilityLive=Me,exports.GCSObservabilityLayer=Jt,exports.GCSTracingLayer=Gt,exports.MetricsService=W,exports.NoOpMetricsServiceLive=qe,exports.NodeSdkLive=be,exports.Observability=p,exports.ObservabilityDisabled=ae,exports.OtlpNodeSdkLive=Se,exports.OtlpWebSdkLive=we,exports.OtlpWorkersSdkLive=Ee,exports.S3ObservabilityLayer=bn,exports.S3TracingLayer=Z,exports.StorageObservability=m,exports.StorageObservabilityDisabled=oe,exports.TracingService=_e,exports.UploadObservability=h,exports.UploadObservabilityDisabled=se,exports.UploadObservabilityLive=Kn,exports.UploadObservabilityTest=Zn,exports.WebSdkLive=ye,exports.WorkersSdkLive=xe,exports.annotateCircuitBreakerStateChange=Ke,exports.azureActiveUploadsGauge=gt,exports.azureApiCallsTotal=dt,exports.azureFileSizeHistogram=mt,exports.azureMetrics=K,exports.azurePartSizeHistogram=ht,exports.azurePartUploadDurationHistogram=pt,exports.azureUploadDurationHistogram=ft,exports.azureUploadErrorsTotal=ut,exports.azureUploadLatencySummary=vt,exports.azureUploadPartsTotal=ct,exports.azureUploadRequestsTotal=st,exports.azureUploadSuccessTotal=lt,exports.azureUploadThroughputGauge=_t,exports.captureMetrics=pe,exports.classifyFlowError=V,exports.classifyStorageError=a,exports.classifyUploadError=Q,exports.createFlowMetrics=B,exports.createOtlpMetricExporter=te,exports.createOtlpNodeSdkLayer=Ce,exports.createOtlpTraceExporter=ee,exports.createOtlpWebSdkLayer=Te,exports.createOtlpWorkersSdkLayer=De,exports.createStorageErrorClassifier=o,exports.createStorageErrorTracker=c,exports.createStorageMetrics=D,exports.createStorageTracingLayer=k,exports.createTestFixture=he,exports.createTracingLayer=ve,exports.createUploadErrorClassifier=Un,exports.createUploadGauges=T,exports.createUploadHistograms=w,exports.createUploadMetrics=ue,exports.createUploadServerMetrics=$,exports.createUploadSummaries=E,exports.filesystemActiveUploadsGauge=Vt,exports.filesystemApiCallsTotal=It,exports.filesystemFileSizeHistogram=zt,exports.filesystemMetrics=J,exports.filesystemPartSizeHistogram=Bt,exports.filesystemPartUploadDurationHistogram=Rt,exports.filesystemUploadDurationHistogram=Lt,exports.filesystemUploadErrorsTotal=Ft,exports.filesystemUploadLatencySummary=Ut,exports.filesystemUploadPartsTotal=Nt,exports.filesystemUploadRequestsTotal=Mt,exports.filesystemUploadSuccessTotal=Pt,exports.filesystemUploadThroughputGauge=Ht,exports.flowMetrics=ke,exports.gcsActiveUploadsGauge=mn,exports.gcsApiCallsTotal=ln,exports.gcsFileSizeHistogram=fn,exports.gcsMetrics=Y,exports.gcsPartSizeHistogram=pn,exports.gcsPartUploadDurationHistogram=dn,exports.gcsUploadDurationHistogram=un,exports.gcsUploadErrorsTotal=cn,exports.gcsUploadLatencySummary=gn,exports.gcsUploadPartsTotal=on,exports.gcsUploadRequestsTotal=an,exports.gcsUploadSuccessTotal=sn,exports.gcsUploadThroughputGauge=hn,exports.getFlowMetrics=Pe,exports.getOtlpEndpoint=u,exports.getServiceName=f,exports.getTestMetrics=Qn,exports.getUploadMetrics=Jn,exports.isObservabilityEnabled=y,exports.isOtlpExportEnabled=d,exports.logAzureContext=ot,exports.logAzureOperation=rt,exports.logAzureUploadCompletion=at,exports.logAzureUploadProgress=it,exports.logFilesystemContext=jt,exports.logFilesystemOperation=Ot,exports.logFilesystemUploadCompletion=At,exports.logFilesystemUploadProgress=kt,exports.logGCSContext=rn,exports.logGCSOperation=en,exports.logGCSUploadCompletion=nn,exports.logGCSUploadProgress=tn,exports.logS3Context=kn,exports.logS3Operation=En,exports.logS3UploadCompletion=On,exports.logS3UploadProgress=Dn,exports.logStorageOperation=S,exports.logUploadCompletion=C,exports.logUploadProgress=x,exports.logWithContext=b,exports.makeFlowObservabilityLayer=v,exports.makeFlowObservabilityLive=H,exports.makeObservabilityLayer=re,exports.makeStorageObservabilityLayer=ie,exports.makeTestFlowObservability=fe,exports.makeTestFlowObservabilityUtil=U,exports.makeTestStorageObservability=O,exports.makeTestUploadObservability=de,exports.makeUploadObservabilityLayer=_,exports.makeUploadObservabilityLive=Gn,exports.parseOtlpHeaders=l,exports.parseResourceAttributes=ne,exports.runWithTestFlowObservability=ze,exports.runWithTestObservability=ge,exports.s3ActiveUploadsGauge=zn,exports.s3ApiCallsTotal=Pn,exports.s3FileSizeHistogram=Ln,exports.s3Metrics=X,exports.s3PartSizeHistogram=Rn,exports.s3PartUploadDurationHistogram=In,exports.s3UploadDurationHistogram=Fn,exports.s3UploadErrorsTotal=Nn,exports.s3UploadLatencySummary=Vn,exports.s3UploadPartsTotal=jn,exports.s3UploadRequestsTotal=An,exports.s3UploadSuccessTotal=Mn,exports.s3UploadThroughputGauge=Bn,exports.trackActiveFlow=Le,exports.trackActiveNode=Re,exports.trackAzureError=Xe,exports.trackFileSize=I,exports.trackFilesystemError=xt,exports.trackFlowError=Ae,exports.trackGCSError=qt,exports.trackNodeError=je,exports.trackPartSize=Oe,exports.trackS3Error=yn,exports.trackStorageError=s,exports.trackUploadError=Hn,exports.uploadServerMetrics=Wn,exports.validateMetricsExist=$n,exports.whenObservabilityEnabled=le,exports.withActiveUploadTracking=L,exports.withApiMetrics=P,exports.withAzureApiMetrics=$e,exports.withAzureOperationMetrics=tt,exports.withAzureSpan=nt,exports.withAzureTimingMetrics=et,exports.withAzureUploadMetrics=Qe,exports.withChunkContext=nr,exports.withChunkDuration=Xn,exports.withCircuitBreakerContext=Ge,exports.withCircuitBreakerSpan=We,exports.withExecutionContext=Ue,exports.withFilesystemApiMetrics=wt,exports.withFilesystemOperationMetrics=Et,exports.withFilesystemSpan=Dt,exports.withFilesystemTimingMetrics=Tt,exports.withFilesystemUploadMetrics=Ct,exports.withFlowContext=Ve,exports.withFlowDuration=Fe,exports.withFlowSpan=Be,exports.withGCSApiMetrics=Xt,exports.withGCSOperationMetrics=Qt,exports.withGCSSpan=$t,exports.withGCSTimingMetrics=Zt,exports.withGCSUploadMetrics=Yt,exports.withMetricTracking=me,exports.withNodeContext=He,exports.withNodeDuration=Ie,exports.withS3ApiMetrics=Sn,exports.withS3OperationMetrics=wn,exports.withS3Span=Tn,exports.withS3TimingMetrics=Cn,exports.withS3UploadMetrics=xn,exports.withStorageOperationMetrics=z,exports.withStorageSpan=A,exports.withThroughputTracking=R,exports.withTimingMetrics=F,exports.withUploadContext=tr,exports.withUploadDuration=Yn,exports.withUploadMetrics=N,exports.withUploadSpan=er;
package/dist/index.d.cts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { Context, Effect, Layer, Metric, Option } from "effect";
2
2
  import * as effect_MetricKeyType7 from "effect/MetricKeyType";
3
3
  import * as effect_MetricState7 from "effect/MetricState";
4
+ import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
5
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
4
6
  import * as effect_Tracer0 from "effect/Tracer";
5
7
  import * as _effect_opentelemetry_Resource0 from "@effect/opentelemetry/Resource";
6
8
  import * as effect_Metric49 from "effect/Metric";
@@ -49,6 +51,110 @@ declare const createStorageErrorClassifier: (storageType: string, customErrorMap
49
51
  declare const trackStorageError: (storageType: string, metrics: StorageMetrics, operation: string, error: unknown, context?: Record<string, unknown>, errorClassifier?: (error: unknown) => StorageErrorCategory) => Effect.Effect<void, never, never>;
50
52
  declare const createStorageErrorTracker: (storageType: string, metrics: StorageMetrics, customErrorClassifier?: (error: unknown) => StorageErrorCategory | null) => (operation: string, error: unknown, context?: Record<string, unknown>) => Effect.Effect<void, never, never>;
51
53
  //#endregion
54
+ //#region src/core/exporters.d.ts
55
+ /**
56
+ * Configuration options for OTLP exporters.
57
+ */
58
+ interface OtlpExporterConfig {
59
+ /** Base endpoint URL. Defaults to OTEL_EXPORTER_OTLP_ENDPOINT or http://localhost:4318 */
60
+ endpoint?: string;
61
+ /** Headers to include in requests (for authentication). Defaults to OTEL_EXPORTER_OTLP_HEADERS */
62
+ headers?: Record<string, string>;
63
+ /** Request timeout in milliseconds. Defaults to 5000 */
64
+ timeoutMillis?: number;
65
+ }
66
+ /**
67
+ * Parses the OTEL_EXPORTER_OTLP_HEADERS environment variable.
68
+ *
69
+ * Format: key=value,key2=value2
70
+ * Example: Authorization=Basic abc123,X-Custom-Header=value
71
+ *
72
+ * @returns Parsed headers as a Record, or undefined if not set
73
+ */
74
+ declare function parseOtlpHeaders(): Record<string, string> | undefined;
75
+ /**
76
+ * Gets the OTLP endpoint from environment variables with fallback.
77
+ *
78
+ * Checks in order:
79
+ * 1. Provided endpoint parameter
80
+ * 2. Signal-specific endpoint (OTEL_EXPORTER_OTLP_TRACES_ENDPOINT or OTEL_EXPORTER_OTLP_METRICS_ENDPOINT)
81
+ * 3. Base endpoint (OTEL_EXPORTER_OTLP_ENDPOINT)
82
+ * 4. Default: http://localhost:4318
83
+ *
84
+ * @param signal - The signal type ('traces' or 'metrics')
85
+ * @param configEndpoint - Optional endpoint from config
86
+ * @returns The resolved endpoint URL
87
+ */
88
+ declare function getOtlpEndpoint(signal: "traces" | "metrics", configEndpoint?: string): string;
89
+ /**
90
+ * Creates an OTLP trace exporter configured from environment variables.
91
+ *
92
+ * The exporter sends traces to an OTLP-compatible endpoint using HTTP/protobuf.
93
+ *
94
+ * @param config - Optional configuration overrides
95
+ * @returns Configured OTLPTraceExporter instance
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * // Use environment variables
100
+ * const exporter = createOtlpTraceExporter();
101
+ *
102
+ * // Override endpoint
103
+ * const exporter = createOtlpTraceExporter({
104
+ * endpoint: 'https://otlp.grafana.net'
105
+ * });
106
+ * ```
107
+ */
108
+ declare function createOtlpTraceExporter(config?: OtlpExporterConfig): OTLPTraceExporter;
109
+ /**
110
+ * Creates an OTLP metric exporter configured from environment variables.
111
+ *
112
+ * The exporter sends metrics to an OTLP-compatible endpoint using HTTP/protobuf.
113
+ *
114
+ * @param config - Optional configuration overrides
115
+ * @returns Configured OTLPMetricExporter instance
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * // Use environment variables
120
+ * const exporter = createOtlpMetricExporter();
121
+ *
122
+ * // Override endpoint
123
+ * const exporter = createOtlpMetricExporter({
124
+ * endpoint: 'https://otlp.grafana.net'
125
+ * });
126
+ * ```
127
+ */
128
+ declare function createOtlpMetricExporter(config?: OtlpExporterConfig): OTLPMetricExporter;
129
+ /**
130
+ * Checks if observability is enabled via environment variable.
131
+ *
132
+ * Reads UPLOADISTA_OBSERVABILITY_ENABLED environment variable.
133
+ * Defaults to true if not set.
134
+ *
135
+ * @returns true if observability should be enabled
136
+ */
137
+ declare function isOtlpExportEnabled(): boolean;
138
+ /**
139
+ * Gets the service name from environment variables.
140
+ *
141
+ * Reads OTEL_SERVICE_NAME environment variable.
142
+ * Defaults to "uploadista" if not set.
143
+ *
144
+ * @param defaultName - Default service name if not configured
145
+ * @returns The service name to use
146
+ */
147
+ declare function getServiceName(defaultName?: string): string;
148
+ /**
149
+ * Parses resource attributes from OTEL_RESOURCE_ATTRIBUTES environment variable.
150
+ *
151
+ * Format: key=value,key2=value2
152
+ * Example: tenant.id=abc123,deployment.environment=production
153
+ *
154
+ * @returns Parsed attributes as a Record, or empty object if not set
155
+ */
156
+ declare function parseResourceAttributes(): Record<string, string>;
157
+ //#endregion
52
158
  //#region src/core/layers.d.ts
53
159
  /**
54
160
  * Core observability service providing tracing, metrics, and logging capabilities
@@ -225,6 +331,120 @@ declare const withStorageSpan: <A, E, R>(operation: string, storageType: string,
225
331
  declare const WebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
226
332
  declare const NodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
227
333
  declare const WorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
334
+ /**
335
+ * Configuration options for OTLP SDK layers.
336
+ */
337
+ interface OtlpSdkConfig {
338
+ /** Service name for traces. Defaults to OTEL_SERVICE_NAME or "uploadista" */
339
+ serviceName?: string;
340
+ /** Additional resource attributes to include in all spans */
341
+ resourceAttributes?: Record<string, string>;
342
+ /** Maximum queue size for batch processor. Defaults to 512 */
343
+ maxQueueSize?: number;
344
+ /** Maximum export batch size. Defaults to 512 */
345
+ maxExportBatchSize?: number;
346
+ /** Schedule delay in milliseconds. Defaults to 5000 */
347
+ scheduledDelayMillis?: number;
348
+ /** Export timeout in milliseconds. Defaults to 5000 */
349
+ exportTimeoutMillis?: number;
350
+ }
351
+ /**
352
+ * Node.js OTLP SDK Layer for production use.
353
+ *
354
+ * Exports traces to an OTLP-compatible endpoint configured via environment variables:
355
+ * - OTEL_EXPORTER_OTLP_ENDPOINT: Base endpoint (default: http://localhost:4318)
356
+ * - OTEL_EXPORTER_OTLP_HEADERS: Authentication headers
357
+ * - OTEL_SERVICE_NAME: Service name (default: uploadista)
358
+ * - OTEL_RESOURCE_ATTRIBUTES: Additional resource attributes
359
+ * - UPLOADISTA_OBSERVABILITY_ENABLED: Set to "false" to disable (default: true)
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * import { OtlpNodeSdkLive } from "@uploadista/observability";
364
+ * import { Effect } from "effect";
365
+ *
366
+ * // With default environment configuration
367
+ * const program = myEffect.pipe(Effect.provide(OtlpNodeSdkLive));
368
+ *
369
+ * // Run with:
370
+ * // OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
371
+ * // OTEL_SERVICE_NAME=my-upload-service
372
+ * ```
373
+ */
374
+ declare const OtlpNodeSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
375
+ /**
376
+ * Creates a customized OTLP Node.js SDK Layer.
377
+ *
378
+ * Use this when you need to customize the SDK configuration beyond
379
+ * what environment variables provide.
380
+ *
381
+ * @param config - Custom configuration options
382
+ * @returns Configured Effect Layer
383
+ *
384
+ * @example
385
+ * ```typescript
386
+ * const customSdk = createOtlpNodeSdkLayer({
387
+ * serviceName: "my-custom-service",
388
+ * resourceAttributes: {
389
+ * "tenant.id": "abc123",
390
+ * "deployment.environment": "production"
391
+ * },
392
+ * maxQueueSize: 1024,
393
+ * });
394
+ *
395
+ * const program = myEffect.pipe(Effect.provide(customSdk));
396
+ * ```
397
+ */
398
+ declare function createOtlpNodeSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
399
+ /**
400
+ * Browser OTLP SDK Layer for production use.
401
+ *
402
+ * Similar to OtlpNodeSdkLive but uses fetch API for browser compatibility.
403
+ * Note: Browser environments may have CORS restrictions.
404
+ *
405
+ * @example
406
+ * ```typescript
407
+ * import { OtlpWebSdkLive } from "@uploadista/observability";
408
+ *
409
+ * const program = myEffect.pipe(Effect.provide(OtlpWebSdkLive));
410
+ * ```
411
+ */
412
+ declare const OtlpWebSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
413
+ /**
414
+ * Creates a customized OTLP Web SDK Layer.
415
+ *
416
+ * @param config - Custom configuration options
417
+ * @returns Configured Effect Layer for browser environments
418
+ */
419
+ declare function createOtlpWebSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
420
+ /**
421
+ * Cloudflare Workers OTLP SDK Layer for production use.
422
+ *
423
+ * Uses the Web SDK under the hood with fetch-based export.
424
+ * Suitable for edge computing environments.
425
+ *
426
+ * @example
427
+ * ```typescript
428
+ * import { OtlpWorkersSdkLive } from "@uploadista/observability";
429
+ *
430
+ * export default {
431
+ * async fetch(request, env) {
432
+ * const program = handleRequest(request).pipe(
433
+ * Effect.provide(OtlpWorkersSdkLive)
434
+ * );
435
+ * return Effect.runPromise(program);
436
+ * }
437
+ * };
438
+ * ```
439
+ */
440
+ declare const OtlpWorkersSdkLive: Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
441
+ /**
442
+ * Creates a customized OTLP Workers SDK Layer.
443
+ *
444
+ * @param config - Custom configuration options
445
+ * @returns Configured Effect Layer for Cloudflare Workers
446
+ */
447
+ declare function createOtlpWorkersSdkLayer(config?: OtlpSdkConfig): Layer.Layer<_effect_opentelemetry_Resource0.Resource, never, never>;
228
448
  //#endregion
229
449
  //#region src/core/utilities.d.ts
230
450
  declare const withUploadMetrics: <A, E, R>(metrics: StorageMetrics, uploadId: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
@@ -309,6 +529,18 @@ declare const createFlowMetrics: () => {
309
529
  pausedFlowsGauge: Metric.Metric.Gauge<number>;
310
530
  flowLatencySummary: Metric.Metric.Summary<number>;
311
531
  nodeLatencySummary: Metric.Metric.Summary<number>;
532
+ /** Total number of times circuit breakers opened */
533
+ circuitBreakerOpenTotal: Metric.Metric.Counter<number>;
534
+ /** Total number of times circuit breakers closed */
535
+ circuitBreakerCloseTotal: Metric.Metric.Counter<number>;
536
+ /** Total number of requests rejected by open circuit breakers */
537
+ circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
538
+ /** Total number of times circuit breakers transitioned to half-open */
539
+ circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
540
+ /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
541
+ circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
542
+ /** Number of failures in circuit breaker sliding window */
543
+ circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
312
544
  };
313
545
  /**
314
546
  * Type for flow metrics
@@ -336,6 +568,18 @@ declare const flowMetrics: {
336
568
  pausedFlowsGauge: Metric.Metric.Gauge<number>;
337
569
  flowLatencySummary: Metric.Metric.Summary<number>;
338
570
  nodeLatencySummary: Metric.Metric.Summary<number>;
571
+ /** Total number of times circuit breakers opened */
572
+ circuitBreakerOpenTotal: Metric.Metric.Counter<number>;
573
+ /** Total number of times circuit breakers closed */
574
+ circuitBreakerCloseTotal: Metric.Metric.Counter<number>;
575
+ /** Total number of requests rejected by open circuit breakers */
576
+ circuitBreakerRejectedTotal: Metric.Metric.Counter<number>;
577
+ /** Total number of times circuit breakers transitioned to half-open */
578
+ circuitBreakerHalfOpenTotal: Metric.Metric.Counter<number>;
579
+ /** Current state of circuit breakers (0=closed, 1=open, 2=half-open) */
580
+ circuitBreakerStateGauge: Metric.Metric.Gauge<number>;
581
+ /** Number of failures in circuit breaker sliding window */
582
+ circuitBreakerFailuresGauge: Metric.Metric.Gauge<number>;
339
583
  };
340
584
  //#endregion
341
585
  //#region src/flow/testing.d.ts
@@ -382,6 +626,35 @@ declare const withExecutionContext: (context: {
382
626
  totalNodes?: number;
383
627
  parallelCount?: number;
384
628
  }) => Effect.Effect<void, never, never>;
629
+ /**
630
+ * Circuit breaker state for tracing
631
+ */
632
+ type CircuitBreakerTracingState = "closed" | "open" | "half-open";
633
+ /**
634
+ * Wrap an Effect with a circuit breaker evaluation span
635
+ */
636
+ declare const withCircuitBreakerSpan: <A, E, R>(nodeType: string, state: CircuitBreakerTracingState, attributes?: Record<string, unknown>) => (effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
637
+ /**
638
+ * Add circuit breaker context to the current span
639
+ */
640
+ declare const withCircuitBreakerContext: (context: {
641
+ nodeType: string;
642
+ state: CircuitBreakerTracingState;
643
+ failureCount?: number;
644
+ failureThreshold?: number;
645
+ resetTimeout?: number;
646
+ decision?: "allowed" | "rejected" | "fallback";
647
+ }) => Effect.Effect<void, never, never>;
648
+ /**
649
+ * Add a circuit breaker state change event to the current span
650
+ */
651
+ declare const annotateCircuitBreakerStateChange: (event: {
652
+ nodeType: string;
653
+ previousState: CircuitBreakerTracingState;
654
+ newState: CircuitBreakerTracingState;
655
+ failureCount?: number;
656
+ timestamp?: number;
657
+ }) => Effect.Effect<void, never, never>;
385
658
  //#endregion
386
659
  //#region src/service/metrics.d.ts
387
660
  declare const MetricsService_base: Context.TagClass<MetricsService, "MetricsService", {
@@ -732,5 +1005,5 @@ declare const withChunkContext: (context: {
732
1005
  totalSize?: number;
733
1006
  }) => Effect.Effect<void, never, never>;
734
1007
  //#endregion
735
- export { AzureMetrics, AzureObservabilityLayer, AzureTracingLayer, FilesystemMetrics, FilesystemObservabilityLayer, FilesystemTracingLayer, FlowErrorCategory, FlowMetrics, FlowObservability, FlowObservabilityDisabled, FlowObservabilityLive, FlowObservabilityService, GCSMetrics, GCSObservabilityLayer, GCSTracingLayer, MetricsService, NoOpMetricsServiceLive, NodeSdkLive, Observability, ObservabilityDisabled, ObservabilityService, ObservabilityTestFixture, S3Metrics, S3ObservabilityLayer, S3TracingLayer, StorageErrorCategory, StorageMetrics, StorageObservability, StorageObservabilityDisabled, StorageObservabilityService, TracingService, UploadErrorCategory, UploadObservability, UploadObservabilityDisabled, UploadObservabilityLive, UploadObservabilityService, UploadObservabilityTest, UploadServerMetrics, WebSdkLive, WorkersSdkLive, azureActiveUploadsGauge, azureApiCallsTotal, azureFileSizeHistogram, azureMetrics, azurePartSizeHistogram, azurePartUploadDurationHistogram, azureUploadDurationHistogram, azureUploadErrorsTotal, azureUploadLatencySummary, azureUploadPartsTotal, azureUploadRequestsTotal, azureUploadSuccessTotal, azureUploadThroughputGauge, captureMetrics, classifyFlowError, classifyStorageError, classifyUploadError, createFlowMetrics, createStorageErrorClassifier, createStorageErrorTracker, createStorageMetrics, createStorageTracingLayer, createTestFixture, createTracingLayer, createUploadErrorClassifier, createUploadGauges, createUploadHistograms, createUploadMetrics, createUploadServerMetrics, createUploadSummaries, filesystemActiveUploadsGauge, filesystemApiCallsTotal, filesystemFileSizeHistogram, filesystemMetrics, filesystemPartSizeHistogram, filesystemPartUploadDurationHistogram, filesystemUploadDurationHistogram, filesystemUploadErrorsTotal, filesystemUploadLatencySummary, filesystemUploadPartsTotal, filesystemUploadRequestsTotal, filesystemUploadSuccessTotal, filesystemUploadThroughputGauge, flowMetrics, gcsActiveUploadsGauge, gcsApiCallsTotal, gcsFileSizeHistogram, gcsMetrics, gcsPartSizeHistogram, gcsPartUploadDurationHistogram, gcsUploadDurationHistogram, gcsUploadErrorsTotal, gcsUploadLatencySummary, gcsUploadPartsTotal, gcsUploadRequestsTotal, gcsUploadSuccessTotal, gcsUploadThroughputGauge, getFlowMetrics, getTestMetrics, getUploadMetrics, isObservabilityEnabled, logAzureContext, logAzureOperation, logAzureUploadCompletion, logAzureUploadProgress, logFilesystemContext, logFilesystemOperation, logFilesystemUploadCompletion, logFilesystemUploadProgress, logGCSContext, logGCSOperation, logGCSUploadCompletion, logGCSUploadProgress, logS3Context, logS3Operation, logS3UploadCompletion, logS3UploadProgress, logStorageOperation, logUploadCompletion, logUploadProgress, logWithContext, makeFlowObservabilityLayer, makeFlowObservabilityLive, makeObservabilityLayer, makeStorageObservabilityLayer, makeTestFlowObservability, makeTestFlowObservability$1 as makeTestFlowObservabilityUtil, makeTestStorageObservability, makeTestUploadObservability, makeUploadObservabilityLayer, makeUploadObservabilityLive, runWithTestFlowObservability, runWithTestObservability, s3ActiveUploadsGauge, s3ApiCallsTotal, s3FileSizeHistogram, s3Metrics, s3PartSizeHistogram, s3PartUploadDurationHistogram, s3UploadDurationHistogram, s3UploadErrorsTotal, s3UploadLatencySummary, s3UploadPartsTotal, s3UploadRequestsTotal, s3UploadSuccessTotal, s3UploadThroughputGauge, trackActiveFlow, trackActiveNode, trackAzureError, trackFileSize, trackFilesystemError, trackFlowError, trackGCSError, trackNodeError, trackPartSize, trackS3Error, trackStorageError, trackUploadError, uploadServerMetrics, validateMetricsExist, whenObservabilityEnabled, withActiveUploadTracking, withApiMetrics, withAzureApiMetrics, withAzureOperationMetrics, withAzureSpan, withAzureTimingMetrics, withAzureUploadMetrics, withChunkContext, withChunkDuration, withExecutionContext, withFilesystemApiMetrics, withFilesystemOperationMetrics, withFilesystemSpan, withFilesystemTimingMetrics, withFilesystemUploadMetrics, withFlowContext, withFlowDuration, withFlowSpan, withGCSApiMetrics, withGCSOperationMetrics, withGCSSpan, withGCSTimingMetrics, withGCSUploadMetrics, withMetricTracking, withNodeContext, withNodeDuration, withS3ApiMetrics, withS3OperationMetrics, withS3Span, withS3TimingMetrics, withS3UploadMetrics, withStorageOperationMetrics, withStorageSpan, withThroughputTracking, withTimingMetrics, withUploadContext, withUploadDuration, withUploadMetrics, withUploadSpan };
1008
+ export { AzureMetrics, AzureObservabilityLayer, AzureTracingLayer, CircuitBreakerTracingState, FilesystemMetrics, FilesystemObservabilityLayer, FilesystemTracingLayer, FlowErrorCategory, FlowMetrics, FlowObservability, FlowObservabilityDisabled, FlowObservabilityLive, FlowObservabilityService, GCSMetrics, GCSObservabilityLayer, GCSTracingLayer, MetricsService, NoOpMetricsServiceLive, NodeSdkLive, Observability, ObservabilityDisabled, ObservabilityService, ObservabilityTestFixture, OtlpExporterConfig, OtlpNodeSdkLive, OtlpSdkConfig, OtlpWebSdkLive, OtlpWorkersSdkLive, S3Metrics, S3ObservabilityLayer, S3TracingLayer, StorageErrorCategory, StorageMetrics, StorageObservability, StorageObservabilityDisabled, StorageObservabilityService, TracingService, UploadErrorCategory, UploadObservability, UploadObservabilityDisabled, UploadObservabilityLive, UploadObservabilityService, UploadObservabilityTest, UploadServerMetrics, WebSdkLive, WorkersSdkLive, annotateCircuitBreakerStateChange, azureActiveUploadsGauge, azureApiCallsTotal, azureFileSizeHistogram, azureMetrics, azurePartSizeHistogram, azurePartUploadDurationHistogram, azureUploadDurationHistogram, azureUploadErrorsTotal, azureUploadLatencySummary, azureUploadPartsTotal, azureUploadRequestsTotal, azureUploadSuccessTotal, azureUploadThroughputGauge, captureMetrics, classifyFlowError, classifyStorageError, classifyUploadError, createFlowMetrics, createOtlpMetricExporter, createOtlpNodeSdkLayer, createOtlpTraceExporter, createOtlpWebSdkLayer, createOtlpWorkersSdkLayer, createStorageErrorClassifier, createStorageErrorTracker, createStorageMetrics, createStorageTracingLayer, createTestFixture, createTracingLayer, createUploadErrorClassifier, createUploadGauges, createUploadHistograms, createUploadMetrics, createUploadServerMetrics, createUploadSummaries, filesystemActiveUploadsGauge, filesystemApiCallsTotal, filesystemFileSizeHistogram, filesystemMetrics, filesystemPartSizeHistogram, filesystemPartUploadDurationHistogram, filesystemUploadDurationHistogram, filesystemUploadErrorsTotal, filesystemUploadLatencySummary, filesystemUploadPartsTotal, filesystemUploadRequestsTotal, filesystemUploadSuccessTotal, filesystemUploadThroughputGauge, flowMetrics, gcsActiveUploadsGauge, gcsApiCallsTotal, gcsFileSizeHistogram, gcsMetrics, gcsPartSizeHistogram, gcsPartUploadDurationHistogram, gcsUploadDurationHistogram, gcsUploadErrorsTotal, gcsUploadLatencySummary, gcsUploadPartsTotal, gcsUploadRequestsTotal, gcsUploadSuccessTotal, gcsUploadThroughputGauge, getFlowMetrics, getOtlpEndpoint, getServiceName, getTestMetrics, getUploadMetrics, isObservabilityEnabled, isOtlpExportEnabled, logAzureContext, logAzureOperation, logAzureUploadCompletion, logAzureUploadProgress, logFilesystemContext, logFilesystemOperation, logFilesystemUploadCompletion, logFilesystemUploadProgress, logGCSContext, logGCSOperation, logGCSUploadCompletion, logGCSUploadProgress, logS3Context, logS3Operation, logS3UploadCompletion, logS3UploadProgress, logStorageOperation, logUploadCompletion, logUploadProgress, logWithContext, makeFlowObservabilityLayer, makeFlowObservabilityLive, makeObservabilityLayer, makeStorageObservabilityLayer, makeTestFlowObservability, makeTestFlowObservability$1 as makeTestFlowObservabilityUtil, makeTestStorageObservability, makeTestUploadObservability, makeUploadObservabilityLayer, makeUploadObservabilityLive, parseOtlpHeaders, parseResourceAttributes, runWithTestFlowObservability, runWithTestObservability, s3ActiveUploadsGauge, s3ApiCallsTotal, s3FileSizeHistogram, s3Metrics, s3PartSizeHistogram, s3PartUploadDurationHistogram, s3UploadDurationHistogram, s3UploadErrorsTotal, s3UploadLatencySummary, s3UploadPartsTotal, s3UploadRequestsTotal, s3UploadSuccessTotal, s3UploadThroughputGauge, trackActiveFlow, trackActiveNode, trackAzureError, trackFileSize, trackFilesystemError, trackFlowError, trackGCSError, trackNodeError, trackPartSize, trackS3Error, trackStorageError, trackUploadError, uploadServerMetrics, validateMetricsExist, whenObservabilityEnabled, withActiveUploadTracking, withApiMetrics, withAzureApiMetrics, withAzureOperationMetrics, withAzureSpan, withAzureTimingMetrics, withAzureUploadMetrics, withChunkContext, withChunkDuration, withCircuitBreakerContext, withCircuitBreakerSpan, withExecutionContext, withFilesystemApiMetrics, withFilesystemOperationMetrics, withFilesystemSpan, withFilesystemTimingMetrics, withFilesystemUploadMetrics, withFlowContext, withFlowDuration, withFlowSpan, withGCSApiMetrics, withGCSOperationMetrics, withGCSSpan, withGCSTimingMetrics, withGCSUploadMetrics, withMetricTracking, withNodeContext, withNodeDuration, withS3ApiMetrics, withS3OperationMetrics, withS3Span, withS3TimingMetrics, withS3UploadMetrics, withStorageOperationMetrics, withStorageSpan, withThroughputTracking, withTimingMetrics, withUploadContext, withUploadDuration, withUploadMetrics, withUploadSpan };
736
1009
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/core/metrics.ts","../src/core/errors.ts","../src/core/layers.ts","../src/core/logging.ts","../src/core/testing.ts","../src/core/tracing.ts","../src/core/utilities.ts","../src/flow/errors.ts","../src/flow/layers.ts","../src/flow/metrics.ts","../src/flow/testing.ts","../src/flow/tracing.ts","../src/service/metrics.ts","../src/storage/azure.ts","../src/storage/filesystem.ts","../src/storage/gcs.ts","../src/storage/s3.ts","../src/upload/metrics.ts","../src/upload/errors.ts","../src/upload/layers.ts","../src/upload/testing.ts","../src/upload/tracing.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/core/metrics.ts","../src/core/errors.ts","../src/core/exporters.ts","../src/core/layers.ts","../src/core/logging.ts","../src/core/testing.ts","../src/core/tracing.ts","../src/core/utilities.ts","../src/flow/errors.ts","../src/flow/layers.ts","../src/flow/metrics.ts","../src/flow/testing.ts","../src/flow/tracing.ts","../src/service/metrics.ts","../src/storage/azure.ts","../src/storage/filesystem.ts","../src/storage/gcs.ts","../src/storage/s3.ts","../src/upload/metrics.ts","../src/upload/errors.ts","../src/upload/layers.ts","../src/upload/testing.ts","../src/upload/tracing.ts"],"sourcesContent":[],"mappings":"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"}