@trigger.dev/core 4.5.14 → 4.5.15

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 (267) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +8 -2
  2. package/dist/commonjs/v3/apiClient/index.js +19 -6
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  5. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  6. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  7. package/dist/commonjs/v3/schemas/api.js +1 -1
  8. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  9. package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
  10. package/dist/commonjs/v3/session-streams-api.js +1 -0
  11. package/dist/commonjs/v3/session-streams-api.js.map +1 -1
  12. package/dist/commonjs/v3/sessionStreams/channels.d.ts +25 -0
  13. package/dist/commonjs/v3/sessionStreams/channels.js +3 -0
  14. package/dist/commonjs/v3/sessionStreams/channels.js.map +1 -0
  15. package/dist/commonjs/v3/sessionStreams/index.d.ts +16 -16
  16. package/dist/commonjs/v3/sessionStreams/index.js +32 -32
  17. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
  18. package/dist/commonjs/v3/sessionStreams/manager.d.ts +16 -16
  19. package/dist/commonjs/v3/sessionStreams/manager.js +48 -47
  20. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
  21. package/dist/commonjs/v3/sessionStreams/types.d.ts +16 -16
  22. package/dist/commonjs/version.js +1 -1
  23. package/dist/esm/v3/apiClient/index.d.ts +8 -2
  24. package/dist/esm/v3/apiClient/index.js +19 -6
  25. package/dist/esm/v3/apiClient/index.js.map +1 -1
  26. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  27. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  28. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  29. package/dist/esm/v3/schemas/api.js +1 -1
  30. package/dist/esm/v3/schemas/api.js.map +1 -1
  31. package/dist/esm/v3/session-streams-api.d.ts +1 -0
  32. package/dist/esm/v3/session-streams-api.js +1 -0
  33. package/dist/esm/v3/session-streams-api.js.map +1 -1
  34. package/dist/esm/v3/sessionStreams/channels.d.ts +25 -0
  35. package/dist/esm/v3/sessionStreams/channels.js +2 -0
  36. package/dist/esm/v3/sessionStreams/channels.js.map +1 -0
  37. package/dist/esm/v3/sessionStreams/index.d.ts +16 -16
  38. package/dist/esm/v3/sessionStreams/index.js +32 -32
  39. package/dist/esm/v3/sessionStreams/index.js.map +1 -1
  40. package/dist/esm/v3/sessionStreams/manager.d.ts +16 -16
  41. package/dist/esm/v3/sessionStreams/manager.js +48 -47
  42. package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
  43. package/dist/esm/v3/sessionStreams/types.d.ts +16 -16
  44. package/dist/esm/version.js +1 -1
  45. package/package.json +4 -1
  46. package/dist/commonjs/v3/apiClient/bulkActions.test.d.ts +0 -1
  47. package/dist/commonjs/v3/apiClient/bulkActions.test.js +0 -151
  48. package/dist/commonjs/v3/apiClient/bulkActions.test.js.map +0 -1
  49. package/dist/commonjs/v3/apiClient/refreshAccessToken.test.d.ts +0 -1
  50. package/dist/commonjs/v3/apiClient/refreshAccessToken.test.js +0 -55
  51. package/dist/commonjs/v3/apiClient/refreshAccessToken.test.js.map +0 -1
  52. package/dist/commonjs/v3/apiClient/runStream.test.d.ts +0 -1
  53. package/dist/commonjs/v3/apiClient/runStream.test.js +0 -825
  54. package/dist/commonjs/v3/apiClient/runStream.test.js.map +0 -1
  55. package/dist/commonjs/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  56. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js +0 -408
  57. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js.map +0 -1
  58. package/dist/commonjs/v3/apiKeys.test.d.ts +0 -1
  59. package/dist/commonjs/v3/apiKeys.test.js +0 -19
  60. package/dist/commonjs/v3/apiKeys.test.js.map +0 -1
  61. package/dist/commonjs/v3/apps/exec.test.d.ts +0 -1
  62. package/dist/commonjs/v3/apps/exec.test.js +0 -23
  63. package/dist/commonjs/v3/apps/exec.test.js.map +0 -1
  64. package/dist/commonjs/v3/build/flags.test.d.ts +0 -1
  65. package/dist/commonjs/v3/build/flags.test.js +0 -50
  66. package/dist/commonjs/v3/build/flags.test.js.map +0 -1
  67. package/dist/commonjs/v3/build/runtime.test.d.ts +0 -1
  68. package/dist/commonjs/v3/build/runtime.test.js +0 -44
  69. package/dist/commonjs/v3/build/runtime.test.js.map +0 -1
  70. package/dist/commonjs/v3/errors.test.d.ts +0 -1
  71. package/dist/commonjs/v3/errors.test.js +0 -36
  72. package/dist/commonjs/v3/errors.test.js.map +0 -1
  73. package/dist/commonjs/v3/externalDeploymentId.test.d.ts +0 -1
  74. package/dist/commonjs/v3/externalDeploymentId.test.js +0 -173
  75. package/dist/commonjs/v3/externalDeploymentId.test.js.map +0 -1
  76. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  77. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -44
  78. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  79. package/dist/commonjs/v3/idempotencyKeys.test.d.ts +0 -1
  80. package/dist/commonjs/v3/idempotencyKeys.test.js +0 -192
  81. package/dist/commonjs/v3/idempotencyKeys.test.js.map +0 -1
  82. package/dist/commonjs/v3/isomorphic/friendlyId.test.d.ts +0 -1
  83. package/dist/commonjs/v3/isomorphic/friendlyId.test.js +0 -497
  84. package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +0 -1
  85. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  86. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +0 -141
  87. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  88. package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  89. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +0 -97
  90. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +0 -1
  91. package/dist/commonjs/v3/machines/max-old-space.test.d.ts +0 -1
  92. package/dist/commonjs/v3/machines/max-old-space.test.js +0 -44
  93. package/dist/commonjs/v3/machines/max-old-space.test.js.map +0 -1
  94. package/dist/commonjs/v3/otel/tracingSDK.test.d.ts +0 -1
  95. package/dist/commonjs/v3/otel/tracingSDK.test.js +0 -174
  96. package/dist/commonjs/v3/otel/tracingSDK.test.js.map +0 -1
  97. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  98. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js +0 -18
  99. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  100. package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +0 -1
  101. package/dist/commonjs/v3/realtimeStreams/manager.test.js +0 -89
  102. package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +0 -1
  103. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  104. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +0 -68
  105. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  106. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  107. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -674
  108. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  109. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  110. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -77
  111. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  112. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  113. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -293
  114. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  115. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  116. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -235
  117. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  118. package/dist/commonjs/v3/schemas/api-type.test.d.ts +0 -1
  119. package/dist/commonjs/v3/schemas/api-type.test.js +0 -358
  120. package/dist/commonjs/v3/schemas/api-type.test.js.map +0 -1
  121. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  122. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js +0 -79
  123. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  124. package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +0 -1
  125. package/dist/commonjs/v3/schemas/idempotencyKey.test.js +0 -157
  126. package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +0 -1
  127. package/dist/commonjs/v3/schemas/scheduleWindow.test.d.ts +0 -1
  128. package/dist/commonjs/v3/schemas/scheduleWindow.test.js +0 -52
  129. package/dist/commonjs/v3/schemas/scheduleWindow.test.js.map +0 -1
  130. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  131. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js +0 -104
  132. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  133. package/dist/commonjs/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  134. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js +0 -139
  135. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js.map +0 -1
  136. package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +0 -1
  137. package/dist/commonjs/v3/sessionStreams/manager.test.js +0 -375
  138. package/dist/commonjs/v3/sessionStreams/manager.test.js.map +0 -1
  139. package/dist/commonjs/v3/sessionStreams/router.test.d.ts +0 -1
  140. package/dist/commonjs/v3/sessionStreams/router.test.js +0 -463
  141. package/dist/commonjs/v3/sessionStreams/router.test.js.map +0 -1
  142. package/dist/commonjs/v3/taskContext/index.test.d.ts +0 -1
  143. package/dist/commonjs/v3/taskContext/index.test.js +0 -73
  144. package/dist/commonjs/v3/taskContext/index.test.js.map +0 -1
  145. package/dist/commonjs/v3/taskContext/otelProcessors.test.d.ts +0 -1
  146. package/dist/commonjs/v3/taskContext/otelProcessors.test.js +0 -109
  147. package/dist/commonjs/v3/taskContext/otelProcessors.test.js.map +0 -1
  148. package/dist/commonjs/v3/telnetLogServer.test.d.ts +0 -1
  149. package/dist/commonjs/v3/telnetLogServer.test.js +0 -144
  150. package/dist/commonjs/v3/telnetLogServer.test.js.map +0 -1
  151. package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +0 -1
  152. package/dist/commonjs/v3/utils/reconnectBackoff.test.js +0 -76
  153. package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +0 -1
  154. package/dist/commonjs/v3/workloadDeploymentToken.test.d.ts +0 -1
  155. package/dist/commonjs/v3/workloadDeploymentToken.test.js +0 -110
  156. package/dist/commonjs/v3/workloadDeploymentToken.test.js.map +0 -1
  157. package/dist/esm/v3/apiClient/bulkActions.test.d.ts +0 -1
  158. package/dist/esm/v3/apiClient/bulkActions.test.js +0 -149
  159. package/dist/esm/v3/apiClient/bulkActions.test.js.map +0 -1
  160. package/dist/esm/v3/apiClient/refreshAccessToken.test.d.ts +0 -1
  161. package/dist/esm/v3/apiClient/refreshAccessToken.test.js +0 -53
  162. package/dist/esm/v3/apiClient/refreshAccessToken.test.js.map +0 -1
  163. package/dist/esm/v3/apiClient/runStream.test.d.ts +0 -1
  164. package/dist/esm/v3/apiClient/runStream.test.js +0 -823
  165. package/dist/esm/v3/apiClient/runStream.test.js.map +0 -1
  166. package/dist/esm/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  167. package/dist/esm/v3/apiClient/streamBatchItems.test.js +0 -406
  168. package/dist/esm/v3/apiClient/streamBatchItems.test.js.map +0 -1
  169. package/dist/esm/v3/apiKeys.test.d.ts +0 -1
  170. package/dist/esm/v3/apiKeys.test.js +0 -17
  171. package/dist/esm/v3/apiKeys.test.js.map +0 -1
  172. package/dist/esm/v3/apps/exec.test.d.ts +0 -1
  173. package/dist/esm/v3/apps/exec.test.js +0 -21
  174. package/dist/esm/v3/apps/exec.test.js.map +0 -1
  175. package/dist/esm/v3/build/flags.test.d.ts +0 -1
  176. package/dist/esm/v3/build/flags.test.js +0 -48
  177. package/dist/esm/v3/build/flags.test.js.map +0 -1
  178. package/dist/esm/v3/build/runtime.test.d.ts +0 -1
  179. package/dist/esm/v3/build/runtime.test.js +0 -42
  180. package/dist/esm/v3/build/runtime.test.js.map +0 -1
  181. package/dist/esm/v3/errors.test.d.ts +0 -1
  182. package/dist/esm/v3/errors.test.js +0 -34
  183. package/dist/esm/v3/errors.test.js.map +0 -1
  184. package/dist/esm/v3/externalDeploymentId.test.d.ts +0 -1
  185. package/dist/esm/v3/externalDeploymentId.test.js +0 -171
  186. package/dist/esm/v3/externalDeploymentId.test.js.map +0 -1
  187. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  188. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -42
  189. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  190. package/dist/esm/v3/idempotencyKeys.test.d.ts +0 -1
  191. package/dist/esm/v3/idempotencyKeys.test.js +0 -190
  192. package/dist/esm/v3/idempotencyKeys.test.js.map +0 -1
  193. package/dist/esm/v3/isomorphic/friendlyId.test.d.ts +0 -1
  194. package/dist/esm/v3/isomorphic/friendlyId.test.js +0 -495
  195. package/dist/esm/v3/isomorphic/friendlyId.test.js.map +0 -1
  196. package/dist/esm/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  197. package/dist/esm/v3/isomorphic/runOpsResidency.test.js +0 -139
  198. package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  199. package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  200. package/dist/esm/v3/isomorphic/waitpointMint.test.js +0 -95
  201. package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +0 -1
  202. package/dist/esm/v3/machines/max-old-space.test.d.ts +0 -1
  203. package/dist/esm/v3/machines/max-old-space.test.js +0 -42
  204. package/dist/esm/v3/machines/max-old-space.test.js.map +0 -1
  205. package/dist/esm/v3/otel/tracingSDK.test.d.ts +0 -1
  206. package/dist/esm/v3/otel/tracingSDK.test.js +0 -172
  207. package/dist/esm/v3/otel/tracingSDK.test.js.map +0 -1
  208. package/dist/esm/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  209. package/dist/esm/v3/otel/tracingSDKShutdown.test.js +0 -16
  210. package/dist/esm/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  211. package/dist/esm/v3/realtimeStreams/manager.test.d.ts +0 -1
  212. package/dist/esm/v3/realtimeStreams/manager.test.js +0 -87
  213. package/dist/esm/v3/realtimeStreams/manager.test.js.map +0 -1
  214. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  215. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +0 -66
  216. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  217. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  218. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -672
  219. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  220. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  221. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -75
  222. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  223. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  224. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -291
  225. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  226. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  227. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -233
  228. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  229. package/dist/esm/v3/schemas/api-type.test.d.ts +0 -1
  230. package/dist/esm/v3/schemas/api-type.test.js +0 -356
  231. package/dist/esm/v3/schemas/api-type.test.js.map +0 -1
  232. package/dist/esm/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  233. package/dist/esm/v3/schemas/batchItemNDJSON.test.js +0 -77
  234. package/dist/esm/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  235. package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +0 -1
  236. package/dist/esm/v3/schemas/idempotencyKey.test.js +0 -155
  237. package/dist/esm/v3/schemas/idempotencyKey.test.js.map +0 -1
  238. package/dist/esm/v3/schemas/scheduleWindow.test.d.ts +0 -1
  239. package/dist/esm/v3/schemas/scheduleWindow.test.js +0 -50
  240. package/dist/esm/v3/schemas/scheduleWindow.test.js.map +0 -1
  241. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  242. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js +0 -102
  243. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  244. package/dist/esm/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  245. package/dist/esm/v3/serverOnly/shutdownManager.test.js +0 -137
  246. package/dist/esm/v3/serverOnly/shutdownManager.test.js.map +0 -1
  247. package/dist/esm/v3/sessionStreams/manager.test.d.ts +0 -1
  248. package/dist/esm/v3/sessionStreams/manager.test.js +0 -373
  249. package/dist/esm/v3/sessionStreams/manager.test.js.map +0 -1
  250. package/dist/esm/v3/sessionStreams/router.test.d.ts +0 -1
  251. package/dist/esm/v3/sessionStreams/router.test.js +0 -461
  252. package/dist/esm/v3/sessionStreams/router.test.js.map +0 -1
  253. package/dist/esm/v3/taskContext/index.test.d.ts +0 -1
  254. package/dist/esm/v3/taskContext/index.test.js +0 -71
  255. package/dist/esm/v3/taskContext/index.test.js.map +0 -1
  256. package/dist/esm/v3/taskContext/otelProcessors.test.d.ts +0 -1
  257. package/dist/esm/v3/taskContext/otelProcessors.test.js +0 -107
  258. package/dist/esm/v3/taskContext/otelProcessors.test.js.map +0 -1
  259. package/dist/esm/v3/telnetLogServer.test.d.ts +0 -1
  260. package/dist/esm/v3/telnetLogServer.test.js +0 -139
  261. package/dist/esm/v3/telnetLogServer.test.js.map +0 -1
  262. package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +0 -1
  263. package/dist/esm/v3/utils/reconnectBackoff.test.js +0 -74
  264. package/dist/esm/v3/utils/reconnectBackoff.test.js.map +0 -1
  265. package/dist/esm/v3/workloadDeploymentToken.test.d.ts +0 -1
  266. package/dist/esm/v3/workloadDeploymentToken.test.js +0 -108
  267. package/dist/esm/v3/workloadDeploymentToken.test.js.map +0 -1
@@ -1,139 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { RunId, WaitpointId, BatchId, SnapshotId, generateRunOpsId, generateRunOpsIdV2, } from "./friendlyId.js";
3
- import { ownerEngine, classifyResidency, classifyKind, isClassifiable, resolveShard, } from "./runOpsResidency.js";
4
- const SAMPLES = 50_000; // property-scale; CI-fast. (Bump locally toward "millions" for deeper coverage.)
5
- /** Every legal gen-2 shard char: the full DNS-safe lowercase range. */
6
- const SHARD_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789".split("");
7
- describe("ownerEngine — residency classifier (version char at fixed position, not length)", () => {
8
- it("cuid ids (default mint) classify LEGACY, friendly + internal", () => {
9
- for (const util of [RunId, WaitpointId]) {
10
- const { id, friendlyId } = util.generate();
11
- expect(ownerEngine(id)).toBe("LEGACY");
12
- expect(ownerEngine(friendlyId)).toBe("LEGACY"); // strips run_/waitpoint_ prefix
13
- expect(classifyResidency(id)).toBe("LEGACY"); // alias agrees
14
- expect(classifyKind(id)).toBe("cuid");
15
- expect(isClassifiable(id)).toBe(true);
16
- }
17
- });
18
- it("run-ops v1 ids (generateRunOpsId) classify NEW, friendly + internal, across id-shape co-located entities", () => {
19
- for (const util of [RunId, WaitpointId, BatchId]) {
20
- const id = generateRunOpsId("us-east-1");
21
- const friendlyId = util.toFriendlyId(id);
22
- expect(ownerEngine(id)).toBe("NEW");
23
- expect(ownerEngine(friendlyId)).toBe("NEW");
24
- expect(classifyResidency(id)).toBe("NEW");
25
- expect(classifyKind(id)).toBe("runOpsId");
26
- }
27
- });
28
- it("discriminates on the version char, not length: 26+'1' → NEW, 26+'2' → NEW (gen-2)", () => {
29
- const v1 = "a".repeat(24) + "e1";
30
- expect(ownerEngine(v1)).toBe("NEW");
31
- expect(ownerEngine("a".repeat(24) + "e2")).toBe("NEW"); // gen-2: shard "e"
32
- expect(ownerEngine("a".repeat(24) + "e9")).toBe("LEGACY"); // unallocated version char
33
- expect(ownerEngine("a".repeat(26))).toBe("LEGACY"); // 26 chars but no version marker
34
- });
35
- it("malformed v1 shapes fall back to LEGACY (never throw)", () => {
36
- for (const bad of [
37
- "",
38
- "x".repeat(24) + "01", // 'x' outside base32hex
39
- "A".repeat(25) + "1", // uppercase
40
- "a".repeat(24) + "-1", // hyphen region char
41
- "a".repeat(27), // pre-cutover 27-char shape → LEGACY under the version rule
42
- "run_" + "b".repeat(27), // 27-char base62 pre-cutover friendly id → LEGACY
43
- "x".repeat(40),
44
- ]) {
45
- expect(ownerEngine(bad)).toBe("LEGACY");
46
- expect(isClassifiable(bad)).toBe(true); // classification is total now
47
- }
48
- });
49
- it("disjointness: no cuid sample is ever NEW, no v1 sample is ever LEGACY", () => {
50
- for (let i = 0; i < SAMPLES; i++) {
51
- expect(ownerEngine(RunId.generate().id)).toBe("LEGACY");
52
- expect(ownerEngine(generateRunOpsId())).toBe("NEW");
53
- }
54
- });
55
- it("SnapshotId (always cuid) classifies LEGACY — proves snapshot needs no residency key", () => {
56
- expect(ownerEngine(SnapshotId.generate().id)).toBe("LEGACY");
57
- });
58
- });
59
- describe("resolveShard — the gen-2 refinement inside the dedicated family", () => {
60
- it("returns the shard char for every legal gen-2 shard key, friendly + internal", () => {
61
- for (const c of SHARD_CHARS) {
62
- const id = generateRunOpsIdV2(c);
63
- expect(resolveShard(id)).toBe(c);
64
- expect(resolveShard(RunId.toFriendlyId(id))).toBe(c);
65
- expect(resolveShard(WaitpointId.toFriendlyId(id))).toBe(c);
66
- expect(resolveShard(BatchId.toFriendlyId(id))).toBe(c);
67
- }
68
- });
69
- it("returns 'new' for a gen-1 v1 body, friendly + internal", () => {
70
- for (const region of [undefined, "us-east-1", "us-west-2", "eu-central-1"]) {
71
- const id = generateRunOpsId(region);
72
- expect(resolveShard(id)).toBe("new");
73
- expect(resolveShard(RunId.toFriendlyId(id))).toBe("new");
74
- }
75
- });
76
- it("returns 'legacy' for a cuid, a nanoid, a pre-cutover base62 id and malformed input", () => {
77
- expect(resolveShard(RunId.generate().id)).toBe("legacy"); // cuid, 25
78
- expect(resolveShard(RunId.generate().friendlyId)).toBe("legacy");
79
- expect(resolveShard("123456789abcdefghijkm")).toBe("legacy"); // nanoid, 21
80
- expect(resolveShard("b".repeat(27))).toBe("legacy"); // pre-cutover base62, 27
81
- for (const bad of [
82
- "",
83
- "x".repeat(24) + "01", // 'x' outside base32hex
84
- "x".repeat(24) + "02", // 'x' outside base32hex, gen-2 version
85
- "A".repeat(25) + "1", // uppercase
86
- "A".repeat(25) + "2", // uppercase, gen-2 version
87
- "a".repeat(24) + "-1", // hyphen positional char
88
- "a".repeat(24) + "-2", // hyphen positional char, gen-2 version
89
- "a".repeat(26), // 26 chars, no version marker
90
- "a".repeat(24) + "e9", // unallocated version char
91
- "x".repeat(40),
92
- ]) {
93
- expect(resolveShard(bad)).toBe("legacy");
94
- }
95
- });
96
- it("never throws, for any input string", () => {
97
- for (const input of ["", "x", "-".repeat(26), " ".repeat(26), "\u{1F642}".repeat(26)]) {
98
- expect(() => resolveShard(input)).not.toThrow();
99
- }
100
- });
101
- it("the reserved keys are multi-char, so no single-char shard key can collide", () => {
102
- for (const reserved of ["legacy", "new"]) {
103
- expect(reserved.length).toBeGreaterThan(1);
104
- expect(SHARD_CHARS).not.toContain(reserved);
105
- }
106
- });
107
- });
108
- describe("gen-2 ids classify NEW — the dedicated family widens in meaning only", () => {
109
- it("a gen-2 id is NEW / runOpsId across id-shape co-located entities", () => {
110
- for (const util of [RunId, WaitpointId, BatchId]) {
111
- const id = generateRunOpsIdV2("a");
112
- const friendlyId = util.toFriendlyId(id);
113
- expect(ownerEngine(id)).toBe("NEW");
114
- expect(ownerEngine(friendlyId)).toBe("NEW");
115
- expect(classifyResidency(id)).toBe("NEW");
116
- expect(classifyKind(id)).toBe("runOpsId");
117
- expect(isClassifiable(id)).toBe(true);
118
- }
119
- });
120
- it("26+'2' is now a gen-2 shard route, not LEGACY (the one deliberate flip)", () => {
121
- const genTwo = "a".repeat(24) + "e2";
122
- expect(ownerEngine(genTwo)).toBe("NEW");
123
- expect(resolveShard(genTwo)).toBe("e");
124
- });
125
- it("three-way disjointness: cuid, gen-1 v1 and gen-2 never cross-classify", () => {
126
- for (let i = 0; i < SAMPLES; i++) {
127
- const cuid = RunId.generate().id;
128
- const v1 = generateRunOpsId();
129
- const v2 = generateRunOpsIdV2(SHARD_CHARS[i % SHARD_CHARS.length]);
130
- expect(ownerEngine(cuid)).toBe("LEGACY");
131
- expect(resolveShard(cuid)).toBe("legacy");
132
- expect(ownerEngine(v1)).toBe("NEW");
133
- expect(resolveShard(v1)).toBe("new");
134
- expect(ownerEngine(v2)).toBe("NEW");
135
- expect(resolveShard(v2)).toBe(SHARD_CHARS[i % SHARD_CHARS.length]);
136
- }
137
- });
138
- });
139
- //# sourceMappingURL=runOpsResidency.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runOpsResidency.test.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/runOpsResidency.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,95 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { mintWaitpointIdFor, mintWaitpointIdForShard } from "./waitpointMint.js";
3
- import { generateRunOpsId, generateRunOpsIdV2, isValidShardChar, parseRunOpsIdBody, parseRunOpsIdV2Body, } from "./friendlyId.js";
4
- import { resolveShard } from "./runOpsResidency.js";
5
- const GEN2_RUN = `run_${"a".repeat(24)}a2`; // shard "a", version "2"
6
- const GEN1_RUN = `run_${"a".repeat(24)}01`; // region "0", version "1"
7
- const CUID_RUN = `run_${"b".repeat(25)}`;
8
- describe("mintWaitpointIdForShard", () => {
9
- it("a gen-2 shard key mints a gen-2 body with that char at index 24", () => {
10
- const r = mintWaitpointIdForShard("a");
11
- expect(r.id.length).toBe(26);
12
- expect(r.id[24]).toBe("a");
13
- expect(r.id[25]).toBe("2");
14
- expect(r.friendlyId).toBe(`waitpoint_${r.id}`);
15
- expect(parseRunOpsIdV2Body(r.id)?.shard).toBe("a");
16
- });
17
- it("the reserved key 'new' mints a cuid, unchanged from today", () => {
18
- const r = mintWaitpointIdForShard("new");
19
- expect(r.id.length).toBe(25);
20
- expect(resolveShard(r.id)).toBe("legacy");
21
- });
22
- it("the reserved key 'legacy' mints a cuid", () => {
23
- expect(mintWaitpointIdForShard("legacy").id.length).toBe(25);
24
- });
25
- it("two calls for one shard never collide", () => {
26
- expect(mintWaitpointIdForShard("a").id).not.toBe(mintWaitpointIdForShard("a").id);
27
- });
28
- it("every gen-2 id it mints routes back to its own shard", () => {
29
- for (const key of ["a", "b", "0", "z", "9"]) {
30
- expect(isValidShardChar(key)).toBe(true);
31
- expect(resolveShard(mintWaitpointIdForShard(key).id)).toBe(key);
32
- }
33
- });
34
- });
35
- describe("mintWaitpointIdFor", () => {
36
- it("a gen-2 anchor stamps the anchor's shard char", () => {
37
- const r = mintWaitpointIdFor(GEN2_RUN);
38
- expect(r.id[24]).toBe("a");
39
- expect(r.id[25]).toBe("2");
40
- });
41
- it("a gen-2 anchor yields a FRESH core, never the anchor's own body", () => {
42
- const r = mintWaitpointIdFor(GEN2_RUN);
43
- expect(r.id).not.toBe(GEN2_RUN.slice(4));
44
- expect(r.id.slice(0, 24)).not.toBe("a".repeat(24));
45
- });
46
- it("accepts the bare internal form as well as the prefixed form", () => {
47
- expect(mintWaitpointIdFor(GEN2_RUN.slice(4)).id[24]).toBe("a");
48
- });
49
- it("a gen-1 v1 anchor mints a cuid", () => {
50
- expect(mintWaitpointIdFor(GEN1_RUN).id.length).toBe(25);
51
- });
52
- it("a cuid anchor mints a cuid", () => {
53
- expect(mintWaitpointIdFor(CUID_RUN).id.length).toBe(25);
54
- });
55
- it("no anchor mints a cuid", () => {
56
- expect(mintWaitpointIdFor(undefined).id.length).toBe(25);
57
- });
58
- });
59
- describe("resolveShard shape checks match the decoding parsers", () => {
60
- // Pins the shape/decode equivalence: a drift misroutes rather than erroring.
61
- const classifyByDecode = (body) => {
62
- const genTwo = parseRunOpsIdV2Body(body);
63
- if (genTwo)
64
- return genTwo.shard;
65
- return parseRunOpsIdBody(body) !== undefined ? "new" : "legacy";
66
- };
67
- it("agrees on freshly minted gen-1 and gen-2 bodies", () => {
68
- for (let i = 0; i < 500; i++) {
69
- const one = generateRunOpsId();
70
- const two = generateRunOpsIdV2("abcdefghijklmnopqrstuvwxyz0123456789"[i % 36]);
71
- expect(resolveShard(one)).toBe(classifyByDecode(one));
72
- expect(resolveShard(two)).toBe(classifyByDecode(two));
73
- }
74
- });
75
- it("agrees on 26-char strings carrying out-of-alphabet characters", () => {
76
- const alpha = "0123456789abcdefghijklmnopqrstuvwxyz-_.ZW!";
77
- for (let i = 0; i < 2000; i++) {
78
- let s = "";
79
- for (let j = 0; j < 26; j++)
80
- s += alpha[(i * 7 + j * 13) % alpha.length];
81
- for (const body of [s, s.slice(0, 25) + "1", s.slice(0, 25) + "2"]) {
82
- expect({ body, shape: resolveShard(body) }).toEqual({
83
- body,
84
- shape: classifyByDecode(body),
85
- });
86
- }
87
- }
88
- });
89
- it("agrees on the shapes the plan pins as legacy", () => {
90
- for (const body of ["", "a", "a".repeat(25), "a".repeat(27), `${"a".repeat(24)}e2`]) {
91
- expect(resolveShard(body)).toBe(classifyByDecode(body));
92
- }
93
- });
94
- });
95
- //# sourceMappingURL=waitpointMint.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"waitpointMint.test.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/waitpointMint.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,yBAAyB;AACrE,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,0BAA0B;AACtE,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AAEzC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,6EAA6E;IAC7E,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE;QAChD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;QAChC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClE,CAAC,CAAC;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,kBAAkB,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAE,CAAE,CAAC,CAAC;YAChF,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,KAAK,GAAG,4CAA4C,CAAC;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;gBAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACzE,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBACnE,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;oBAClD,IAAI;oBACJ,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACpF,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,42 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { nodeOptionsWithMaxOldSpaceSize } from "./index.js";
3
- describe("nodeOptionsWithMaxOldSpaceSize", () => {
4
- const testMachine = {
5
- name: "small-2x",
6
- memory: 1, // 1GB = 1024 MiB
7
- cpu: 1,
8
- centsPerMs: 0,
9
- };
10
- // With default 0.2 overhead, max-old-space-size should be 819 (1024 * 0.8)
11
- const expectedFlag = "--max-old-space-size=819";
12
- it("handles undefined NODE_OPTIONS", () => {
13
- const result = nodeOptionsWithMaxOldSpaceSize(undefined, testMachine);
14
- expect(result).toBe(expectedFlag);
15
- });
16
- it("handles empty string NODE_OPTIONS", () => {
17
- const result = nodeOptionsWithMaxOldSpaceSize("", testMachine);
18
- expect(result).toBe(expectedFlag);
19
- });
20
- it("preserves existing flags while adding max-old-space-size", () => {
21
- const result = nodeOptionsWithMaxOldSpaceSize("--inspect --trace-warnings", testMachine);
22
- expect(result).toBe(`--inspect --trace-warnings ${expectedFlag}`);
23
- });
24
- it("replaces existing max-old-space-size flag", () => {
25
- const result = nodeOptionsWithMaxOldSpaceSize("--max-old-space-size=4096 --inspect", testMachine);
26
- expect(result).toBe(`--inspect ${expectedFlag}`);
27
- });
28
- it("handles multiple existing max-old-space-size flags", () => {
29
- const result = nodeOptionsWithMaxOldSpaceSize("--max-old-space-size=4096 --inspect --max-old-space-size=8192", testMachine);
30
- expect(result).toBe(`--inspect ${expectedFlag}`);
31
- });
32
- it("handles extra spaces between flags", () => {
33
- const result = nodeOptionsWithMaxOldSpaceSize("--inspect --trace-warnings", testMachine);
34
- expect(result).toBe(`--inspect --trace-warnings ${expectedFlag}`);
35
- });
36
- it("uses custom overhead value", () => {
37
- const result = nodeOptionsWithMaxOldSpaceSize("--inspect", testMachine, 0.5);
38
- // With 0.5 overhead, max-old-space-size should be 512 (1024 * 0.5)
39
- expect(result).toBe("--inspect --max-old-space-size=512");
40
- });
41
- });
42
- //# sourceMappingURL=max-old-space.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"max-old-space.test.js","sourceRoot":"","sources":["../../../../src/v3/machines/max-old-space.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAG5D,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,MAAM,WAAW,GAAkB;QACjC,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,EAAE,iBAAiB;QAC5B,GAAG,EAAE,CAAC;QACN,UAAU,EAAE,CAAC;KACd,CAAC;IAEF,2EAA2E;IAC3E,MAAM,YAAY,GAAG,0BAA0B,CAAC;IAEhD,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,8BAA8B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,8BAA8B,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG,8BAA8B,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,8BAA8B,CAC3C,qCAAqC,EACrC,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,8BAA8B,CAC3C,+DAA+D,EAC/D,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,8BAA8B,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAC;QAC5F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,8BAA8B,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7E,mEAAmE;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,172 +0,0 @@
1
- import { OtelCollectorContainer, } from "@internal/testcontainers";
2
- import { metrics } from "@opentelemetry/api";
3
- import { ExportResultCode } from "@opentelemetry/core";
4
- import { MetricReader, } from "@opentelemetry/sdk-metrics";
5
- import { afterAll, beforeAll, describe, expect, it } from "vitest";
6
- import { TracingSDK } from "./tracingSDK.js";
7
- class NoopMetricExporter {
8
- forceFlushCount = 0;
9
- export(_metrics, resultCallback) {
10
- resultCallback({ code: ExportResultCode.SUCCESS });
11
- }
12
- async forceFlush() {
13
- this.forceFlushCount++;
14
- }
15
- async shutdown() { }
16
- }
17
- describe("TracingSDK with an external metric exporter", () => {
18
- let collector;
19
- let tracingSDK;
20
- beforeAll(async () => {
21
- collector = await new OtelCollectorContainer().start();
22
- process.env.TRIGGER_OTEL_METRICS_COLLECTION_INTERVAL_MILLIS = "600000";
23
- tracingSDK = new TracingSDK({
24
- url: collector.getOtlpHttpUrl(),
25
- forceFlushTimeoutMillis: 30_000,
26
- diagLogLevel: "none",
27
- metricExporters: [new NoopMetricExporter()],
28
- hostMetrics: true,
29
- hostMetricGroups: ["process.cpu", "process.memory"],
30
- nodejsRuntimeMetrics: true,
31
- });
32
- }, 180_000);
33
- afterAll(async () => {
34
- await tracingSDK?.shutdown();
35
- await collector?.stop();
36
- delete process.env.TRIGGER_OTEL_METRICS_COLLECTION_INTERVAL_MILLIS;
37
- });
38
- it("flushes without the collector rejecting a batch containing a NaN reading", async () => {
39
- const gauge = metrics.getMeter("test").createObservableGauge("test.utilization");
40
- gauge.addCallback((result) => result.observe(NaN));
41
- await expect(tracingSDK.flush()).resolves.toBeUndefined();
42
- });
43
- it("collects from each metric reader one at a time", async () => {
44
- let inFlight = 0;
45
- let maxInFlight = 0;
46
- const gauge = metrics.getMeter("test").createObservableGauge("test.concurrency");
47
- gauge.addCallback(async (result) => {
48
- inFlight++;
49
- maxInFlight = Math.max(maxInFlight, inFlight);
50
- await new Promise((resolve) => setTimeout(resolve, 5));
51
- result.observe(1);
52
- inFlight--;
53
- });
54
- await tracingSDK.flush();
55
- expect(maxInFlight).toBe(1);
56
- });
57
- });
58
- class FailingMetricReader extends MetricReader {
59
- async onForceFlush() {
60
- throw new Error("reader flush failed");
61
- }
62
- async onShutdown() { }
63
- }
64
- class FailingShutdownMetricReader extends MetricReader {
65
- shutdownAttempts = 0;
66
- async onForceFlush() { }
67
- async onShutdown() {
68
- this.shutdownAttempts++;
69
- throw new Error(`reader shutdown failed (attempt ${this.shutdownAttempts})`);
70
- }
71
- }
72
- class RecordingMetricReader extends MetricReader {
73
- forceFlushCount = 0;
74
- shutdownCount = 0;
75
- async onForceFlush() {
76
- this.forceFlushCount++;
77
- }
78
- async onShutdown() {
79
- this.shutdownCount++;
80
- }
81
- }
82
- function captureConsoleErrors() {
83
- const lines = [];
84
- const original = console.error;
85
- console.error = (...args) => {
86
- lines.push(args.map(String).join(" "));
87
- };
88
- return { lines, restore: () => (console.error = original) };
89
- }
90
- describe("TracingSDK when one metric reader fails to flush", () => {
91
- let recordingReader;
92
- let tracingSDK;
93
- beforeAll(() => {
94
- recordingReader = new RecordingMetricReader();
95
- tracingSDK = new TracingSDK({
96
- url: "http://localhost:1",
97
- forceFlushTimeoutMillis: 5_000,
98
- diagLogLevel: "none",
99
- metricReaders: [new FailingMetricReader(), recordingReader],
100
- });
101
- });
102
- it("still flushes the readers after it", async () => {
103
- await tracingSDK.flush().catch(() => { });
104
- expect(recordingReader.forceFlushCount).toBeGreaterThan(0);
105
- });
106
- it("still reports the failure to the caller", async () => {
107
- await expect(tracingSDK.flush()).rejects.toThrow("reader flush failed");
108
- });
109
- it("logs the failure as it happens", async () => {
110
- const console = captureConsoleErrors();
111
- await tracingSDK.flush().catch(() => { });
112
- console.restore();
113
- expect(console.lines.join("\n")).toContain("reader flush failed");
114
- });
115
- });
116
- class OverlapRecordingMetricReader extends MetricReader {
117
- static inFlight = 0;
118
- static maxInFlight = 0;
119
- async onForceFlush() { }
120
- async onShutdown() {
121
- OverlapRecordingMetricReader.inFlight++;
122
- OverlapRecordingMetricReader.maxInFlight = Math.max(OverlapRecordingMetricReader.maxInFlight, OverlapRecordingMetricReader.inFlight);
123
- await new Promise((resolve) => setTimeout(resolve, 5));
124
- OverlapRecordingMetricReader.inFlight--;
125
- }
126
- }
127
- describe("TracingSDK shutdown", () => {
128
- it("shuts down each metric reader one at a time", async () => {
129
- OverlapRecordingMetricReader.inFlight = 0;
130
- OverlapRecordingMetricReader.maxInFlight = 0;
131
- const tracingSDK = new TracingSDK({
132
- url: "http://localhost:1",
133
- forceFlushTimeoutMillis: 5_000,
134
- diagLogLevel: "none",
135
- metricReaders: [new OverlapRecordingMetricReader(), new OverlapRecordingMetricReader()],
136
- });
137
- await tracingSDK.shutdown().catch(() => { });
138
- expect(OverlapRecordingMetricReader.maxInFlight).toBe(1);
139
- });
140
- it("still shuts down the readers after one that fails", async () => {
141
- const recordingReader = new RecordingMetricReader();
142
- const tracingSDK = new TracingSDK({
143
- url: "http://localhost:1",
144
- forceFlushTimeoutMillis: 5_000,
145
- diagLogLevel: "none",
146
- metricReaders: [new FailingShutdownMetricReader(), recordingReader],
147
- });
148
- await tracingSDK.shutdown().catch(() => { });
149
- expect(recordingReader.shutdownCount).toBeGreaterThan(0);
150
- });
151
- it("does not retry a metric reader that failed to shut down", async () => {
152
- const failingReader = new FailingShutdownMetricReader();
153
- const tracingSDK = new TracingSDK({
154
- url: "http://localhost:1",
155
- forceFlushTimeoutMillis: 5_000,
156
- diagLogLevel: "none",
157
- metricReaders: [failingReader],
158
- });
159
- await tracingSDK.shutdown().catch(() => { });
160
- expect(failingReader.shutdownAttempts).toBe(1);
161
- });
162
- it("reports the original shutdown failure, not a later one", async () => {
163
- const tracingSDK = new TracingSDK({
164
- url: "http://localhost:1",
165
- forceFlushTimeoutMillis: 5_000,
166
- diagLogLevel: "none",
167
- metricReaders: [new FailingShutdownMetricReader()],
168
- });
169
- await expect(tracingSDK.shutdown()).rejects.toThrow("attempt 1");
170
- });
171
- });
172
- //# sourceMappingURL=tracingSDK.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracingSDK.test.js","sourceRoot":"","sources":["../../../../src/v3/otel/tracingSDK.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,16 +0,0 @@
1
- import { metrics } from "@opentelemetry/api";
2
- import { describe, expect, it } from "vitest";
3
- import { TracingSDK } from "./tracingSDK.js";
4
- describe("TracingSDK shutdown", () => {
5
- it("leaves the meter provider shut down", async () => {
6
- const tracingSDK = new TracingSDK({
7
- url: "http://localhost:1",
8
- forceFlushTimeoutMillis: 5_000,
9
- diagLogLevel: "none",
10
- });
11
- const meterBeforeShutdown = metrics.getMeter("test");
12
- await tracingSDK.shutdown().catch(() => { });
13
- expect(metrics.getMeter("test")).not.toBe(meterBeforeShutdown);
14
- });
15
- });
16
- //# sourceMappingURL=tracingSDKShutdown.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracingSDKShutdown.test.js","sourceRoot":"","sources":["../../../../src/v3/otel/tracingSDKShutdown.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;YAChC,GAAG,EAAE,oBAAoB;YACzB,uBAAuB,EAAE,KAAK;YAC9B,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,87 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { StandardRealtimeStreamsManager } from "./manager.js";
3
- function getCached(manager, runId, key) {
4
- return manager.getCachedCreateStream(runId, key);
5
- }
6
- function makeApiClient(impl) {
7
- const spy = vi.fn(impl);
8
- const client = { createStream: spy };
9
- return { client, spy };
10
- }
11
- describe("StandardRealtimeStreamsManager createStream cache", () => {
12
- it("dedupes repeated calls for the same (runId, key)", async () => {
13
- const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
14
- const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
15
- const p1 = getCached(manager, "run-1", "chat");
16
- const p2 = getCached(manager, "run-1", "chat");
17
- expect(p1).toBe(p2);
18
- expect(spy).toHaveBeenCalledTimes(1);
19
- await Promise.all([p1, p2]);
20
- expect(spy).toHaveBeenCalledTimes(1);
21
- });
22
- it("issues a separate PUT for each distinct stream key on the same run", async () => {
23
- const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
24
- const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
25
- await Promise.all([
26
- getCached(manager, "run-1", "chat"),
27
- getCached(manager, "run-1", "tool-output"),
28
- ]);
29
- expect(spy).toHaveBeenCalledTimes(2);
30
- expect(spy).toHaveBeenNthCalledWith(1, "run-1", "self", "chat", undefined);
31
- expect(spy).toHaveBeenNthCalledWith(2, "run-1", "self", "tool-output", undefined);
32
- });
33
- it("issues a separate PUT for each distinct run, even with the same key", async () => {
34
- const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
35
- const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
36
- await Promise.all([getCached(manager, "run-1", "chat"), getCached(manager, "run-2", "chat")]);
37
- expect(spy).toHaveBeenCalledTimes(2);
38
- });
39
- it("evicts on failure so the next call retries instead of returning a poisoned entry", async () => {
40
- const spy = vi
41
- .fn()
42
- .mockRejectedValueOnce(new Error("boom"))
43
- .mockResolvedValueOnce({ version: "v1", headers: {} });
44
- const client = { createStream: spy };
45
- const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
46
- await expect(getCached(manager, "run-1", "chat")).rejects.toThrow("boom");
47
- const retried = await getCached(manager, "run-1", "chat");
48
- expect(retried).toEqual({ version: "v1", headers: {} });
49
- expect(spy).toHaveBeenCalledTimes(2);
50
- });
51
- it("reset() clears cached entries so the next call re-PUTs", async () => {
52
- const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
53
- const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
54
- await getCached(manager, "run-1", "chat");
55
- expect(spy).toHaveBeenCalledTimes(1);
56
- manager.reset();
57
- await getCached(manager, "run-1", "chat");
58
- expect(spy).toHaveBeenCalledTimes(2);
59
- });
60
- it("evictCreateStreamIfStale clears the matching entry so the next call re-PUTs", async () => {
61
- const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
62
- const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
63
- // Prime the cache and capture which promise was stored.
64
- const cachedPromise = getCached(manager, "run-1", "chat");
65
- await cachedPromise;
66
- expect(spy).toHaveBeenCalledTimes(1);
67
- // Simulate the reactive invalidation path that `pipe()` runs when a
68
- // writer's `wait()` rejects.
69
- manager.evictCreateStreamIfStale("run-1", "chat", cachedPromise);
70
- await getCached(manager, "run-1", "chat");
71
- expect(spy).toHaveBeenCalledTimes(2);
72
- });
73
- it("evictCreateStreamIfStale is a no-op when the cache holds a different promise", async () => {
74
- const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
75
- const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
76
- const original = getCached(manager, "run-1", "chat");
77
- await original;
78
- // A different promise (e.g. from a concurrent caller that already
79
- // refreshed) shouldn't trigger eviction.
80
- const stalePromise = Promise.resolve({ version: "v1", headers: {} });
81
- manager.evictCreateStreamIfStale("run-1", "chat", stalePromise);
82
- // Cache should still hold the original entry; next call is a hit.
83
- await getCached(manager, "run-1", "chat");
84
- expect(spy).toHaveBeenCalledTimes(1);
85
- });
86
- });
87
- //# sourceMappingURL=manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../../src/v3/realtimeStreams/manager.test.ts"],"names":[],"mappings":"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"}