@trigger.dev/core 4.5.11 → 4.5.13

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 (397) hide show
  1. package/dist/commonjs/v3/apiClient/core.js +5 -5
  2. package/dist/commonjs/v3/apiClient/core.js.map +1 -1
  3. package/dist/commonjs/v3/apiClient/index.d.ts +9 -1
  4. package/dist/commonjs/v3/apiClient/runStream.d.ts +5 -4
  5. package/dist/commonjs/v3/apiClient/runStream.js +1 -0
  6. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  7. package/dist/commonjs/v3/apiClient/runStream.test.js +1 -0
  8. package/dist/commonjs/v3/apiClient/runStream.test.js.map +1 -1
  9. package/dist/commonjs/v3/apiClient/stream.d.ts +0 -4
  10. package/dist/commonjs/v3/apiClient/stream.js +0 -30
  11. package/dist/commonjs/v3/apiClient/stream.js.map +1 -1
  12. package/dist/commonjs/v3/apiClientManager/index.d.ts +1 -3
  13. package/dist/commonjs/v3/apiClientManager/index.js +9 -2
  14. package/dist/commonjs/v3/apiClientManager/index.js.map +1 -1
  15. package/dist/commonjs/v3/apiClientManager/types.d.ts +6 -0
  16. package/dist/commonjs/v3/auth/environment.d.ts +1 -0
  17. package/dist/commonjs/v3/clock/preciseWallClock.d.ts +2 -1
  18. package/dist/commonjs/v3/errors.js +2 -0
  19. package/dist/commonjs/v3/errors.js.map +1 -1
  20. package/dist/commonjs/v3/externalDeploymentId.d.ts +14 -0
  21. package/dist/commonjs/v3/externalDeploymentId.js +81 -0
  22. package/dist/commonjs/v3/externalDeploymentId.js.map +1 -0
  23. package/dist/commonjs/v3/externalDeploymentId.test.d.ts +1 -0
  24. package/dist/commonjs/v3/externalDeploymentId.test.js +173 -0
  25. package/dist/commonjs/v3/externalDeploymentId.test.js.map +1 -0
  26. package/dist/commonjs/v3/idempotencyKeys.js +34 -10
  27. package/dist/commonjs/v3/idempotencyKeys.js.map +1 -1
  28. package/dist/commonjs/v3/idempotencyKeys.test.js +158 -0
  29. package/dist/commonjs/v3/idempotencyKeys.test.js.map +1 -1
  30. package/dist/commonjs/v3/index.d.ts +1 -0
  31. package/dist/commonjs/v3/index.js +1 -0
  32. package/dist/commonjs/v3/index.js.map +1 -1
  33. package/dist/commonjs/v3/isomorphic/deploymentVersions.d.ts +1 -0
  34. package/dist/commonjs/v3/isomorphic/deploymentVersions.js +23 -0
  35. package/dist/commonjs/v3/isomorphic/deploymentVersions.js.map +1 -0
  36. package/dist/commonjs/v3/isomorphic/friendlyId.d.ts +83 -1
  37. package/dist/commonjs/v3/isomorphic/friendlyId.js +247 -12
  38. package/dist/commonjs/v3/isomorphic/friendlyId.js.map +1 -1
  39. package/dist/commonjs/v3/isomorphic/friendlyId.test.js +326 -1
  40. package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +1 -1
  41. package/dist/commonjs/v3/isomorphic/index.d.ts +2 -0
  42. package/dist/commonjs/v3/isomorphic/index.js +2 -0
  43. package/dist/commonjs/v3/isomorphic/index.js.map +1 -1
  44. package/dist/commonjs/v3/isomorphic/runOpsResidency.d.ts +21 -7
  45. package/dist/commonjs/v3/isomorphic/runOpsResidency.js +23 -7
  46. package/dist/commonjs/v3/isomorphic/runOpsResidency.js.map +1 -1
  47. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +85 -2
  48. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +1 -1
  49. package/dist/commonjs/v3/isomorphic/waitpointMint.d.ts +9 -0
  50. package/dist/commonjs/v3/isomorphic/waitpointMint.js +22 -0
  51. package/dist/commonjs/v3/isomorphic/waitpointMint.js.map +1 -0
  52. package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +1 -0
  53. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +97 -0
  54. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +1 -0
  55. package/dist/commonjs/v3/lifecycleHooks/types.d.ts +4 -3
  56. package/dist/commonjs/v3/locals/manager.js +1 -1
  57. package/dist/commonjs/v3/locals/manager.js.map +1 -1
  58. package/dist/commonjs/v3/logger/taskLogger.d.ts +2 -1
  59. package/dist/commonjs/v3/otel/tracingSDK.d.ts +48 -4
  60. package/dist/commonjs/v3/otel/tracingSDK.js +113 -23
  61. package/dist/commonjs/v3/otel/tracingSDK.js.map +1 -1
  62. package/dist/commonjs/v3/otel/tracingSDK.test.d.ts +1 -0
  63. package/dist/commonjs/v3/otel/tracingSDK.test.js +174 -0
  64. package/dist/commonjs/v3/otel/tracingSDK.test.js.map +1 -0
  65. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.d.ts +1 -0
  66. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js +18 -0
  67. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js.map +1 -0
  68. package/dist/commonjs/v3/realtimeStreams/index.d.ts +0 -3
  69. package/dist/commonjs/v3/realtimeStreams/index.js +1 -8
  70. package/dist/commonjs/v3/realtimeStreams/index.js.map +1 -1
  71. package/dist/commonjs/v3/resource-catalog/catalog.d.ts +11 -1
  72. package/dist/commonjs/v3/resource-catalog/index.d.ts +11 -1
  73. package/dist/commonjs/v3/resource-catalog/index.js +21 -0
  74. package/dist/commonjs/v3/resource-catalog/index.js.map +1 -1
  75. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.d.ts +11 -1
  76. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js +21 -0
  77. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
  78. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.d.ts +16 -1
  79. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js +63 -0
  80. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
  81. package/dist/commonjs/v3/runEngineWorker/supervisor/events.d.ts +0 -1
  82. package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +2 -0
  83. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +14 -0
  84. package/dist/commonjs/v3/runEngineWorker/supervisor/util.d.ts +0 -1
  85. package/dist/commonjs/v3/runEngineWorker/supervisor/util.js +0 -25
  86. package/dist/commonjs/v3/runEngineWorker/supervisor/util.js.map +1 -1
  87. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +1 -0
  88. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +7 -0
  89. package/dist/commonjs/v3/schemas/api-type.test.js +162 -0
  90. package/dist/commonjs/v3/schemas/api-type.test.js.map +1 -1
  91. package/dist/commonjs/v3/schemas/api.d.ts +4174 -9
  92. package/dist/commonjs/v3/schemas/api.js +96 -6
  93. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  94. package/dist/commonjs/v3/schemas/build.d.ts +7672 -2
  95. package/dist/commonjs/v3/schemas/build.js +2 -0
  96. package/dist/commonjs/v3/schemas/build.js.map +1 -1
  97. package/dist/commonjs/v3/schemas/checkpoints.d.ts +7 -0
  98. package/dist/commonjs/v3/schemas/index.d.ts +3 -0
  99. package/dist/commonjs/v3/schemas/index.js +3 -0
  100. package/dist/commonjs/v3/schemas/index.js.map +1 -1
  101. package/dist/commonjs/v3/schemas/messages.d.ts +3890 -55
  102. package/dist/commonjs/v3/schemas/resources.d.ts +5843 -2
  103. package/dist/commonjs/v3/schemas/resources.js +15 -1
  104. package/dist/commonjs/v3/schemas/resources.js.map +1 -1
  105. package/dist/commonjs/v3/schemas/runEngine.d.ts +10 -0
  106. package/dist/commonjs/v3/schemas/runEngine.js +1 -0
  107. package/dist/commonjs/v3/schemas/runEngine.js.map +1 -1
  108. package/dist/commonjs/v3/schemas/scheduleWindow.d.ts +38 -0
  109. package/dist/commonjs/v3/schemas/scheduleWindow.js +42 -0
  110. package/dist/commonjs/v3/schemas/scheduleWindow.js.map +1 -0
  111. package/dist/commonjs/v3/schemas/scheduleWindow.test.d.ts +1 -0
  112. package/dist/commonjs/v3/schemas/scheduleWindow.test.js +52 -0
  113. package/dist/commonjs/v3/schemas/scheduleWindow.test.js.map +1 -0
  114. package/dist/commonjs/v3/schemas/schemas.d.ts +5241 -10
  115. package/dist/commonjs/v3/schemas/schemas.js +35 -8
  116. package/dist/commonjs/v3/schemas/schemas.js.map +1 -1
  117. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.d.ts +1 -0
  118. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js +104 -0
  119. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js.map +1 -0
  120. package/dist/commonjs/v3/schemas/webhookApi.d.ts +309 -0
  121. package/dist/commonjs/v3/schemas/webhookApi.js +88 -0
  122. package/dist/commonjs/v3/schemas/webhookApi.js.map +1 -0
  123. package/dist/commonjs/v3/schemas/webhookConfig.d.ts +3710 -0
  124. package/dist/commonjs/v3/schemas/webhookConfig.js +168 -0
  125. package/dist/commonjs/v3/schemas/webhookConfig.js.map +1 -0
  126. package/dist/commonjs/v3/schemas/webhookFilter.d.ts +83 -0
  127. package/dist/commonjs/v3/schemas/webhookFilter.js +41 -0
  128. package/dist/commonjs/v3/schemas/webhookFilter.js.map +1 -0
  129. package/dist/commonjs/v3/schemas/webhooks.js +4 -0
  130. package/dist/commonjs/v3/schemas/webhooks.js.map +1 -1
  131. package/dist/commonjs/v3/serverOnly/httpServer.js +2 -0
  132. package/dist/commonjs/v3/serverOnly/httpServer.js.map +1 -1
  133. package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
  134. package/dist/commonjs/v3/session-streams-api.js +1 -0
  135. package/dist/commonjs/v3/session-streams-api.js.map +1 -1
  136. package/dist/commonjs/v3/sessionStreams/index.d.ts +9 -1
  137. package/dist/commonjs/v3/sessionStreams/index.js +38 -0
  138. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
  139. package/dist/commonjs/v3/sessionStreams/manager.d.ts +27 -2
  140. package/dist/commonjs/v3/sessionStreams/manager.js +202 -108
  141. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
  142. package/dist/commonjs/v3/sessionStreams/manager.test.js +253 -0
  143. package/dist/commonjs/v3/sessionStreams/manager.test.js.map +1 -1
  144. package/dist/commonjs/v3/sessionStreams/noopManager.d.ts +9 -1
  145. package/dist/commonjs/v3/sessionStreams/noopManager.js +18 -0
  146. package/dist/commonjs/v3/sessionStreams/noopManager.js.map +1 -1
  147. package/dist/commonjs/v3/sessionStreams/router.d.ts +241 -0
  148. package/dist/commonjs/v3/sessionStreams/router.js +402 -0
  149. package/dist/commonjs/v3/sessionStreams/router.js.map +1 -0
  150. package/dist/commonjs/v3/sessionStreams/router.test.d.ts +1 -0
  151. package/dist/commonjs/v3/sessionStreams/router.test.js +463 -0
  152. package/dist/commonjs/v3/sessionStreams/router.test.js.map +1 -0
  153. package/dist/commonjs/v3/sessionStreams/types.d.ts +42 -6
  154. package/dist/commonjs/v3/sessionStreams/wireProtocol.d.ts +11 -0
  155. package/dist/commonjs/v3/sessionStreams/wireProtocol.js +12 -1
  156. package/dist/commonjs/v3/sessionStreams/wireProtocol.js.map +1 -1
  157. package/dist/commonjs/v3/taskContext/otelProcessors.js +25 -1
  158. package/dist/commonjs/v3/taskContext/otelProcessors.js.map +1 -1
  159. package/dist/commonjs/v3/taskContext/otelProcessors.test.d.ts +1 -0
  160. package/dist/commonjs/v3/taskContext/otelProcessors.test.js +109 -0
  161. package/dist/commonjs/v3/taskContext/otelProcessors.test.js.map +1 -0
  162. package/dist/commonjs/v3/test/mock-task-context.d.ts +6 -2
  163. package/dist/commonjs/v3/test/mock-task-context.js +2 -2
  164. package/dist/commonjs/v3/test/mock-task-context.js.map +1 -1
  165. package/dist/commonjs/v3/test/session-waitpoint-backend.js +17 -3
  166. package/dist/commonjs/v3/test/session-waitpoint-backend.js.map +1 -1
  167. package/dist/commonjs/v3/test/test-session-stream-manager.d.ts +13 -2
  168. package/dist/commonjs/v3/test/test-session-stream-manager.js +173 -67
  169. package/dist/commonjs/v3/test/test-session-stream-manager.js.map +1 -1
  170. package/dist/commonjs/v3/types/chatEvents.d.ts +41 -0
  171. package/dist/commonjs/v3/types/chatEvents.js +3 -0
  172. package/dist/commonjs/v3/types/chatEvents.js.map +1 -0
  173. package/dist/commonjs/v3/types/index.d.ts +2 -0
  174. package/dist/commonjs/v3/types/index.js +2 -0
  175. package/dist/commonjs/v3/types/index.js.map +1 -1
  176. package/dist/commonjs/v3/types/schemas.d.ts +12 -11
  177. package/dist/commonjs/v3/types/tasks.d.ts +21 -0
  178. package/dist/commonjs/v3/types/webhooks.d.ts +26 -0
  179. package/dist/commonjs/v3/types/webhooks.js +3 -0
  180. package/dist/commonjs/v3/types/webhooks.js.map +1 -0
  181. package/dist/commonjs/v3/usage/usageClient.d.ts +0 -4
  182. package/dist/commonjs/v3/usage/usageClient.js.map +1 -1
  183. package/dist/commonjs/v3/utils/flattenAttributes.js +2 -0
  184. package/dist/commonjs/v3/utils/flattenAttributes.js.map +1 -1
  185. package/dist/commonjs/v3/utils/globals.js +5 -1
  186. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  187. package/dist/commonjs/v3/webhooks/index.d.ts +1289 -0
  188. package/dist/commonjs/v3/webhooks/index.js +270 -0
  189. package/dist/commonjs/v3/webhooks/index.js.map +1 -0
  190. package/dist/commonjs/v3/workers/populateEnv.js +2 -2
  191. package/dist/commonjs/v3/workers/populateEnv.js.map +1 -1
  192. package/dist/commonjs/version.js +1 -1
  193. package/dist/esm/v3/apiClient/core.js +6 -6
  194. package/dist/esm/v3/apiClient/core.js.map +1 -1
  195. package/dist/esm/v3/apiClient/index.d.ts +9 -1
  196. package/dist/esm/v3/apiClient/runStream.d.ts +5 -4
  197. package/dist/esm/v3/apiClient/runStream.js +1 -0
  198. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  199. package/dist/esm/v3/apiClient/runStream.test.js +1 -0
  200. package/dist/esm/v3/apiClient/runStream.test.js.map +1 -1
  201. package/dist/esm/v3/apiClient/stream.d.ts +0 -4
  202. package/dist/esm/v3/apiClient/stream.js +0 -28
  203. package/dist/esm/v3/apiClient/stream.js.map +1 -1
  204. package/dist/esm/v3/apiClientManager/index.d.ts +1 -3
  205. package/dist/esm/v3/apiClientManager/index.js +9 -1
  206. package/dist/esm/v3/apiClientManager/index.js.map +1 -1
  207. package/dist/esm/v3/apiClientManager/types.d.ts +6 -0
  208. package/dist/esm/v3/auth/environment.d.ts +1 -0
  209. package/dist/esm/v3/clock/preciseWallClock.d.ts +2 -1
  210. package/dist/esm/v3/errors.js +2 -0
  211. package/dist/esm/v3/errors.js.map +1 -1
  212. package/dist/esm/v3/externalDeploymentId.d.ts +14 -0
  213. package/dist/esm/v3/externalDeploymentId.js +74 -0
  214. package/dist/esm/v3/externalDeploymentId.js.map +1 -0
  215. package/dist/esm/v3/externalDeploymentId.test.d.ts +1 -0
  216. package/dist/esm/v3/externalDeploymentId.test.js +171 -0
  217. package/dist/esm/v3/externalDeploymentId.test.js.map +1 -0
  218. package/dist/esm/v3/idempotencyKeys.js +34 -10
  219. package/dist/esm/v3/idempotencyKeys.js.map +1 -1
  220. package/dist/esm/v3/idempotencyKeys.test.js +160 -2
  221. package/dist/esm/v3/idempotencyKeys.test.js.map +1 -1
  222. package/dist/esm/v3/index.d.ts +1 -0
  223. package/dist/esm/v3/index.js +1 -0
  224. package/dist/esm/v3/index.js.map +1 -1
  225. package/dist/esm/v3/isomorphic/deploymentVersions.d.ts +1 -0
  226. package/dist/esm/v3/isomorphic/deploymentVersions.js +20 -0
  227. package/dist/esm/v3/isomorphic/deploymentVersions.js.map +1 -0
  228. package/dist/esm/v3/isomorphic/friendlyId.d.ts +83 -1
  229. package/dist/esm/v3/isomorphic/friendlyId.js +238 -11
  230. package/dist/esm/v3/isomorphic/friendlyId.js.map +1 -1
  231. package/dist/esm/v3/isomorphic/friendlyId.test.js +327 -2
  232. package/dist/esm/v3/isomorphic/friendlyId.test.js.map +1 -1
  233. package/dist/esm/v3/isomorphic/index.d.ts +2 -0
  234. package/dist/esm/v3/isomorphic/index.js +2 -0
  235. package/dist/esm/v3/isomorphic/index.js.map +1 -1
  236. package/dist/esm/v3/isomorphic/runOpsResidency.d.ts +21 -7
  237. package/dist/esm/v3/isomorphic/runOpsResidency.js +23 -8
  238. package/dist/esm/v3/isomorphic/runOpsResidency.js.map +1 -1
  239. package/dist/esm/v3/isomorphic/runOpsResidency.test.js +87 -4
  240. package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +1 -1
  241. package/dist/esm/v3/isomorphic/waitpointMint.d.ts +9 -0
  242. package/dist/esm/v3/isomorphic/waitpointMint.js +18 -0
  243. package/dist/esm/v3/isomorphic/waitpointMint.js.map +1 -0
  244. package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +1 -0
  245. package/dist/esm/v3/isomorphic/waitpointMint.test.js +95 -0
  246. package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +1 -0
  247. package/dist/esm/v3/lifecycleHooks/types.d.ts +4 -3
  248. package/dist/esm/v3/locals/manager.js +1 -1
  249. package/dist/esm/v3/locals/manager.js.map +1 -1
  250. package/dist/esm/v3/logger/taskLogger.d.ts +2 -1
  251. package/dist/esm/v3/otel/tracingSDK.d.ts +48 -4
  252. package/dist/esm/v3/otel/tracingSDK.js +112 -23
  253. package/dist/esm/v3/otel/tracingSDK.js.map +1 -1
  254. package/dist/esm/v3/otel/tracingSDK.test.d.ts +1 -0
  255. package/dist/esm/v3/otel/tracingSDK.test.js +172 -0
  256. package/dist/esm/v3/otel/tracingSDK.test.js.map +1 -0
  257. package/dist/esm/v3/otel/tracingSDKShutdown.test.d.ts +1 -0
  258. package/dist/esm/v3/otel/tracingSDKShutdown.test.js +16 -0
  259. package/dist/esm/v3/otel/tracingSDKShutdown.test.js.map +1 -0
  260. package/dist/esm/v3/realtimeStreams/index.d.ts +0 -3
  261. package/dist/esm/v3/realtimeStreams/index.js +0 -2
  262. package/dist/esm/v3/realtimeStreams/index.js.map +1 -1
  263. package/dist/esm/v3/resource-catalog/catalog.d.ts +11 -1
  264. package/dist/esm/v3/resource-catalog/index.d.ts +11 -1
  265. package/dist/esm/v3/resource-catalog/index.js +21 -0
  266. package/dist/esm/v3/resource-catalog/index.js.map +1 -1
  267. package/dist/esm/v3/resource-catalog/noopResourceCatalog.d.ts +11 -1
  268. package/dist/esm/v3/resource-catalog/noopResourceCatalog.js +21 -0
  269. package/dist/esm/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
  270. package/dist/esm/v3/resource-catalog/standardResourceCatalog.d.ts +16 -1
  271. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js +63 -0
  272. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
  273. package/dist/esm/v3/runEngineWorker/supervisor/events.d.ts +0 -1
  274. package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +2 -0
  275. package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +14 -0
  276. package/dist/esm/v3/runEngineWorker/supervisor/util.d.ts +0 -1
  277. package/dist/esm/v3/runEngineWorker/supervisor/util.js +0 -24
  278. package/dist/esm/v3/runEngineWorker/supervisor/util.js.map +1 -1
  279. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +1 -0
  280. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +61 -54
  281. package/dist/esm/v3/schemas/api-type.test.js +163 -1
  282. package/dist/esm/v3/schemas/api-type.test.js.map +1 -1
  283. package/dist/esm/v3/schemas/api.d.ts +4174 -9
  284. package/dist/esm/v3/schemas/api.js +91 -2
  285. package/dist/esm/v3/schemas/api.js.map +1 -1
  286. package/dist/esm/v3/schemas/build.d.ts +7672 -2
  287. package/dist/esm/v3/schemas/build.js +3 -1
  288. package/dist/esm/v3/schemas/build.js.map +1 -1
  289. package/dist/esm/v3/schemas/checkpoints.d.ts +7 -0
  290. package/dist/esm/v3/schemas/index.d.ts +3 -0
  291. package/dist/esm/v3/schemas/index.js +3 -0
  292. package/dist/esm/v3/schemas/index.js.map +1 -1
  293. package/dist/esm/v3/schemas/messages.d.ts +3890 -55
  294. package/dist/esm/v3/schemas/resources.d.ts +5843 -2
  295. package/dist/esm/v3/schemas/resources.js +14 -0
  296. package/dist/esm/v3/schemas/resources.js.map +1 -1
  297. package/dist/esm/v3/schemas/runEngine.d.ts +10 -0
  298. package/dist/esm/v3/schemas/runEngine.js +1 -0
  299. package/dist/esm/v3/schemas/runEngine.js.map +1 -1
  300. package/dist/esm/v3/schemas/scheduleWindow.d.ts +38 -0
  301. package/dist/esm/v3/schemas/scheduleWindow.js +38 -0
  302. package/dist/esm/v3/schemas/scheduleWindow.js.map +1 -0
  303. package/dist/esm/v3/schemas/scheduleWindow.test.d.ts +1 -0
  304. package/dist/esm/v3/schemas/scheduleWindow.test.js +50 -0
  305. package/dist/esm/v3/schemas/scheduleWindow.test.js.map +1 -0
  306. package/dist/esm/v3/schemas/schemas.d.ts +5241 -10
  307. package/dist/esm/v3/schemas/schemas.js +19 -6
  308. package/dist/esm/v3/schemas/schemas.js.map +1 -1
  309. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.d.ts +1 -0
  310. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js +102 -0
  311. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js.map +1 -0
  312. package/dist/esm/v3/schemas/webhookApi.d.ts +309 -0
  313. package/dist/esm/v3/schemas/webhookApi.js +85 -0
  314. package/dist/esm/v3/schemas/webhookApi.js.map +1 -0
  315. package/dist/esm/v3/schemas/webhookConfig.d.ts +3710 -0
  316. package/dist/esm/v3/schemas/webhookConfig.js +165 -0
  317. package/dist/esm/v3/schemas/webhookConfig.js.map +1 -0
  318. package/dist/esm/v3/schemas/webhookFilter.d.ts +83 -0
  319. package/dist/esm/v3/schemas/webhookFilter.js +38 -0
  320. package/dist/esm/v3/schemas/webhookFilter.js.map +1 -0
  321. package/dist/esm/v3/schemas/webhooks.js +4 -0
  322. package/dist/esm/v3/schemas/webhooks.js.map +1 -1
  323. package/dist/esm/v3/serverOnly/httpServer.js +2 -0
  324. package/dist/esm/v3/serverOnly/httpServer.js.map +1 -1
  325. package/dist/esm/v3/session-streams-api.d.ts +1 -0
  326. package/dist/esm/v3/session-streams-api.js +1 -0
  327. package/dist/esm/v3/session-streams-api.js.map +1 -1
  328. package/dist/esm/v3/sessionStreams/index.d.ts +9 -1
  329. package/dist/esm/v3/sessionStreams/index.js +38 -0
  330. package/dist/esm/v3/sessionStreams/index.js.map +1 -1
  331. package/dist/esm/v3/sessionStreams/manager.d.ts +27 -2
  332. package/dist/esm/v3/sessionStreams/manager.js +202 -108
  333. package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
  334. package/dist/esm/v3/sessionStreams/manager.test.js +253 -0
  335. package/dist/esm/v3/sessionStreams/manager.test.js.map +1 -1
  336. package/dist/esm/v3/sessionStreams/noopManager.d.ts +9 -1
  337. package/dist/esm/v3/sessionStreams/noopManager.js +18 -0
  338. package/dist/esm/v3/sessionStreams/noopManager.js.map +1 -1
  339. package/dist/esm/v3/sessionStreams/router.d.ts +241 -0
  340. package/dist/esm/v3/sessionStreams/router.js +398 -0
  341. package/dist/esm/v3/sessionStreams/router.js.map +1 -0
  342. package/dist/esm/v3/sessionStreams/router.test.d.ts +1 -0
  343. package/dist/esm/v3/sessionStreams/router.test.js +461 -0
  344. package/dist/esm/v3/sessionStreams/router.test.js.map +1 -0
  345. package/dist/esm/v3/sessionStreams/types.d.ts +42 -6
  346. package/dist/esm/v3/sessionStreams/wireProtocol.d.ts +11 -0
  347. package/dist/esm/v3/sessionStreams/wireProtocol.js +11 -0
  348. package/dist/esm/v3/sessionStreams/wireProtocol.js.map +1 -1
  349. package/dist/esm/v3/taskContext/otelProcessors.js +25 -1
  350. package/dist/esm/v3/taskContext/otelProcessors.js.map +1 -1
  351. package/dist/esm/v3/taskContext/otelProcessors.test.d.ts +1 -0
  352. package/dist/esm/v3/taskContext/otelProcessors.test.js +107 -0
  353. package/dist/esm/v3/taskContext/otelProcessors.test.js.map +1 -0
  354. package/dist/esm/v3/test/mock-task-context.d.ts +6 -2
  355. package/dist/esm/v3/test/mock-task-context.js +2 -2
  356. package/dist/esm/v3/test/mock-task-context.js.map +1 -1
  357. package/dist/esm/v3/test/session-waitpoint-backend.js +17 -3
  358. package/dist/esm/v3/test/session-waitpoint-backend.js.map +1 -1
  359. package/dist/esm/v3/test/test-session-stream-manager.d.ts +13 -2
  360. package/dist/esm/v3/test/test-session-stream-manager.js +173 -67
  361. package/dist/esm/v3/test/test-session-stream-manager.js.map +1 -1
  362. package/dist/esm/v3/types/chatEvents.d.ts +41 -0
  363. package/dist/esm/v3/types/chatEvents.js +2 -0
  364. package/dist/esm/v3/types/chatEvents.js.map +1 -0
  365. package/dist/esm/v3/types/index.d.ts +2 -0
  366. package/dist/esm/v3/types/index.js +2 -0
  367. package/dist/esm/v3/types/index.js.map +1 -1
  368. package/dist/esm/v3/types/schemas.d.ts +12 -11
  369. package/dist/esm/v3/types/tasks.d.ts +21 -0
  370. package/dist/esm/v3/types/webhooks.d.ts +26 -0
  371. package/dist/esm/v3/types/webhooks.js +2 -0
  372. package/dist/esm/v3/types/webhooks.js.map +1 -0
  373. package/dist/esm/v3/usage/usageClient.d.ts +0 -4
  374. package/dist/esm/v3/usage/usageClient.js.map +1 -1
  375. package/dist/esm/v3/utils/flattenAttributes.js +2 -0
  376. package/dist/esm/v3/utils/flattenAttributes.js.map +1 -1
  377. package/dist/esm/v3/utils/globals.js +5 -1
  378. package/dist/esm/v3/utils/globals.js.map +1 -1
  379. package/dist/esm/v3/webhooks/index.d.ts +1289 -0
  380. package/dist/esm/v3/webhooks/index.js +248 -0
  381. package/dist/esm/v3/webhooks/index.js.map +1 -0
  382. package/dist/esm/v3/workers/populateEnv.js +2 -2
  383. package/dist/esm/v3/workers/populateEnv.js.map +1 -1
  384. package/dist/esm/version.js +1 -1
  385. package/package.json +18 -9
  386. package/dist/commonjs/debounce.d.ts +0 -2
  387. package/dist/commonjs/debounce.js +0 -19
  388. package/dist/commonjs/debounce.js.map +0 -1
  389. package/dist/commonjs/v3/utils/safeAsyncLocalStorage.d.ts +0 -7
  390. package/dist/commonjs/v3/utils/safeAsyncLocalStorage.js +0 -21
  391. package/dist/commonjs/v3/utils/safeAsyncLocalStorage.js.map +0 -1
  392. package/dist/esm/debounce.d.ts +0 -2
  393. package/dist/esm/debounce.js +0 -16
  394. package/dist/esm/debounce.js.map +0 -1
  395. package/dist/esm/v3/utils/safeAsyncLocalStorage.d.ts +0 -7
  396. package/dist/esm/v3/utils/safeAsyncLocalStorage.js +0 -17
  397. package/dist/esm/v3/utils/safeAsyncLocalStorage.js.map +0 -1
@@ -0,0 +1,463 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const router_js_1 = require("./router.js");
5
+ const CHAT_TABLE = {
6
+ kindOf: (data) => data?.kind,
7
+ routes: [
8
+ { name: "messages", delivery: "queue", replayable: true, kinds: ["message"] },
9
+ { name: "stop", delivery: "at-arrival", replayable: false, kinds: ["stop"] },
10
+ {
11
+ name: "handover",
12
+ delivery: "queue",
13
+ replayable: false,
14
+ kinds: ["handover", "handover-skip"],
15
+ },
16
+ ],
17
+ };
18
+ function router(onDrop) {
19
+ return makeRouter(onDrop);
20
+ }
21
+ function makeRouter(onDrop) {
22
+ return new router_js_1.SessionChannelRouter(CHAT_TABLE, { onDrop });
23
+ }
24
+ function rec(seqNum, kind, text) {
25
+ return { id: `r${seqNum}`, seqNum, data: { kind, ...(text ? { text } : {}) } };
26
+ }
27
+ (0, vitest_1.describe)("SessionChannelRouter: table validation", () => {
28
+ (0, vitest_1.it)("rejects a route that is at-arrival and replayable", () => {
29
+ (0, vitest_1.expect)(() => new router_js_1.SessionChannelRouter({
30
+ kindOf: () => "x",
31
+ routes: [{ name: "bad", delivery: "at-arrival", replayable: true, kinds: ["x"] }],
32
+ })).toThrow(/at-arrival and replayable/);
33
+ });
34
+ (0, vitest_1.it)("rejects a kind claimed by two routes", () => {
35
+ (0, vitest_1.expect)(() => new router_js_1.SessionChannelRouter({
36
+ kindOf: () => "x",
37
+ routes: [
38
+ { name: "a", delivery: "queue", replayable: true, kinds: ["x"] },
39
+ { name: "b", delivery: "queue", replayable: false, kinds: ["x"] },
40
+ ],
41
+ })).toThrow(/claimed by both/);
42
+ });
43
+ });
44
+ (0, vitest_1.describe)("SessionChannelRouter: classification", () => {
45
+ (0, vitest_1.it)("queues a message when nobody is ready for it", () => {
46
+ const r = router();
47
+ (0, vitest_1.expect)(r.ingest(rec(0, "message", "M0"))).toEqual({ action: "queue", route: "messages" });
48
+ (0, vitest_1.expect)(r.hasPending("messages")).toBe(true);
49
+ });
50
+ (0, vitest_1.it)("discards a stop with no handler attached", () => {
51
+ const r = router();
52
+ (0, vitest_1.expect)(r.ingest(rec(0, "stop"))).toEqual({
53
+ action: "drop",
54
+ route: "stop",
55
+ reason: "no-handler",
56
+ });
57
+ });
58
+ (0, vitest_1.it)("delivers a stop to a live handler", () => {
59
+ const r = router();
60
+ const seen = [];
61
+ r.on("stop", (record) => seen.push(record.seqNum));
62
+ (0, vitest_1.expect)(r.ingest(rec(3, "stop"))).toEqual({ action: "deliver", route: "stop" });
63
+ (0, vitest_1.expect)(seen).toEqual([3]);
64
+ });
65
+ (0, vitest_1.it)("drops a kind no route claims, and reports it once", () => {
66
+ const drops = [];
67
+ const r = router((record, reason) => drops.push([record.seqNum, reason]));
68
+ (0, vitest_1.expect)(r.ingest(rec(1, "some-future-kind"))).toEqual({
69
+ action: "drop",
70
+ reason: "unroutable",
71
+ });
72
+ (0, vitest_1.expect)(drops).toEqual([[1, "unroutable"]]);
73
+ });
74
+ (0, vitest_1.it)("drops a record with no usable kind", () => {
75
+ const r = router();
76
+ (0, vitest_1.expect)(r.ingest({ id: "x", seqNum: 0, data: { nope: true } })).toEqual({
77
+ action: "drop",
78
+ reason: "malformed",
79
+ });
80
+ });
81
+ (0, vitest_1.it)("does not let a throwing kindOf take the channel down", () => {
82
+ const r = new router_js_1.SessionChannelRouter({
83
+ kindOf: () => {
84
+ throw new Error("boom");
85
+ },
86
+ routes: [{ name: "m", delivery: "queue", replayable: true, kinds: ["message"] }],
87
+ });
88
+ (0, vitest_1.expect)(r.ingest(rec(0, "message"))).toEqual({ action: "drop", reason: "malformed" });
89
+ });
90
+ });
91
+ (0, vitest_1.describe)("SessionChannelRouter: the wedge cannot happen", () => {
92
+ (0, vitest_1.it)("delivers a message queued behind an unroutable record", async () => {
93
+ const r = router();
94
+ r.ingest(rec(0, "mystery-kind"));
95
+ r.ingest(rec(1, "message", "M1"));
96
+ (0, vitest_1.expect)(r.hasPending("messages")).toBe(true);
97
+ const taken = await r.next("messages", { timeoutMs: 0 });
98
+ (0, vitest_1.expect)(taken.data.text).toBe("M1");
99
+ });
100
+ (0, vitest_1.it)("reports pending for a message queued behind a stop", () => {
101
+ const r = router();
102
+ r.ingest(rec(0, "stop"));
103
+ r.ingest(rec(1, "message", "M1"));
104
+ (0, vitest_1.expect)(r.hasPending("messages")).toBe(true);
105
+ (0, vitest_1.expect)(r.peek("messages").data.text).toBe("M1");
106
+ });
107
+ });
108
+ (0, vitest_1.describe)("SessionChannelRouter: delivery ordering", () => {
109
+ (0, vitest_1.it)("serves a parked waiter before a push handler", async () => {
110
+ const r = router();
111
+ const handlerSaw = [];
112
+ const pending = r.next("messages");
113
+ r.on("messages", (record) => handlerSaw.push(record.data.text));
114
+ r.ingest(rec(0, "message", "M0"));
115
+ (0, vitest_1.expect)((await pending)?.seqNum).toBe(0);
116
+ (0, vitest_1.expect)(handlerSaw).toEqual([]);
117
+ });
118
+ (0, vitest_1.it)("re-offers a queued record to a handler attaching later, in order", () => {
119
+ const r = router();
120
+ r.ingest(rec(0, "message", "M0"));
121
+ r.ingest(rec(1, "message", "M1"));
122
+ const seen = [];
123
+ r.on("messages", (record) => seen.push(record.data.text));
124
+ (0, vitest_1.expect)(seen).toEqual(["M0", "M1"]);
125
+ (0, vitest_1.expect)(r.hasPending("messages")).toBe(false);
126
+ });
127
+ (0, vitest_1.it)("resolves next() undefined on timeout without consuming anything", async () => {
128
+ const r = router();
129
+ (0, vitest_1.expect)(await r.next("messages", { timeoutMs: 5 })).toBeUndefined();
130
+ r.ingest(rec(0, "message", "M0"));
131
+ (0, vitest_1.expect)((await r.next("messages", { timeoutMs: 0 }))?.seqNum).toBe(0);
132
+ });
133
+ });
134
+ (0, vitest_1.describe)("SessionChannelRouter: the resume floor", () => {
135
+ (0, vitest_1.it)("sits at the high water when nothing is owed", () => {
136
+ const r = router();
137
+ r.on("stop", () => { });
138
+ r.ingest(rec(0, "message"));
139
+ r.next("messages", { timeoutMs: 0 });
140
+ r.ingest(rec(1, "stop"));
141
+ (0, vitest_1.expect)(r.resumeFloor()).toBe(1);
142
+ (0, vitest_1.expect)(r.appliedThrough()).toBe(1);
143
+ });
144
+ (0, vitest_1.it)("is held below a message still queued, even as control records advance", () => {
145
+ const r = router();
146
+ r.on("stop", () => { });
147
+ r.ingest(rec(0, "message", "M0"));
148
+ r.ingest(rec(1, "message", "M1"));
149
+ r.next("messages", { timeoutMs: 0 });
150
+ r.ingest(rec(2, "stop"));
151
+ r.ingest(rec(3, "stop"));
152
+ (0, vitest_1.expect)(r.resumeFloor()).toBe(0);
153
+ (0, vitest_1.expect)(r.appliedThrough()).toBe(3);
154
+ });
155
+ (0, vitest_1.it)("is undefined rather than negative when the very first record is owed", () => {
156
+ const r = router();
157
+ r.ingest(rec(0, "message", "M0"));
158
+ (0, vitest_1.expect)(r.resumeFloor()).toBeUndefined();
159
+ });
160
+ (0, vitest_1.it)("is not held back by a queued non-replayable record", () => {
161
+ const r = router();
162
+ r.ingest(rec(0, "handover"));
163
+ r.ingest(rec(1, "message", "M1"));
164
+ r.next("messages", { timeoutMs: 0 });
165
+ (0, vitest_1.expect)(r.pendingCount("handover")).toBe(1);
166
+ (0, vitest_1.expect)(r.resumeFloor()).toBe(1);
167
+ });
168
+ (0, vitest_1.it)("advances once the owed message is taken", async () => {
169
+ const r = router();
170
+ r.on("stop", () => { });
171
+ r.ingest(rec(0, "message", "M0"));
172
+ r.ingest(rec(1, "stop"));
173
+ (0, vitest_1.expect)(r.resumeFloor()).toBeUndefined();
174
+ await r.next("messages", { timeoutMs: 0 });
175
+ (0, vitest_1.expect)(r.resumeFloor()).toBe(1);
176
+ });
177
+ (0, vitest_1.it)("tracks the earliest of several owed messages", () => {
178
+ const r = router();
179
+ r.ingest(rec(0, "message", "M0"));
180
+ r.ingest(rec(1, "message", "M1"));
181
+ r.ingest(rec(2, "message", "M2"));
182
+ r.next("messages", { timeoutMs: 0 });
183
+ (0, vitest_1.expect)(r.resumeFloor()).toBe(0);
184
+ (0, vitest_1.expect)(r.appliedThrough()).toBe(2);
185
+ });
186
+ });
187
+ (0, vitest_1.describe)("SessionChannelRouter: resuming", () => {
188
+ (0, vitest_1.it)("does not apply a non-replayable record inside the replay window", () => {
189
+ const r = router();
190
+ r.restore({ resumeFrom: 0, appliedThrough: 2 });
191
+ const stops = [];
192
+ r.on("stop", (record) => stops.push(record.seqNum));
193
+ (0, vitest_1.expect)(r.ingest(rec(1, "message", "M1"))).toEqual({ action: "queue", route: "messages" });
194
+ (0, vitest_1.expect)(r.ingest(rec(2, "stop"))).toEqual({
195
+ action: "drop",
196
+ route: "stop",
197
+ reason: "replayed",
198
+ });
199
+ (0, vitest_1.expect)(stops).toEqual([]);
200
+ });
201
+ (0, vitest_1.it)("applies the same kind arriving live, past the window", () => {
202
+ const r = router();
203
+ r.restore({ resumeFrom: 0, appliedThrough: 2 });
204
+ const stops = [];
205
+ r.on("stop", (record) => stops.push(record.seqNum));
206
+ r.ingest(rec(1, "message", "M1"));
207
+ r.ingest(rec(2, "stop"));
208
+ (0, vitest_1.expect)(r.ingest(rec(3, "stop"))).toEqual({ action: "deliver", route: "stop" });
209
+ (0, vitest_1.expect)(stops).toEqual([3]);
210
+ });
211
+ (0, vitest_1.it)("falls back to the floor when no replay-window end is supplied", () => {
212
+ const r = router();
213
+ r.restore({ resumeFrom: 4 });
214
+ r.on("stop", () => { });
215
+ (0, vitest_1.expect)(r.ingest(rec(4, "stop")).action).toBe("drop");
216
+ (0, vitest_1.expect)(r.ingest(rec(5, "stop"))).toEqual({ action: "deliver", route: "stop" });
217
+ });
218
+ (0, vitest_1.it)("declines a control record inside a window resolved from the channel", () => {
219
+ const r = router();
220
+ // What the chat layer supplies when the boundary predates the published
221
+ // window: everything already on the channel at boot counts as replayed.
222
+ r.restore({ resumeFrom: 4, appliedThrough: 6 });
223
+ const stops = [];
224
+ r.on("stop", (record) => stops.push(record.seqNum));
225
+ (0, vitest_1.expect)(r.ingest(rec(5, "message", "M5"))).toEqual({ action: "queue", route: "messages" });
226
+ (0, vitest_1.expect)(r.ingest(rec(6, "stop"))).toEqual({
227
+ action: "drop",
228
+ route: "stop",
229
+ reason: "replayed",
230
+ });
231
+ (0, vitest_1.expect)(r.ingest(rec(7, "stop"))).toEqual({ action: "deliver", route: "stop" });
232
+ (0, vitest_1.expect)(stops).toEqual([7]);
233
+ });
234
+ (0, vitest_1.it)("applies everything on a fresh session with no checkpoint", () => {
235
+ const r = router();
236
+ r.on("stop", () => { });
237
+ (0, vitest_1.expect)(r.ingest(rec(0, "stop"))).toEqual({ action: "deliver", route: "stop" });
238
+ });
239
+ (0, vitest_1.it)("never drops a replayable record, however far inside the window", () => {
240
+ const r = router();
241
+ r.restore({ resumeFrom: 0, appliedThrough: 9 });
242
+ (0, vitest_1.expect)(r.ingest(rec(1, "message", "M1"))).toEqual({ action: "queue", route: "messages" });
243
+ });
244
+ (0, vitest_1.it)("keeps the floor from moving backwards past the restored point", () => {
245
+ const r = router();
246
+ r.restore({ resumeFrom: 7, appliedThrough: 7 });
247
+ (0, vitest_1.expect)(r.resumeFloor()).toBe(7);
248
+ });
249
+ });
250
+ (0, vitest_1.describe)("SessionChannelRouter: consumer windows", () => {
251
+ (0, vitest_1.it)("queues a handover that arrives before its consumer is ready", async () => {
252
+ const r = router();
253
+ (0, vitest_1.expect)(r.ingest(rec(0, "handover")).action).toBe("queue");
254
+ const taken = await r.next("handover", { timeoutMs: 0 });
255
+ (0, vitest_1.expect)(taken?.seqNum).toBe(0);
256
+ });
257
+ (0, vitest_1.it)("discards what is left on a route when its window closes", () => {
258
+ const r = router();
259
+ r.ingest(rec(0, "handover"));
260
+ r.clearRoute("handover");
261
+ (0, vitest_1.expect)(r.pendingCount("handover")).toBe(0);
262
+ (0, vitest_1.expect)(r.resumeFloor()).toBe(0);
263
+ });
264
+ (0, vitest_1.it)("wakes a waiter empty when its window closes", async () => {
265
+ const r = router();
266
+ const pending = r.next("handover");
267
+ r.clearRoute("handover");
268
+ (0, vitest_1.expect)(await pending).toBeUndefined();
269
+ });
270
+ });
271
+ /**
272
+ * The invariant the whole design exists to hold: across any interleaving and
273
+ * any crash point, a message is delivered exactly once and a stop is never
274
+ * applied twice.
275
+ *
276
+ * Runs every record sequence over a simulated two-boot lifecycle. The second
277
+ * boot resubscribes from the published floor, exactly as the tail does with
278
+ * `Last-Event-ID`, so a floor that is too high shows up as a lost message and
279
+ * one that replays a stop shows up as a duplicate application.
280
+ */
281
+ (0, vitest_1.describe)("SessionChannelRouter: exactly-once across a crash", () => {
282
+ const KINDS = ["message", "stop", "handover", "junk"];
283
+ function interleavings(length) {
284
+ if (length === 0)
285
+ return [[]];
286
+ const shorter = interleavings(length - 1);
287
+ const out = [];
288
+ for (const prefix of shorter) {
289
+ for (const kind of KINDS)
290
+ out.push([...prefix, kind]);
291
+ }
292
+ return out;
293
+ }
294
+ function runBoot(records, checkpoint, takeMessages, attachStop) {
295
+ const r = router();
296
+ r.restore(checkpoint);
297
+ const messages = [];
298
+ const stops = [];
299
+ if (attachStop)
300
+ r.on("stop", (record) => stops.push(record.seqNum));
301
+ for (const record of records) {
302
+ if (checkpoint.resumeFrom !== undefined && record.seqNum <= checkpoint.resumeFrom)
303
+ continue;
304
+ r.ingest(record);
305
+ }
306
+ for (let i = 0; i < takeMessages; i++) {
307
+ const head = r.peek("messages");
308
+ if (!head)
309
+ break;
310
+ void r.next("messages", { timeoutMs: 0 });
311
+ messages.push(head.seqNum);
312
+ }
313
+ return { messages, stops, checkpoint: r.checkpoint() };
314
+ }
315
+ (0, vitest_1.it)("delivers every message exactly once and applies no stop twice", () => {
316
+ const cases = interleavings(4);
317
+ (0, vitest_1.expect)(cases.length).toBe(256);
318
+ for (const kinds of cases) {
319
+ const records = kinds.map((kind, index) => rec(index, kind));
320
+ const messageSeqs = records
321
+ .filter((record) => record.data.kind === "message")
322
+ .map((record) => record.seqNum);
323
+ for (let crashAfter = 0; crashAfter <= kinds.length; crashAfter++) {
324
+ const first = runBoot(records, {}, crashAfter, true);
325
+ const second = runBoot(records, first.checkpoint, kinds.length, true);
326
+ const delivered = [...first.messages, ...second.messages];
327
+ (0, vitest_1.expect)(delivered, `messages for [${kinds.join(",")}] crashAfter=${crashAfter}`).toEqual(messageSeqs);
328
+ const appliedTwice = first.stops.filter((seq) => second.stops.includes(seq));
329
+ (0, vitest_1.expect)(appliedTwice, `stops applied twice for [${kinds.join(",")}] crashAfter=${crashAfter}`).toEqual([]);
330
+ }
331
+ }
332
+ });
333
+ });
334
+ (0, vitest_1.describe)("SessionChannelRouter: observe", () => {
335
+ (0, vitest_1.it)("notifies without consuming, so the record still queues and holds the floor", () => {
336
+ const r = router();
337
+ const seen = [];
338
+ r.observe("messages", (record) => seen.push(record.seqNum));
339
+ r.ingest(rec(0, "message"));
340
+ (0, vitest_1.expect)(seen).toEqual([0]);
341
+ (0, vitest_1.expect)(r.hasPending("messages")).toBe(true);
342
+ (0, vitest_1.expect)(r.resumeFloor()).toBeUndefined();
343
+ });
344
+ (0, vitest_1.it)("does not satisfy a queue route's handler delivery", () => {
345
+ const r = router();
346
+ const observed = [];
347
+ const handled = [];
348
+ r.observe("messages", (record) => observed.push(record.seqNum));
349
+ r.ingest(rec(0, "message"));
350
+ (0, vitest_1.expect)(handled).toEqual([]);
351
+ r.on("messages", (record) => handled.push(record.seqNum));
352
+ (0, vitest_1.expect)(handled).toEqual([0]);
353
+ (0, vitest_1.expect)(observed).toEqual([0]);
354
+ });
355
+ (0, vitest_1.it)("rejects an at-arrival route, so a stop with only an observer is still discarded", () => {
356
+ const r = router();
357
+ (0, vitest_1.expect)(() => r.observe("stop", () => { })).toThrow(/at-arrival/);
358
+ });
359
+ (0, vitest_1.it)("does not re-offer records that were already queued when it attached", () => {
360
+ const r = router();
361
+ r.ingest(rec(0, "message"));
362
+ const seen = [];
363
+ r.observe("messages", (record) => seen.push(record.seqNum));
364
+ (0, vitest_1.expect)(seen).toEqual([]);
365
+ r.ingest(rec(1, "message"));
366
+ (0, vitest_1.expect)(seen).toEqual([1]);
367
+ });
368
+ (0, vitest_1.it)("stops notifying after off()", () => {
369
+ const r = router();
370
+ const seen = [];
371
+ const sub = r.observe("messages", (record) => seen.push(record.seqNum));
372
+ r.ingest(rec(0, "message"));
373
+ sub.off();
374
+ r.ingest(rec(1, "message"));
375
+ (0, vitest_1.expect)(seen).toEqual([0]);
376
+ });
377
+ });
378
+ (0, vitest_1.describe)("SessionChannelRouter: take", () => {
379
+ (0, vitest_1.it)("removes one queued record by sequence and releases the floor", () => {
380
+ const r = router();
381
+ r.ingest(rec(0, "message"));
382
+ r.ingest(rec(1, "message"));
383
+ (0, vitest_1.expect)(r.take("messages", 0)?.seqNum).toBe(0);
384
+ (0, vitest_1.expect)(r.pendingCount("messages")).toBe(1);
385
+ (0, vitest_1.expect)(r.peek("messages")?.seqNum).toBe(1);
386
+ });
387
+ (0, vitest_1.it)("reports false for a record that is no longer queued", () => {
388
+ const r = router();
389
+ r.ingest(rec(0, "message"));
390
+ (0, vitest_1.expect)(r.take("messages", 0)?.seqNum).toBe(0);
391
+ (0, vitest_1.expect)(r.take("messages", 0)).toBeUndefined();
392
+ (0, vitest_1.expect)(r.take("messages", 99)).toBeUndefined();
393
+ });
394
+ (0, vitest_1.it)("leaves an untaken observed record to be delivered as normal", async () => {
395
+ const r = router();
396
+ r.observe("messages", () => { });
397
+ r.ingest(rec(0, "message"));
398
+ r.ingest(rec(1, "message"));
399
+ r.take("messages", 0);
400
+ const next = await r.next("messages", { timeoutMs: 0 });
401
+ (0, vitest_1.expect)(next?.seqNum).toBe(1);
402
+ });
403
+ });
404
+ (0, vitest_1.describe)("SessionChannelRouter: clearRoute guard", () => {
405
+ (0, vitest_1.it)("refuses to clear a replayable route", () => {
406
+ const r = router();
407
+ r.ingest(rec(0, "message"));
408
+ (0, vitest_1.expect)(() => r.clearRoute("messages")).toThrow(/replayable/);
409
+ (0, vitest_1.expect)(r.hasPending("messages")).toBe(true);
410
+ });
411
+ (0, vitest_1.it)("still clears a non-replayable route", () => {
412
+ const r = router();
413
+ r.ingest(rec(0, "handover"));
414
+ (0, vitest_1.expect)(r.hasPending("handover")).toBe(true);
415
+ r.clearRoute("handover");
416
+ (0, vitest_1.expect)(r.hasPending("handover")).toBe(false);
417
+ });
418
+ });
419
+ (0, vitest_1.describe)("SessionChannelRouter: observe versus a waiting consumer", () => {
420
+ (0, vitest_1.it)("notifies the observer even when a parked puller takes the record", async () => {
421
+ const r = router();
422
+ const seen = [];
423
+ r.observe("messages", (record) => seen.push(record.seqNum));
424
+ const pull = r.next("messages");
425
+ r.ingest(rec(0, "message"));
426
+ const taken = await pull;
427
+ (0, vitest_1.expect)(seen).toEqual([0]);
428
+ (0, vitest_1.expect)(taken?.seqNum).toBe(0);
429
+ (0, vitest_1.expect)(r.hasPending("messages")).toBe(false);
430
+ });
431
+ (0, vitest_1.it)("reports a failed take for a record a puller already consumed", async () => {
432
+ const r = router();
433
+ const seen = [];
434
+ r.observe("messages", (record) => seen.push(record.seqNum));
435
+ const pull = r.next("messages");
436
+ r.ingest(rec(0, "message"));
437
+ await pull;
438
+ (0, vitest_1.expect)(seen).toEqual([0]);
439
+ (0, vitest_1.expect)(r.take("messages", 0)).toBeUndefined();
440
+ });
441
+ });
442
+ (0, vitest_1.describe)("SessionChannelRouter: untake", () => {
443
+ (0, vitest_1.it)("puts a claimed record back in sequence order", async () => {
444
+ const r = router();
445
+ r.ingest(rec(0, "message"));
446
+ r.ingest(rec(2, "message"));
447
+ const taken = r.take("messages", 0);
448
+ (0, vitest_1.expect)(r.peek("messages")?.seqNum).toBe(2);
449
+ r.untake("messages", taken);
450
+ (0, vitest_1.expect)(r.pendingCount("messages")).toBe(2);
451
+ (0, vitest_1.expect)(r.peek("messages")?.seqNum).toBe(0);
452
+ (0, vitest_1.expect)(r.resumeFloor()).toBeUndefined();
453
+ });
454
+ (0, vitest_1.it)("is idempotent, so a double return cannot duplicate a record", () => {
455
+ const r = router();
456
+ r.ingest(rec(0, "message"));
457
+ const taken = r.take("messages", 0);
458
+ r.untake("messages", taken);
459
+ r.untake("messages", taken);
460
+ (0, vitest_1.expect)(r.pendingCount("messages")).toBe(1);
461
+ });
462
+ });
463
+ //# sourceMappingURL=router.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.test.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/router.test.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,19 @@ import { InputStreamOncePromise, InputStreamTimeoutError } from "../inputStreams
9
9
  export { InputStreamOncePromise, InputStreamTimeoutError };
10
10
  export type { InputStreamOnceResult };
11
11
  export type SessionChannelIO = "out" | "in";
12
+ /**
13
+ * One durable Session channel record.
14
+ *
15
+ * `id` is the append's stable idempotency key. `seqNum` is the record's
16
+ * monotonic S2 sequence within the Session channel. Both stay stable when
17
+ * the same record is delivered again after a reconnect.
18
+ */
19
+ export type SessionStreamRecord<T = unknown> = Readonly<{
20
+ id: string;
21
+ seqNum: number;
22
+ data: T;
23
+ }>;
24
+ export type SessionStreamRecordPredicate = (record: SessionStreamRecord) => boolean;
12
25
  /**
13
26
  * Manager for Session channel reads: a session-scoped parallel to
14
27
  * {@link InputStreamManager} keyed on `(sessionId, io)` instead of
@@ -29,19 +42,39 @@ export interface SessionStreamManager {
29
42
  on(sessionId: string, io: SessionChannelIO, handler: (data: unknown) => void | boolean | Promise<void>): {
30
43
  off: () => void;
31
44
  };
45
+ /**
46
+ * Register a handler that receives the full record, including its sequence
47
+ * number. Same consume semantics as {@link on}.
48
+ */
49
+ onRecord?(sessionId: string, io: SessionChannelIO, handler: (record: SessionStreamRecord) => void | boolean | Promise<void>): {
50
+ off: () => void;
51
+ };
32
52
  /** Wait for the next record on the given channel (buffered or live). */
33
53
  once(sessionId: string, io: SessionChannelIO, options?: InputStreamOnceOptions): InputStreamOncePromise<unknown>;
54
+ /** Wait for and consume the next record, including its durable metadata. */
55
+ onceRecord?(sessionId: string, io: SessionChannelIO, options?: InputStreamOnceOptions): InputStreamOncePromise<SessionStreamRecord>;
56
+ /**
57
+ * Wait for and consume the next record accepted by `predicate`.
58
+ * Earlier unmatched records stay buffered and block consumption so the
59
+ * committed cursor never advances past them.
60
+ */
61
+ onceRecordWhere?(sessionId: string, io: SessionChannelIO, predicate: SessionStreamRecordPredicate, options?: InputStreamOnceOptions): InputStreamOncePromise<SessionStreamRecord>;
34
62
  /** Non-blocking peek at the head of the channel buffer. */
35
63
  peek(sessionId: string, io: SessionChannelIO): unknown | undefined;
64
+ /** Non-blocking peek at the head record, including its durable metadata. */
65
+ peekRecord?(sessionId: string, io: SessionChannelIO): SessionStreamRecord | undefined;
36
66
  /** Last S2 sequence number seen on the given channel. */
37
67
  lastSeqNum(sessionId: string, io: SessionChannelIO): number | undefined;
38
68
  /** Advance the last-seen sequence number (prevents SSE replay after `.wait` resume). */
39
69
  setLastSeqNum(sessionId: string, io: SessionChannelIO, seqNum: number): void;
70
+ /** Consume one exact record delivered through the waitpoint path. */
71
+ consumeRecord?(sessionId: string, io: SessionChannelIO, seqNum: number): void;
40
72
  /**
41
- * Highest sequence number that has been *consumed* on the channel —
42
- * delivered to a `once()` waiter or shifted off the buffer into one.
43
- * Distinct from {@link lastSeqNum}, which advances on every received
44
- * record regardless of whether anything consumed it. Used by
73
+ * Highest sequence number that is safe to persist as consumed. When a later
74
+ * record is handled while an earlier record remains unconsumed, this stays
75
+ * behind the earliest unconsumed record. Distinct from {@link lastSeqNum},
76
+ * which advances on every received record regardless of whether anything
77
+ * consumed it. Used by
45
78
  * `chat.agent` to persist the `.in` resume cursor on each
46
79
  * `turn-complete` control record so the next worker boot can resume
47
80
  * the channel from this point without replaying processed messages.
@@ -50,7 +83,8 @@ export interface SessionStreamManager {
50
83
  /**
51
84
  * Seed the committed-consume cursor at worker boot — e.g. from the
52
85
  * `session-in-event-id` header on the latest `turn-complete` on
53
- * `.out`. Monotonic: only ever advances forward, never backwards.
86
+ * `.out`. Monotonic: only ever advances forward, never backwards. Existing
87
+ * unconsumed records still constrain {@link lastDispatchedSeqNum}.
54
88
  */
55
89
  setLastDispatchedSeqNum(sessionId: string, io: SessionChannelIO, seqNum: number): void;
56
90
  /**
@@ -64,8 +98,10 @@ export interface SessionStreamManager {
64
98
  setMinTimestamp(sessionId: string, io: SessionChannelIO, minTimestamp: number | undefined): void;
65
99
  /** Remove and discard the first buffered record. Returns true if one was removed. */
66
100
  shiftBuffer(sessionId: string, io: SessionChannelIO): boolean;
67
- /** Abort the SSE tail and clear the buffer. Called before `.wait` suspends. */
101
+ /** Abort the SSE tail while preserving buffered records. Called before `.wait` suspends. */
68
102
  disconnectStream(sessionId: string, io: SessionChannelIO): void;
103
+ /** Re-open a channel closed by {@link disconnectStream}, registering nothing. */
104
+ reconnectStream?(sessionId: string, io: SessionChannelIO): void;
69
105
  /** Clear all `.on` handlers; abort tails without pending once-waiters. */
70
106
  clearHandlers(): void;
71
107
  /** Reset state between task executions. */
@@ -35,6 +35,17 @@ export declare const SESSION_STATE_LAST_EVENT_ID_HEADER: "last-event-id";
35
35
  * fresh chat triggered via the wire payload).
36
36
  */
37
37
  export declare const SESSION_IN_EVENT_ID_HEADER: "session-in-event-id";
38
+ /**
39
+ * Sibling of {@link SESSION_IN_EVENT_ID_HEADER}: the highest `.in` sequence this
40
+ * run had actually consumed at the turn boundary, unclamped.
41
+ *
42
+ * The resume cursor is held back behind records still waiting to be handled, so
43
+ * resuming from it necessarily re-delivers records that WERE handled. A message
44
+ * re-delivered that way is the point. A control record re-delivered that way is
45
+ * a bug: it applies a second time to whatever turn is live on the new run. On
46
+ * boot this bound tells the run which control records it has already seen.
47
+ */
48
+ export declare const SESSION_IN_CONSUMED_ID_HEADER: "session-in-consumed-id";
38
49
  export declare const TRIGGER_CONTROL_SUBTYPE: {
39
50
  readonly TURN_COMPLETE: "turn-complete";
40
51
  readonly UPGRADE_REQUIRED: "upgrade-required";
@@ -20,7 +20,7 @@
20
20
  * customer-facing contract.
21
21
  */
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.TRIGGER_CONTROL_SUBTYPE = exports.SESSION_IN_EVENT_ID_HEADER = exports.SESSION_STATE_LAST_EVENT_ID_HEADER = exports.PUBLIC_ACCESS_TOKEN_HEADER = exports.TRIGGER_CONTROL_HEADER = void 0;
23
+ exports.TRIGGER_CONTROL_SUBTYPE = exports.SESSION_IN_CONSUMED_ID_HEADER = exports.SESSION_IN_EVENT_ID_HEADER = exports.SESSION_STATE_LAST_EVENT_ID_HEADER = exports.PUBLIC_ACCESS_TOKEN_HEADER = exports.TRIGGER_CONTROL_HEADER = void 0;
24
24
  exports.headerValue = headerValue;
25
25
  exports.controlSubtype = controlSubtype;
26
26
  exports.isS2CommandRecord = isS2CommandRecord;
@@ -41,6 +41,17 @@ exports.SESSION_STATE_LAST_EVENT_ID_HEADER = "last-event-id";
41
41
  * fresh chat triggered via the wire payload).
42
42
  */
43
43
  exports.SESSION_IN_EVENT_ID_HEADER = "session-in-event-id";
44
+ /**
45
+ * Sibling of {@link SESSION_IN_EVENT_ID_HEADER}: the highest `.in` sequence this
46
+ * run had actually consumed at the turn boundary, unclamped.
47
+ *
48
+ * The resume cursor is held back behind records still waiting to be handled, so
49
+ * resuming from it necessarily re-delivers records that WERE handled. A message
50
+ * re-delivered that way is the point. A control record re-delivered that way is
51
+ * a bug: it applies a second time to whatever turn is live on the new run. On
52
+ * boot this bound tells the run which control records it has already seen.
53
+ */
54
+ exports.SESSION_IN_CONSUMED_ID_HEADER = "session-in-consumed-id";
44
55
  exports.TRIGGER_CONTROL_SUBTYPE = {
45
56
  TURN_COMPLETE: "turn-complete",
46
57
  UPGRADE_REQUIRED: "upgrade-required",
@@ -1 +1 @@
1
- {"version":3,"file":"wireProtocol.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/wireProtocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;AAEH,2EAA2E;AAC9D,QAAA,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE,iFAAiF;AACpE,QAAA,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE,8EAA8E;AACjE,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;;;;GASG;AACU,QAAA,0BAA0B,GAAG,qBAA8B,CAAC;AAE5D,QAAA,uBAAuB,GAAG;IACrC,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAKX,mEAAmE;AACnE,qBACE,OAA6D,EAC7D,IAAY;IAEZ,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,wBACE,OAA6D;IAE7D,OAAO,WAAW,CAAC,OAAO,EAAE,QAAA,sBAAsB,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,2BACE,OAA6D;IAE7D,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"wireProtocol.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/wireProtocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;AAEH,2EAA2E;AAC9D,QAAA,sBAAsB,GAAG,iBAA0B,CAAC;AAEjE,iFAAiF;AACpE,QAAA,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE,8EAA8E;AACjE,QAAA,kCAAkC,GAAG,eAAwB,CAAC;AAE3E;;;;;;;;;GASG;AACU,QAAA,0BAA0B,GAAG,qBAA8B,CAAC;AAEzE;;;;;;;;;GASG;AACU,QAAA,6BAA6B,GAAG,wBAAiC,CAAC;AAElE,QAAA,uBAAuB,GAAG;IACrC,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAKX,mEAAmE;AACnE,qBACE,OAA6D,EAC7D,IAAY;IAEZ,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,wBACE,OAA6D;IAE7D,OAAO,WAAW,CAAC,OAAO,EAAE,QAAA,sBAAsB,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,2BACE,OAA6D;IAE7D,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAClC,CAAC"}