@microsoft/opentelemetry 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/README.md +130 -37
  2. package/dist/commonjs/a365/configuration/A365Configuration.d.ts +3 -0
  3. package/dist/commonjs/a365/configuration/A365Configuration.d.ts.map +1 -1
  4. package/dist/commonjs/a365/configuration/A365Configuration.js +5 -1
  5. package/dist/commonjs/a365/configuration/A365Configuration.js.map +1 -1
  6. package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts +3 -0
  7. package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
  8. package/dist/commonjs/a365/constants.d.ts +21 -1
  9. package/dist/commonjs/a365/constants.d.ts.map +1 -1
  10. package/dist/commonjs/a365/constants.js +21 -1
  11. package/dist/commonjs/a365/constants.js.map +1 -1
  12. package/dist/commonjs/a365/contracts.d.ts +53 -2
  13. package/dist/commonjs/a365/contracts.d.ts.map +1 -1
  14. package/dist/commonjs/a365/contracts.js +7 -1
  15. package/dist/commonjs/a365/contracts.js.map +1 -1
  16. package/dist/commonjs/a365/exporter/Agent365Exporter.d.ts +29 -3
  17. package/dist/commonjs/a365/exporter/Agent365Exporter.d.ts.map +1 -1
  18. package/dist/commonjs/a365/exporter/Agent365Exporter.js +327 -73
  19. package/dist/commonjs/a365/exporter/Agent365Exporter.js.map +1 -1
  20. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.d.ts +5 -0
  21. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.d.ts.map +1 -1
  22. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.js +3 -0
  23. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.js.map +1 -1
  24. package/dist/commonjs/a365/exporter/durable/DurableDeliveryManager.d.ts +70 -0
  25. package/dist/commonjs/a365/exporter/durable/DurableDeliveryManager.d.ts.map +1 -0
  26. package/dist/commonjs/a365/exporter/durable/DurableDeliveryManager.js +346 -0
  27. package/dist/commonjs/a365/exporter/durable/DurableDeliveryManager.js.map +1 -0
  28. package/dist/commonjs/a365/exporter/durable/DurableDeliveryOptions.d.ts +31 -0
  29. package/dist/commonjs/a365/exporter/durable/DurableDeliveryOptions.d.ts.map +1 -0
  30. package/dist/commonjs/a365/exporter/durable/DurableDeliveryOptions.js +48 -0
  31. package/dist/commonjs/a365/exporter/durable/DurableDeliveryOptions.js.map +1 -0
  32. package/dist/commonjs/a365/exporter/durable/DurableRecord.d.ts +20 -0
  33. package/dist/commonjs/a365/exporter/durable/DurableRecord.d.ts.map +1 -0
  34. package/dist/commonjs/a365/exporter/durable/DurableRecord.js +98 -0
  35. package/dist/commonjs/a365/exporter/durable/DurableRecord.js.map +1 -0
  36. package/dist/commonjs/a365/exporter/durable/PersistentStore.d.ts +48 -0
  37. package/dist/commonjs/a365/exporter/durable/PersistentStore.d.ts.map +1 -0
  38. package/dist/commonjs/a365/exporter/durable/PersistentStore.js +637 -0
  39. package/dist/commonjs/a365/exporter/durable/PersistentStore.js.map +1 -0
  40. package/dist/commonjs/a365/exporter/durable/TransmissionGate.d.ts +24 -0
  41. package/dist/commonjs/a365/exporter/durable/TransmissionGate.d.ts.map +1 -0
  42. package/dist/commonjs/a365/exporter/durable/TransmissionGate.js +85 -0
  43. package/dist/commonjs/a365/exporter/durable/TransmissionGate.js.map +1 -0
  44. package/dist/commonjs/a365/exporter/durable/WindowsFileAccessControl.d.ts +35 -0
  45. package/dist/commonjs/a365/exporter/durable/WindowsFileAccessControl.d.ts.map +1 -0
  46. package/dist/commonjs/a365/exporter/durable/WindowsFileAccessControl.js +169 -0
  47. package/dist/commonjs/a365/exporter/durable/WindowsFileAccessControl.js.map +1 -0
  48. package/dist/commonjs/a365/exporter/durable/index.d.ts +12 -0
  49. package/dist/commonjs/a365/exporter/durable/index.d.ts.map +1 -0
  50. package/dist/commonjs/a365/exporter/durable/index.js +27 -0
  51. package/dist/commonjs/a365/exporter/durable/index.js.map +1 -0
  52. package/dist/commonjs/a365/exporter/index.d.ts +1 -1
  53. package/dist/commonjs/a365/exporter/index.d.ts.map +1 -1
  54. package/dist/commonjs/a365/exporter/index.js.map +1 -1
  55. package/dist/commonjs/a365/index.d.ts +3 -3
  56. package/dist/commonjs/a365/index.d.ts.map +1 -1
  57. package/dist/commonjs/a365/index.js +7 -2
  58. package/dist/commonjs/a365/index.js.map +1 -1
  59. package/dist/commonjs/a365/message-utils.d.ts +13 -1
  60. package/dist/commonjs/a365/message-utils.d.ts.map +1 -1
  61. package/dist/commonjs/a365/message-utils.js +272 -0
  62. package/dist/commonjs/a365/message-utils.js.map +1 -1
  63. package/dist/commonjs/a365/middleware/BaggageBuilder.d.ts +11 -1
  64. package/dist/commonjs/a365/middleware/BaggageBuilder.d.ts.map +1 -1
  65. package/dist/commonjs/a365/middleware/BaggageBuilder.js +93 -17
  66. package/dist/commonjs/a365/middleware/BaggageBuilder.js.map +1 -1
  67. package/dist/commonjs/a365/processors/A365SpanProcessor.d.ts +1 -0
  68. package/dist/commonjs/a365/processors/A365SpanProcessor.d.ts.map +1 -1
  69. package/dist/commonjs/a365/processors/A365SpanProcessor.js +61 -19
  70. package/dist/commonjs/a365/processors/A365SpanProcessor.js.map +1 -1
  71. package/dist/commonjs/a365/processors/util.d.ts.map +1 -1
  72. package/dist/commonjs/a365/processors/util.js +3 -0
  73. package/dist/commonjs/a365/processors/util.js.map +1 -1
  74. package/dist/commonjs/a365/scopes/ApplyGuardrailScope.d.ts.map +1 -1
  75. package/dist/commonjs/a365/scopes/ApplyGuardrailScope.js +1 -6
  76. package/dist/commonjs/a365/scopes/ApplyGuardrailScope.js.map +1 -1
  77. package/dist/commonjs/a365/scopes/ExecuteToolScope.d.ts +2 -1
  78. package/dist/commonjs/a365/scopes/ExecuteToolScope.d.ts.map +1 -1
  79. package/dist/commonjs/a365/scopes/ExecuteToolScope.js +7 -10
  80. package/dist/commonjs/a365/scopes/ExecuteToolScope.js.map +1 -1
  81. package/dist/commonjs/a365/scopes/InferenceScope.d.ts.map +1 -1
  82. package/dist/commonjs/a365/scopes/InferenceScope.js +1 -5
  83. package/dist/commonjs/a365/scopes/InferenceScope.js.map +1 -1
  84. package/dist/commonjs/a365/scopes/InvokeAgentScope.d.ts +6 -2
  85. package/dist/commonjs/a365/scopes/InvokeAgentScope.d.ts.map +1 -1
  86. package/dist/commonjs/a365/scopes/InvokeAgentScope.js +37 -14
  87. package/dist/commonjs/a365/scopes/InvokeAgentScope.js.map +1 -1
  88. package/dist/commonjs/a365/scopes/OpenTelemetryScope.d.ts +6 -3
  89. package/dist/commonjs/a365/scopes/OpenTelemetryScope.d.ts.map +1 -1
  90. package/dist/commonjs/a365/scopes/OpenTelemetryScope.js +23 -12
  91. package/dist/commonjs/a365/scopes/OpenTelemetryScope.js.map +1 -1
  92. package/dist/commonjs/a365/scopes/OutputScope.d.ts.map +1 -1
  93. package/dist/commonjs/a365/scopes/OutputScope.js +1 -5
  94. package/dist/commonjs/a365/scopes/OutputScope.js.map +1 -1
  95. package/dist/commonjs/a365/tool-call-models.d.ts +149 -0
  96. package/dist/commonjs/a365/tool-call-models.d.ts.map +1 -0
  97. package/dist/commonjs/a365/tool-call-models.js +69 -0
  98. package/dist/commonjs/a365/tool-call-models.js.map +1 -0
  99. package/dist/commonjs/azureMonitor/index.d.ts.map +1 -1
  100. package/dist/commonjs/azureMonitor/index.js +4 -10
  101. package/dist/commonjs/azureMonitor/index.js.map +1 -1
  102. package/dist/commonjs/azureMonitor/logs/handler.d.ts +0 -7
  103. package/dist/commonjs/azureMonitor/logs/handler.d.ts.map +1 -1
  104. package/dist/commonjs/azureMonitor/logs/handler.js +0 -27
  105. package/dist/commonjs/azureMonitor/logs/handler.js.map +1 -1
  106. package/dist/commonjs/azureMonitor/metrics/performanceCounters.d.ts +3 -0
  107. package/dist/commonjs/azureMonitor/metrics/performanceCounters.d.ts.map +1 -1
  108. package/dist/commonjs/azureMonitor/metrics/performanceCounters.js +21 -12
  109. package/dist/commonjs/azureMonitor/metrics/performanceCounters.js.map +1 -1
  110. package/dist/commonjs/azureMonitor/traces/handler.d.ts +2 -9
  111. package/dist/commonjs/azureMonitor/traces/handler.d.ts.map +1 -1
  112. package/dist/commonjs/azureMonitor/traces/handler.js +2 -54
  113. package/dist/commonjs/azureMonitor/traces/handler.js.map +1 -1
  114. package/dist/commonjs/azureMonitor/utils/common.d.ts +29 -0
  115. package/dist/commonjs/azureMonitor/utils/common.d.ts.map +1 -1
  116. package/dist/commonjs/azureMonitor/utils/common.js +55 -0
  117. package/dist/commonjs/azureMonitor/utils/common.js.map +1 -1
  118. package/dist/commonjs/distro/distro.d.ts.map +1 -1
  119. package/dist/commonjs/distro/distro.js +3 -0
  120. package/dist/commonjs/distro/distro.js.map +1 -1
  121. package/dist/commonjs/genai/instrumentations/langchain/tracer.d.ts.map +1 -1
  122. package/dist/commonjs/genai/instrumentations/langchain/tracer.js +1 -0
  123. package/dist/commonjs/genai/instrumentations/langchain/tracer.js.map +1 -1
  124. package/dist/commonjs/genai/instrumentations/langchain/utils.d.ts +1 -0
  125. package/dist/commonjs/genai/instrumentations/langchain/utils.d.ts.map +1 -1
  126. package/dist/commonjs/genai/instrumentations/langchain/utils.js +109 -0
  127. package/dist/commonjs/genai/instrumentations/langchain/utils.js.map +1 -1
  128. package/dist/commonjs/genai/semconv.d.ts +10 -0
  129. package/dist/commonjs/genai/semconv.d.ts.map +1 -1
  130. package/dist/commonjs/genai/semconv.js +11 -1
  131. package/dist/commonjs/genai/semconv.js.map +1 -1
  132. package/dist/commonjs/index.d.ts +5 -4
  133. package/dist/commonjs/index.d.ts.map +1 -1
  134. package/dist/commonjs/index.js +66 -59
  135. package/dist/commonjs/index.js.map +1 -1
  136. package/dist/commonjs/shared/config.d.ts +7 -0
  137. package/dist/commonjs/shared/config.d.ts.map +1 -1
  138. package/dist/commonjs/shared/config.js +19 -3
  139. package/dist/commonjs/shared/config.js.map +1 -1
  140. package/dist/commonjs/types.d.ts +1 -1
  141. package/dist/commonjs/types.js +1 -1
  142. package/dist/commonjs/utils/sdkStats.d.ts +7 -0
  143. package/dist/commonjs/utils/sdkStats.d.ts.map +1 -1
  144. package/dist/commonjs/utils/sdkStats.js +12 -2
  145. package/dist/commonjs/utils/sdkStats.js.map +1 -1
  146. package/dist/esm/a365/configuration/A365Configuration.d.ts +3 -0
  147. package/dist/esm/a365/configuration/A365Configuration.d.ts.map +1 -1
  148. package/dist/esm/a365/configuration/A365Configuration.js +5 -1
  149. package/dist/esm/a365/configuration/A365Configuration.js.map +1 -1
  150. package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts +3 -0
  151. package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
  152. package/dist/esm/a365/constants.d.ts +21 -1
  153. package/dist/esm/a365/constants.d.ts.map +1 -1
  154. package/dist/esm/a365/constants.js +20 -0
  155. package/dist/esm/a365/constants.js.map +1 -1
  156. package/dist/esm/a365/contracts.d.ts +53 -2
  157. package/dist/esm/a365/contracts.d.ts.map +1 -1
  158. package/dist/esm/a365/contracts.js +1 -0
  159. package/dist/esm/a365/contracts.js.map +1 -1
  160. package/dist/esm/a365/exporter/Agent365Exporter.d.ts +29 -3
  161. package/dist/esm/a365/exporter/Agent365Exporter.d.ts.map +1 -1
  162. package/dist/esm/a365/exporter/Agent365Exporter.js +325 -71
  163. package/dist/esm/a365/exporter/Agent365Exporter.js.map +1 -1
  164. package/dist/esm/a365/exporter/Agent365ExporterOptions.d.ts +5 -0
  165. package/dist/esm/a365/exporter/Agent365ExporterOptions.d.ts.map +1 -1
  166. package/dist/esm/a365/exporter/Agent365ExporterOptions.js +3 -0
  167. package/dist/esm/a365/exporter/Agent365ExporterOptions.js.map +1 -1
  168. package/dist/esm/a365/exporter/durable/DurableDeliveryManager.d.ts +70 -0
  169. package/dist/esm/a365/exporter/durable/DurableDeliveryManager.d.ts.map +1 -0
  170. package/dist/esm/a365/exporter/durable/DurableDeliveryManager.js +342 -0
  171. package/dist/esm/a365/exporter/durable/DurableDeliveryManager.js.map +1 -0
  172. package/dist/esm/a365/exporter/durable/DurableDeliveryOptions.d.ts +31 -0
  173. package/dist/esm/a365/exporter/durable/DurableDeliveryOptions.d.ts.map +1 -0
  174. package/dist/esm/a365/exporter/durable/DurableDeliveryOptions.js +44 -0
  175. package/dist/esm/a365/exporter/durable/DurableDeliveryOptions.js.map +1 -0
  176. package/dist/esm/a365/exporter/durable/DurableRecord.d.ts +20 -0
  177. package/dist/esm/a365/exporter/durable/DurableRecord.d.ts.map +1 -0
  178. package/dist/esm/a365/exporter/durable/DurableRecord.js +93 -0
  179. package/dist/esm/a365/exporter/durable/DurableRecord.js.map +1 -0
  180. package/dist/esm/a365/exporter/durable/PersistentStore.d.ts +48 -0
  181. package/dist/esm/a365/exporter/durable/PersistentStore.d.ts.map +1 -0
  182. package/dist/esm/a365/exporter/durable/PersistentStore.js +599 -0
  183. package/dist/esm/a365/exporter/durable/PersistentStore.js.map +1 -0
  184. package/dist/esm/a365/exporter/durable/TransmissionGate.d.ts +24 -0
  185. package/dist/esm/a365/exporter/durable/TransmissionGate.d.ts.map +1 -0
  186. package/dist/esm/a365/exporter/durable/TransmissionGate.js +80 -0
  187. package/dist/esm/a365/exporter/durable/TransmissionGate.js.map +1 -0
  188. package/dist/esm/a365/exporter/durable/WindowsFileAccessControl.d.ts +35 -0
  189. package/dist/esm/a365/exporter/durable/WindowsFileAccessControl.d.ts.map +1 -0
  190. package/dist/esm/a365/exporter/durable/WindowsFileAccessControl.js +164 -0
  191. package/dist/esm/a365/exporter/durable/WindowsFileAccessControl.js.map +1 -0
  192. package/dist/esm/a365/exporter/durable/index.d.ts +12 -0
  193. package/dist/esm/a365/exporter/durable/index.d.ts.map +1 -0
  194. package/dist/esm/a365/exporter/durable/index.js +9 -0
  195. package/dist/esm/a365/exporter/durable/index.js.map +1 -0
  196. package/dist/esm/a365/exporter/index.d.ts +1 -1
  197. package/dist/esm/a365/exporter/index.d.ts.map +1 -1
  198. package/dist/esm/a365/exporter/index.js.map +1 -1
  199. package/dist/esm/a365/index.d.ts +3 -3
  200. package/dist/esm/a365/index.d.ts.map +1 -1
  201. package/dist/esm/a365/index.js +1 -1
  202. package/dist/esm/a365/index.js.map +1 -1
  203. package/dist/esm/a365/message-utils.d.ts +13 -1
  204. package/dist/esm/a365/message-utils.d.ts.map +1 -1
  205. package/dist/esm/a365/message-utils.js +271 -1
  206. package/dist/esm/a365/message-utils.js.map +1 -1
  207. package/dist/esm/a365/middleware/BaggageBuilder.d.ts +11 -1
  208. package/dist/esm/a365/middleware/BaggageBuilder.d.ts.map +1 -1
  209. package/dist/esm/a365/middleware/BaggageBuilder.js +94 -18
  210. package/dist/esm/a365/middleware/BaggageBuilder.js.map +1 -1
  211. package/dist/esm/a365/processors/A365SpanProcessor.d.ts +1 -0
  212. package/dist/esm/a365/processors/A365SpanProcessor.d.ts.map +1 -1
  213. package/dist/esm/a365/processors/A365SpanProcessor.js +62 -20
  214. package/dist/esm/a365/processors/A365SpanProcessor.js.map +1 -1
  215. package/dist/esm/a365/processors/util.d.ts.map +1 -1
  216. package/dist/esm/a365/processors/util.js +3 -0
  217. package/dist/esm/a365/processors/util.js.map +1 -1
  218. package/dist/esm/a365/scopes/ApplyGuardrailScope.d.ts.map +1 -1
  219. package/dist/esm/a365/scopes/ApplyGuardrailScope.js +1 -6
  220. package/dist/esm/a365/scopes/ApplyGuardrailScope.js.map +1 -1
  221. package/dist/esm/a365/scopes/ExecuteToolScope.d.ts +2 -1
  222. package/dist/esm/a365/scopes/ExecuteToolScope.d.ts.map +1 -1
  223. package/dist/esm/a365/scopes/ExecuteToolScope.js +8 -11
  224. package/dist/esm/a365/scopes/ExecuteToolScope.js.map +1 -1
  225. package/dist/esm/a365/scopes/InferenceScope.d.ts.map +1 -1
  226. package/dist/esm/a365/scopes/InferenceScope.js +1 -5
  227. package/dist/esm/a365/scopes/InferenceScope.js.map +1 -1
  228. package/dist/esm/a365/scopes/InvokeAgentScope.d.ts +6 -2
  229. package/dist/esm/a365/scopes/InvokeAgentScope.d.ts.map +1 -1
  230. package/dist/esm/a365/scopes/InvokeAgentScope.js +37 -14
  231. package/dist/esm/a365/scopes/InvokeAgentScope.js.map +1 -1
  232. package/dist/esm/a365/scopes/OpenTelemetryScope.d.ts +6 -3
  233. package/dist/esm/a365/scopes/OpenTelemetryScope.d.ts.map +1 -1
  234. package/dist/esm/a365/scopes/OpenTelemetryScope.js +23 -12
  235. package/dist/esm/a365/scopes/OpenTelemetryScope.js.map +1 -1
  236. package/dist/esm/a365/scopes/OutputScope.d.ts.map +1 -1
  237. package/dist/esm/a365/scopes/OutputScope.js +1 -5
  238. package/dist/esm/a365/scopes/OutputScope.js.map +1 -1
  239. package/dist/esm/a365/tool-call-models.d.ts +149 -0
  240. package/dist/esm/a365/tool-call-models.d.ts.map +1 -0
  241. package/dist/esm/a365/tool-call-models.js +64 -0
  242. package/dist/esm/a365/tool-call-models.js.map +1 -0
  243. package/dist/esm/azureMonitor/index.d.ts.map +1 -1
  244. package/dist/esm/azureMonitor/index.js +4 -10
  245. package/dist/esm/azureMonitor/index.js.map +1 -1
  246. package/dist/esm/azureMonitor/logs/handler.d.ts +0 -7
  247. package/dist/esm/azureMonitor/logs/handler.d.ts.map +1 -1
  248. package/dist/esm/azureMonitor/logs/handler.js +0 -27
  249. package/dist/esm/azureMonitor/logs/handler.js.map +1 -1
  250. package/dist/esm/azureMonitor/metrics/performanceCounters.d.ts +3 -0
  251. package/dist/esm/azureMonitor/metrics/performanceCounters.d.ts.map +1 -1
  252. package/dist/esm/azureMonitor/metrics/performanceCounters.js +21 -12
  253. package/dist/esm/azureMonitor/metrics/performanceCounters.js.map +1 -1
  254. package/dist/esm/azureMonitor/traces/handler.d.ts +2 -9
  255. package/dist/esm/azureMonitor/traces/handler.d.ts.map +1 -1
  256. package/dist/esm/azureMonitor/traces/handler.js +2 -54
  257. package/dist/esm/azureMonitor/traces/handler.js.map +1 -1
  258. package/dist/esm/azureMonitor/utils/common.d.ts +29 -0
  259. package/dist/esm/azureMonitor/utils/common.d.ts.map +1 -1
  260. package/dist/esm/azureMonitor/utils/common.js +52 -0
  261. package/dist/esm/azureMonitor/utils/common.js.map +1 -1
  262. package/dist/esm/distro/distro.d.ts.map +1 -1
  263. package/dist/esm/distro/distro.js +3 -0
  264. package/dist/esm/distro/distro.js.map +1 -1
  265. package/dist/esm/genai/instrumentations/langchain/tracer.d.ts.map +1 -1
  266. package/dist/esm/genai/instrumentations/langchain/tracer.js +1 -0
  267. package/dist/esm/genai/instrumentations/langchain/tracer.js.map +1 -1
  268. package/dist/esm/genai/instrumentations/langchain/utils.d.ts +1 -0
  269. package/dist/esm/genai/instrumentations/langchain/utils.d.ts.map +1 -1
  270. package/dist/esm/genai/instrumentations/langchain/utils.js +109 -1
  271. package/dist/esm/genai/instrumentations/langchain/utils.js.map +1 -1
  272. package/dist/esm/genai/semconv.d.ts +10 -0
  273. package/dist/esm/genai/semconv.d.ts.map +1 -1
  274. package/dist/esm/genai/semconv.js +10 -0
  275. package/dist/esm/genai/semconv.js.map +1 -1
  276. package/dist/esm/index.d.ts +5 -4
  277. package/dist/esm/index.d.ts.map +1 -1
  278. package/dist/esm/index.js +2 -1
  279. package/dist/esm/index.js.map +1 -1
  280. package/dist/esm/shared/config.d.ts +7 -0
  281. package/dist/esm/shared/config.d.ts.map +1 -1
  282. package/dist/esm/shared/config.js +19 -3
  283. package/dist/esm/shared/config.js.map +1 -1
  284. package/dist/esm/types.d.ts +1 -1
  285. package/dist/esm/types.js +1 -1
  286. package/dist/esm/utils/sdkStats.d.ts +7 -0
  287. package/dist/esm/utils/sdkStats.d.ts.map +1 -1
  288. package/dist/esm/utils/sdkStats.js +12 -2
  289. package/dist/esm/utils/sdkStats.js.map +1 -1
  290. package/package.json +7 -5
@@ -0,0 +1,70 @@
1
+ import type { ILogger } from "../../logging.js";
2
+ import { ResolvedDurableDeliveryOptions } from "./DurableDeliveryOptions.js";
3
+ import type { DurableRecordV1 } from "./DurableRecord.js";
4
+ import { PersistentStore } from "./PersistentStore.js";
5
+ export type DeliveryAttempt = {
6
+ kind: "success";
7
+ correlationId: string;
8
+ } | {
9
+ kind: "retryable";
10
+ correlationId: string;
11
+ status?: number;
12
+ retryAfterMs?: number;
13
+ } | {
14
+ kind: "permanent";
15
+ correlationId: string;
16
+ status?: number;
17
+ reason: string;
18
+ };
19
+ export interface DurableDeliveryDependencies {
20
+ validateReplay?(record: DurableRecordV1): Promise<void> | void;
21
+ resolveToken(record: DurableRecordV1): Promise<string | null>;
22
+ send(record: DurableRecordV1, token: string, signal: AbortSignal): Promise<DeliveryAttempt>;
23
+ }
24
+ export declare class DurableDeliveryManager {
25
+ private readonly options;
26
+ private readonly store;
27
+ private readonly logger;
28
+ private readonly dependencies;
29
+ private readonly gate;
30
+ private readonly abortController;
31
+ private readonly active;
32
+ private replayTimer?;
33
+ private replayQueue;
34
+ private closed;
35
+ private replayStopped;
36
+ private shutdownComplete;
37
+ private shutdownPromise?;
38
+ constructor(options: ResolvedDurableDeliveryOptions, store: PersistentStore, logger: ILogger, dependencies: DurableDeliveryDependencies);
39
+ /**
40
+ * Starts a replay pass immediately. The regular replay timer remains active
41
+ * for subsequent passes.
42
+ */
43
+ startReplay(): void;
44
+ deliver(record: DurableRecordV1): Promise<boolean>;
45
+ forceFlush(): Promise<void>;
46
+ /**
47
+ * Stops new replay work and aborts active network requests without rejecting
48
+ * already-admitted durable records. Callers can then wait for those records
49
+ * to finish their durable handoff before invoking {@link shutdown}.
50
+ */
51
+ beginShutdown(): void;
52
+ shutdown(): Promise<void>;
53
+ private shutdownInternal;
54
+ private deliverInternal;
55
+ private scheduleReplay;
56
+ private runReplayPass;
57
+ private runReplayPassInternal;
58
+ private processClaim;
59
+ private persist;
60
+ private releaseClaim;
61
+ private completeClaim;
62
+ private track;
63
+ private waitForActiveWork;
64
+ private waitForActiveWorkToStability;
65
+ private attemptSend;
66
+ private classifyAttempt;
67
+ private validateReplay;
68
+ private withTimeout;
69
+ }
70
+ //# sourceMappingURL=DurableDeliveryManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableDeliveryManager.d.ts","sourceRoot":"","sources":["../../../../../src/a365/exporter/durable/DurableDeliveryManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAsB,MAAM,sBAAsB,CAAC;AAG3E,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,WAAW,2BAA2B;IAC1C,cAAc,CAAC,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/D,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7F;AAoBD,qBAAa,sBAAsB;IAY/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAd/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,WAAW,CAAC,CAAgC;IACpD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAC,CAAgB;gBAGrB,OAAO,EAAE,8BAA8B,EACvC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,2BAA2B;IAM5D;;;OAGG;IACI,WAAW,IAAI,IAAI;IAWnB,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAO5C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC;;;;OAIG;IACI,aAAa,IAAI,IAAI;IASrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YASlB,gBAAgB;YAWhB,eAAe;IA4B7B,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,aAAa;YAWP,qBAAqB;YA8BrB,YAAY;YAuCZ,OAAO;YAUP,YAAY;YAQZ,aAAa;IAQ3B,OAAO,CAAC,KAAK;YAQC,iBAAiB;YAqBjB,4BAA4B;YAM5B,WAAW;IA4CzB,OAAO,CAAC,eAAe;YAcT,cAAc;YAgBd,WAAW;CAyC1B"}
@@ -0,0 +1,342 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { setMaxListeners } from "node:events";
4
+ import { TransmissionGate } from "./TransmissionGate.js";
5
+ export class DurableDeliveryManager {
6
+ options;
7
+ store;
8
+ logger;
9
+ dependencies;
10
+ gate = new TransmissionGate();
11
+ abortController = new AbortController();
12
+ active = new Set();
13
+ replayTimer;
14
+ replayQueue = Promise.resolve();
15
+ closed = false;
16
+ replayStopped = false;
17
+ shutdownComplete = false;
18
+ shutdownPromise;
19
+ constructor(options, store, logger, dependencies) {
20
+ this.options = options;
21
+ this.store = store;
22
+ this.logger = logger;
23
+ this.dependencies = dependencies;
24
+ setMaxListeners(0, this.abortController.signal);
25
+ this.scheduleReplay();
26
+ }
27
+ /**
28
+ * Starts a replay pass immediately. The regular replay timer remains active
29
+ * for subsequent passes.
30
+ */
31
+ startReplay() {
32
+ if (this.closed || this.replayStopped) {
33
+ return;
34
+ }
35
+ void this.runReplayPass().then(() => undefined, (error) => this.logger.error("[DurableDeliveryManager] Initial replay failed", error));
36
+ }
37
+ deliver(record) {
38
+ if (this.closed) {
39
+ return Promise.resolve(false);
40
+ }
41
+ return this.track(this.deliverInternal(record));
42
+ }
43
+ async forceFlush() {
44
+ if (this.closed) {
45
+ return;
46
+ }
47
+ await this.waitForActiveWorkToStability();
48
+ if (this.closed) {
49
+ return;
50
+ }
51
+ await this.runReplayPass();
52
+ }
53
+ /**
54
+ * Stops new replay work and aborts active network requests without rejecting
55
+ * already-admitted durable records. Callers can then wait for those records
56
+ * to finish their durable handoff before invoking {@link shutdown}.
57
+ */
58
+ beginShutdown() {
59
+ this.replayStopped = true;
60
+ if (this.replayTimer) {
61
+ clearTimeout(this.replayTimer);
62
+ this.replayTimer = undefined;
63
+ }
64
+ this.abortController.abort();
65
+ }
66
+ shutdown() {
67
+ if (this.shutdownComplete) {
68
+ return Promise.resolve();
69
+ }
70
+ this.shutdownPromise ??= this.shutdownInternal();
71
+ return this.shutdownPromise;
72
+ }
73
+ async shutdownInternal() {
74
+ this.closed = true;
75
+ this.beginShutdown();
76
+ if (!(await this.waitForActiveWork(this.options.shutdownTimeoutMilliseconds))) {
77
+ throw new Error("Agent365 durable delivery shutdown timed out");
78
+ }
79
+ this.shutdownComplete = true;
80
+ }
81
+ async deliverInternal(record) {
82
+ const decision = await this.attemptSend(record, "live");
83
+ if (decision.kind === "success") {
84
+ return true;
85
+ }
86
+ if (decision.kind === "permanent") {
87
+ return false;
88
+ }
89
+ if (decision.kind === "tokenUnavailable") {
90
+ if (decision.error !== undefined) {
91
+ this.logger.warn("[DurableDeliveryManager] Live token resolution failed; persisting durable record for replay", decision.error);
92
+ }
93
+ return this.persist(record);
94
+ }
95
+ if (decision.kind === "retryable" && decision.error !== undefined) {
96
+ this.logger.warn("[DurableDeliveryManager] Live delivery failed; persisting for replay", decision.error);
97
+ }
98
+ return this.persist(record);
99
+ }
100
+ scheduleReplay() {
101
+ if (this.closed || this.replayStopped || this.replayTimer) {
102
+ return;
103
+ }
104
+ this.replayTimer = setTimeout(() => {
105
+ this.replayTimer = undefined;
106
+ void this.runReplayPass().then(() => this.scheduleReplay(), (error) => {
107
+ this.logger.error("[DurableDeliveryManager] Scheduled replay failed", error);
108
+ this.scheduleReplay();
109
+ });
110
+ }, this.options.replayIntervalMilliseconds);
111
+ this.replayTimer.unref();
112
+ }
113
+ runReplayPass() {
114
+ const replayPass = this.replayQueue.then(async () => {
115
+ if (this.closed || this.replayStopped) {
116
+ return;
117
+ }
118
+ await this.runReplayPassInternal();
119
+ });
120
+ this.replayQueue = replayPass.catch(() => undefined);
121
+ return this.track(replayPass);
122
+ }
123
+ async runReplayPassInternal() {
124
+ const skippedRecordIds = new Set();
125
+ for (let index = 0; index < this.options.maxReplayBatchSize; index++) {
126
+ if (this.closed || this.replayStopped) {
127
+ return;
128
+ }
129
+ let claim;
130
+ try {
131
+ [claim] = await this.store.claimBatch(1, { excludeRecordIds: skippedRecordIds });
132
+ }
133
+ catch (error) {
134
+ this.logger.error("[DurableDeliveryManager] Failed to claim durable records", error);
135
+ return;
136
+ }
137
+ if (!claim) {
138
+ return;
139
+ }
140
+ const outcome = await this.processClaim(claim);
141
+ if (outcome === "stop") {
142
+ return;
143
+ }
144
+ if (outcome === "exclude") {
145
+ skippedRecordIds.add(claim.record.id);
146
+ }
147
+ }
148
+ }
149
+ async processClaim(claim) {
150
+ const decision = await this.attemptSend(claim.record, "replay");
151
+ if (decision.kind === "success" || decision.kind === "permanent") {
152
+ await this.completeClaim(claim);
153
+ return "advance";
154
+ }
155
+ if (decision.kind === "endpointInvalid") {
156
+ this.logger.warn(`[DurableDeliveryManager] Replay endpoint validation failed; releasing durable record: ${decision.error.message}`, decision.error);
157
+ await this.releaseClaim(claim);
158
+ return "stop";
159
+ }
160
+ if (decision.kind === "tokenUnavailable") {
161
+ if (decision.error !== undefined) {
162
+ this.logger.warn("[DurableDeliveryManager] Replay token resolution failed; releasing durable record", decision.error);
163
+ }
164
+ await this.releaseClaim(claim);
165
+ // Exclude this record from later claims in the same pass instead of
166
+ // stopping outright, so unrelated records that sort after it are not
167
+ // starved by repeatedly reclaiming the same released record.
168
+ return "exclude";
169
+ }
170
+ if (decision.kind === "retryable" && decision.error !== undefined) {
171
+ this.logger.warn("[DurableDeliveryManager] Replay failed; releasing durable record", decision.error);
172
+ }
173
+ await this.releaseClaim(claim);
174
+ return "stop";
175
+ }
176
+ async persist(record) {
177
+ try {
178
+ await this.store.persist(record);
179
+ return true;
180
+ }
181
+ catch (error) {
182
+ this.logger.error("[DurableDeliveryManager] Failed to persist durable record", error);
183
+ return false;
184
+ }
185
+ }
186
+ async releaseClaim(claim) {
187
+ try {
188
+ await this.store.release(claim);
189
+ }
190
+ catch (error) {
191
+ this.logger.error("[DurableDeliveryManager] Failed to release durable record", error);
192
+ }
193
+ }
194
+ async completeClaim(claim) {
195
+ try {
196
+ await this.store.complete(claim);
197
+ }
198
+ catch (error) {
199
+ this.logger.error("[DurableDeliveryManager] Failed to complete durable record", error);
200
+ }
201
+ }
202
+ track(operation) {
203
+ const tracked = operation.finally(() => {
204
+ this.active.delete(tracked);
205
+ });
206
+ this.active.add(tracked);
207
+ return tracked;
208
+ }
209
+ async waitForActiveWork(timeoutMs) {
210
+ const deadline = Date.now() + timeoutMs;
211
+ while (this.active.size > 0) {
212
+ const remainingMs = deadline - Date.now();
213
+ if (remainingMs <= 0) {
214
+ return false;
215
+ }
216
+ const settled = await Promise.race([
217
+ Promise.allSettled([...this.active]).then(() => true),
218
+ delay(remainingMs).then(() => false),
219
+ ]);
220
+ if (!settled) {
221
+ return false;
222
+ }
223
+ }
224
+ return true;
225
+ }
226
+ async waitForActiveWorkToStability() {
227
+ while (this.active.size > 0) {
228
+ await Promise.allSettled([...this.active]);
229
+ }
230
+ }
231
+ async attemptSend(record, mode) {
232
+ if (!this.gate.canAcquire()) {
233
+ return { kind: "deferred" };
234
+ }
235
+ if (mode === "replay") {
236
+ const decision = await this.validateReplay(record);
237
+ if (decision) {
238
+ return decision;
239
+ }
240
+ }
241
+ let token;
242
+ try {
243
+ token = await this.withTimeout(this.dependencies.resolveToken(record), this.options.tokenResolutionTimeoutMilliseconds, "token resolution");
244
+ }
245
+ catch (error) {
246
+ return { kind: "tokenUnavailable", error };
247
+ }
248
+ if (!token) {
249
+ return { kind: "tokenUnavailable" };
250
+ }
251
+ const permit = this.gate.acquire();
252
+ if (!permit) {
253
+ return { kind: "deferred" };
254
+ }
255
+ try {
256
+ const attempt = await this.dependencies.send(record, token, this.abortController.signal);
257
+ return this.classifyAttempt(permit, attempt);
258
+ }
259
+ catch (error) {
260
+ this.gate.recordRetryableFailure(permit);
261
+ return { kind: "retryable", error };
262
+ }
263
+ }
264
+ classifyAttempt(permit, attempt) {
265
+ if (attempt.kind === "success") {
266
+ this.gate.recordSuccess(permit);
267
+ return { kind: "success" };
268
+ }
269
+ if (attempt.kind === "permanent") {
270
+ this.gate.recordSuccess(permit);
271
+ return { kind: "permanent" };
272
+ }
273
+ this.gate.recordRetryableFailure(permit, attempt.retryAfterMs);
274
+ return { kind: "retryable" };
275
+ }
276
+ async validateReplay(record) {
277
+ if (!this.dependencies.validateReplay) {
278
+ return undefined;
279
+ }
280
+ try {
281
+ await this.dependencies.validateReplay(record);
282
+ return undefined;
283
+ }
284
+ catch (error) {
285
+ if (isEndpointValidationError(error, "ReplayEndpointError")) {
286
+ return { kind: "endpointInvalid", error };
287
+ }
288
+ return { kind: "retryable", error };
289
+ }
290
+ }
291
+ async withTimeout(operation, timeoutMs, operationName) {
292
+ let timeoutHandle;
293
+ let onAbort;
294
+ const signal = this.abortController.signal;
295
+ try {
296
+ return await Promise.race([
297
+ operation,
298
+ new Promise((_resolve, reject) => {
299
+ timeoutHandle = setTimeout(() => {
300
+ reject(new Error(`Agent365 durable delivery ${operationName} timed out`));
301
+ }, timeoutMs);
302
+ timeoutHandle.unref?.();
303
+ }),
304
+ new Promise((_resolve, reject) => {
305
+ // Abort a hung wait promptly on shutdown, even when timeoutMs
306
+ // exceeds the shutdown deadline; always remove the listener so
307
+ // repeated calls do not accumulate listeners on the shared signal.
308
+ const rejectAborted = () => reject(new Error(`Agent365 durable delivery ${operationName} aborted`));
309
+ if (signal.aborted) {
310
+ rejectAborted();
311
+ return;
312
+ }
313
+ onAbort = rejectAborted;
314
+ signal.addEventListener("abort", onAbort, { once: true });
315
+ }),
316
+ ]);
317
+ }
318
+ finally {
319
+ if (timeoutHandle) {
320
+ clearTimeout(timeoutHandle);
321
+ }
322
+ if (onAbort) {
323
+ signal.removeEventListener("abort", onAbort);
324
+ }
325
+ }
326
+ }
327
+ }
328
+ function delay(ms) {
329
+ return new Promise((resolve) => {
330
+ const timer = setTimeout(resolve, ms);
331
+ timer.unref?.();
332
+ });
333
+ }
334
+ function isEndpointValidationError(error, name) {
335
+ return error instanceof Error
336
+ ? error.name === name
337
+ : typeof error === "object" &&
338
+ error !== null &&
339
+ "name" in error &&
340
+ error.name === name;
341
+ }
342
+ //# sourceMappingURL=DurableDeliveryManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableDeliveryManager.js","sourceRoot":"","sources":["../../../../../src/a365/exporter/durable/DurableDeliveryManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export declare const DEFAULT_DURABLE_STORAGE_BYTES: number;
2
+ export declare const DEFAULT_DURABLE_RECORD_AGE_MS: number;
3
+ export declare const DEFAULT_DURABLE_REPLAY_INTERVAL_MS: number;
4
+ export declare const DEFAULT_DURABLE_REPLAY_BATCH_SIZE = 10;
5
+ export declare const DEFAULT_DURABLE_LEASE_MS: number;
6
+ export declare const DEFAULT_DURABLE_SHUTDOWN_TIMEOUT_MS = 10000;
7
+ export declare const DEFAULT_DURABLE_TOKEN_TIMEOUT_MS = 30000;
8
+ export interface Agent365DurableDeliveryOptions {
9
+ enabled?: boolean;
10
+ storageDirectory?: string;
11
+ maxStorageBytes?: number;
12
+ maxRecordAgeMilliseconds?: number;
13
+ replayIntervalMilliseconds?: number;
14
+ maxReplayBatchSize?: number;
15
+ leaseDurationMilliseconds?: number;
16
+ shutdownTimeoutMilliseconds?: number;
17
+ tokenResolutionTimeoutMilliseconds?: number;
18
+ }
19
+ export declare class ResolvedDurableDeliveryOptions {
20
+ readonly enabled: boolean;
21
+ readonly storageDirectory?: string;
22
+ readonly maxStorageBytes: number;
23
+ readonly maxRecordAgeMilliseconds: number;
24
+ readonly replayIntervalMilliseconds: number;
25
+ readonly maxReplayBatchSize: number;
26
+ readonly leaseDurationMilliseconds: number;
27
+ readonly shutdownTimeoutMilliseconds: number;
28
+ readonly tokenResolutionTimeoutMilliseconds: number;
29
+ constructor(options?: Agent365DurableDeliveryOptions);
30
+ }
31
+ //# sourceMappingURL=DurableDeliveryOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableDeliveryOptions.d.ts","sourceRoot":"","sources":["../../../../../src/a365/exporter/durable/DurableDeliveryOptions.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,6BAA6B,QAAmB,CAAC;AAC9D,eAAO,MAAM,6BAA6B,QAA0B,CAAC;AACrE,eAAO,MAAM,kCAAkC,QAAgB,CAAC;AAChE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,wBAAwB,QAAgB,CAAC;AACtD,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAC1D,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,kCAAkC,CAAC,EAAE,MAAM,CAAC;CAC7C;AAED,qBAAa,8BAA8B;IACzC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1C,SAAgB,eAAe,EAAE,MAAM,CAAC;IACxC,SAAgB,wBAAwB,EAAE,MAAM,CAAC;IACjD,SAAgB,0BAA0B,EAAE,MAAM,CAAC;IACnD,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,2BAA2B,EAAE,MAAM,CAAC;IACpD,SAAgB,kCAAkC,EAAE,MAAM,CAAC;gBAE/C,OAAO,CAAC,EAAE,8BAA8B;CAgCrD"}
@@ -0,0 +1,44 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export const DEFAULT_DURABLE_STORAGE_BYTES = 50 * 1024 * 1024;
4
+ export const DEFAULT_DURABLE_RECORD_AGE_MS = 2 * 24 * 60 * 60 * 1000;
5
+ export const DEFAULT_DURABLE_REPLAY_INTERVAL_MS = 2 * 60 * 1000;
6
+ export const DEFAULT_DURABLE_REPLAY_BATCH_SIZE = 10;
7
+ export const DEFAULT_DURABLE_LEASE_MS = 2 * 60 * 1000;
8
+ export const DEFAULT_DURABLE_SHUTDOWN_TIMEOUT_MS = 10_000;
9
+ export const DEFAULT_DURABLE_TOKEN_TIMEOUT_MS = 30_000;
10
+ export class ResolvedDurableDeliveryOptions {
11
+ enabled;
12
+ storageDirectory;
13
+ maxStorageBytes;
14
+ maxRecordAgeMilliseconds;
15
+ replayIntervalMilliseconds;
16
+ maxReplayBatchSize;
17
+ leaseDurationMilliseconds;
18
+ shutdownTimeoutMilliseconds;
19
+ tokenResolutionTimeoutMilliseconds;
20
+ constructor(options) {
21
+ this.enabled = options?.enabled ?? true;
22
+ this.storageDirectory = options?.storageDirectory;
23
+ this.maxStorageBytes = positive("maxStorageBytes", options?.maxStorageBytes ?? DEFAULT_DURABLE_STORAGE_BYTES);
24
+ this.maxRecordAgeMilliseconds = positive("maxRecordAgeMilliseconds", options?.maxRecordAgeMilliseconds ?? DEFAULT_DURABLE_RECORD_AGE_MS);
25
+ this.replayIntervalMilliseconds = positive("replayIntervalMilliseconds", options?.replayIntervalMilliseconds ?? DEFAULT_DURABLE_REPLAY_INTERVAL_MS);
26
+ this.maxReplayBatchSize = positiveInteger("maxReplayBatchSize", options?.maxReplayBatchSize ?? DEFAULT_DURABLE_REPLAY_BATCH_SIZE);
27
+ this.leaseDurationMilliseconds = positive("leaseDurationMilliseconds", options?.leaseDurationMilliseconds ?? DEFAULT_DURABLE_LEASE_MS);
28
+ this.shutdownTimeoutMilliseconds = positive("shutdownTimeoutMilliseconds", options?.shutdownTimeoutMilliseconds ?? DEFAULT_DURABLE_SHUTDOWN_TIMEOUT_MS);
29
+ this.tokenResolutionTimeoutMilliseconds = positive("tokenResolutionTimeoutMilliseconds", options?.tokenResolutionTimeoutMilliseconds ?? DEFAULT_DURABLE_TOKEN_TIMEOUT_MS);
30
+ }
31
+ }
32
+ function positive(name, value) {
33
+ if (!Number.isFinite(value) || value <= 0) {
34
+ throw new RangeError(`${name} must be greater than 0`);
35
+ }
36
+ return value;
37
+ }
38
+ function positiveInteger(name, value) {
39
+ if (!Number.isSafeInteger(value) || value <= 0) {
40
+ throw new RangeError(`${name} must be a positive integer`);
41
+ }
42
+ return value;
43
+ }
44
+ //# sourceMappingURL=DurableDeliveryOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableDeliveryOptions.js","sourceRoot":"","sources":["../../../../../src/a365/exporter/durable/DurableDeliveryOptions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrE,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACtD,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC;AAC1D,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAcvD,MAAM,OAAO,8BAA8B;IACzB,OAAO,CAAU;IACjB,gBAAgB,CAAU;IAC1B,eAAe,CAAS;IACxB,wBAAwB,CAAS;IACjC,0BAA0B,CAAS;IACnC,kBAAkB,CAAS;IAC3B,yBAAyB,CAAS;IAClC,2BAA2B,CAAS;IACpC,kCAAkC,CAAS;IAE3D,YAAY,OAAwC;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAC7B,iBAAiB,EACjB,OAAO,EAAE,eAAe,IAAI,6BAA6B,CAC1D,CAAC;QACF,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CACtC,0BAA0B,EAC1B,OAAO,EAAE,wBAAwB,IAAI,6BAA6B,CACnE,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,QAAQ,CACxC,4BAA4B,EAC5B,OAAO,EAAE,0BAA0B,IAAI,kCAAkC,CAC1E,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,eAAe,CACvC,oBAAoB,EACpB,OAAO,EAAE,kBAAkB,IAAI,iCAAiC,CACjE,CAAC;QACF,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CACvC,2BAA2B,EAC3B,OAAO,EAAE,yBAAyB,IAAI,wBAAwB,CAC/D,CAAC;QACF,IAAI,CAAC,2BAA2B,GAAG,QAAQ,CACzC,6BAA6B,EAC7B,OAAO,EAAE,2BAA2B,IAAI,mCAAmC,CAC5E,CAAC;QACF,IAAI,CAAC,kCAAkC,GAAG,QAAQ,CAChD,oCAAoC,EACpC,OAAO,EAAE,kCAAkC,IAAI,gCAAgC,CAChF,CAAC;IACJ,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ClusterCategory } from "../../configuration/A365ConfigurationOptions.js";
2
+ export declare const DURABLE_RECORD_VERSION: 1;
3
+ export interface DurableRecordV1 {
4
+ version: typeof DURABLE_RECORD_VERSION;
5
+ id: string;
6
+ createdAt: number;
7
+ tenantId: string;
8
+ agentId: string;
9
+ agenticUserId?: string;
10
+ useS2SEndpoint: boolean;
11
+ body: string;
12
+ }
13
+ type DurableRecordV1CreateInput = Omit<DurableRecordV1, "version" | "id" | "createdAt"> & {
14
+ clusterCategory?: ClusterCategory;
15
+ domainOverride?: string;
16
+ };
17
+ export declare function createDurableRecord(input: DurableRecordV1CreateInput): DurableRecordV1;
18
+ export declare function parseDurableRecord(text: string): DurableRecordV1;
19
+ export {};
20
+ //# sourceMappingURL=DurableRecord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableRecord.d.ts","sourceRoot":"","sources":["../../../../../src/a365/exporter/durable/DurableRecord.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAEvF,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AA+BjD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,sBAAsB,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,KAAK,0BAA0B,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG;IACxF,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,0BAA0B,GAAG,eAAe,CAWtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA8BhE"}
@@ -0,0 +1,93 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { randomUUID } from "node:crypto";
4
+ export const DURABLE_RECORD_VERSION = 1;
5
+ // PersistentStore's lease filename format is
6
+ // `${createdAt}-${id}.lease-at-${Date.now()}-${pid}-${randomUUID()}`, and
7
+ // filesystems commonly reject any single path component over 255 bytes
8
+ // (NAME_MAX). Budgeting generously for every variable part -- createdAt and
9
+ // the in-lease Date.now() at up to 21 digits each (the longest plain-decimal
10
+ // string JS ever produces before switching to exponential notation),
11
+ // process.pid at up to 10 digits (a full 32-bit value), and the fixed
12
+ // 36-character UUID -- the literal overhead alone (".lease-at-", the
13
+ // hyphens, ".pending"/etc.) plus those bounds consumes up to ~101 bytes,
14
+ // leaving no more than ~154 bytes of headroom for the id. 128 is a
15
+ // comfortably safe, round bound well under that worst case, while still far
16
+ // exceeding the 36-character UUIDs createDurableRecord() actually generates.
17
+ const MAX_DURABLE_RECORD_ID_LENGTH = 128;
18
+ const SAFE_DURABLE_RECORD_ID_PATTERN = /^[A-Za-z0-9._-]+$/;
19
+ const CLUSTER_CATEGORIES = [
20
+ "local",
21
+ "dev",
22
+ "test",
23
+ "preprod",
24
+ "firstrelease",
25
+ "prod",
26
+ "gov",
27
+ "high",
28
+ "dod",
29
+ "mooncake",
30
+ "ex",
31
+ "rx",
32
+ ];
33
+ export function createDurableRecord(input) {
34
+ return {
35
+ version: DURABLE_RECORD_VERSION,
36
+ id: randomUUID(),
37
+ createdAt: Date.now(),
38
+ tenantId: input.tenantId,
39
+ agentId: input.agentId,
40
+ agenticUserId: input.agenticUserId,
41
+ useS2SEndpoint: input.useS2SEndpoint,
42
+ body: input.body,
43
+ };
44
+ }
45
+ export function parseDurableRecord(text) {
46
+ const value = JSON.parse(text);
47
+ if (!isObject(value) || value.version !== DURABLE_RECORD_VERSION) {
48
+ throw new Error("Unsupported durable record version");
49
+ }
50
+ if (!isSafeDurableRecordId(value.id) ||
51
+ !isValidCreatedAt(value.createdAt) ||
52
+ typeof value.tenantId !== "string" ||
53
+ typeof value.agentId !== "string" ||
54
+ typeof value.useS2SEndpoint !== "boolean" ||
55
+ typeof value.body !== "string" ||
56
+ !isOptionalString(value.agenticUserId) ||
57
+ !isOptionalClusterCategory(value.clusterCategory) ||
58
+ !isOptionalString(value.domainOverride)) {
59
+ throw new Error("Invalid durable record");
60
+ }
61
+ return {
62
+ version: DURABLE_RECORD_VERSION,
63
+ id: value.id,
64
+ createdAt: value.createdAt,
65
+ tenantId: value.tenantId,
66
+ agentId: value.agentId,
67
+ agenticUserId: value.agenticUserId,
68
+ useS2SEndpoint: value.useS2SEndpoint,
69
+ body: value.body,
70
+ };
71
+ }
72
+ function isObject(value) {
73
+ return typeof value === "object" && value !== null;
74
+ }
75
+ function isOptionalString(value) {
76
+ return value === undefined || typeof value === "string";
77
+ }
78
+ function isOptionalClusterCategory(value) {
79
+ return value === undefined || isClusterCategory(value);
80
+ }
81
+ function isSafeDurableRecordId(value) {
82
+ return (typeof value === "string" &&
83
+ value.length > 0 &&
84
+ value.length <= MAX_DURABLE_RECORD_ID_LENGTH &&
85
+ SAFE_DURABLE_RECORD_ID_PATTERN.test(value));
86
+ }
87
+ function isValidCreatedAt(value) {
88
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
89
+ }
90
+ function isClusterCategory(value) {
91
+ return typeof value === "string" && CLUSTER_CATEGORIES.includes(value);
92
+ }
93
+ //# sourceMappingURL=DurableRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableRecord.js","sourceRoot":"","sources":["../../../../../src/a365/exporter/durable/DurableRecord.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;AACjD,6CAA6C;AAC7C,0EAA0E;AAC1E,uEAAuE;AACvE,4EAA4E;AAC5E,6EAA6E;AAC7E,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,yEAAyE;AACzE,mEAAmE;AACnE,4EAA4E;AAC5E,6EAA6E;AAC7E,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,8BAA8B,GAAG,mBAAmB,CAAC;AAE3D,MAAM,kBAAkB,GAA+B;IACrD,OAAO;IACP,KAAK;IACL,MAAM;IACN,SAAS;IACT,cAAc;IACd,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,UAAU;IACV,IAAI;IACJ,IAAI;CACI,CAAC;AAkBX,MAAM,UAAU,mBAAmB,CAAC,KAAiC;IACnE,OAAO;QACL,OAAO,EAAE,sBAAsB;QAC/B,EAAE,EAAE,UAAU,EAAE;QAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,sBAAsB,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IACE,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;QAClC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,cAAc,KAAK,SAAS;QACzC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC;QACtC,CAAC,yBAAyB,CAAC,KAAK,CAAC,eAAe,CAAC;QACjD,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,sBAAsB;QAC/B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC1D,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,OAAO,KAAK,KAAK,SAAS,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,KAAK,CAAC,MAAM,IAAI,4BAA4B;QAC5C,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAC;AAC5F,CAAC"}