@trigger.dev/core 4.4.6 → 4.5.0-rc.1

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 (345) hide show
  1. package/dist/commonjs/v3/apiClient/errors.d.ts +5 -0
  2. package/dist/commonjs/v3/apiClient/errors.js +12 -0
  3. package/dist/commonjs/v3/apiClient/errors.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/index.d.ts +208 -1
  5. package/dist/commonjs/v3/apiClient/index.js +204 -0
  6. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  7. package/dist/commonjs/v3/apiClient/runStream.d.ts +44 -0
  8. package/dist/commonjs/v3/apiClient/runStream.js +156 -22
  9. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  10. package/dist/commonjs/v3/apiClient/runStream.test.d.ts +1 -0
  11. package/dist/commonjs/v3/apiClient/runStream.test.js +511 -0
  12. package/dist/commonjs/v3/apiClient/runStream.test.js.map +1 -0
  13. package/dist/commonjs/v3/apiClient/types.d.ts +2 -0
  14. package/dist/commonjs/v3/auth/environment.d.ts +62 -0
  15. package/dist/commonjs/v3/auth/environment.js +20 -0
  16. package/dist/commonjs/v3/auth/environment.js.map +1 -0
  17. package/dist/commonjs/v3/errors.d.ts +7 -0
  18. package/dist/commonjs/v3/errors.js +22 -2
  19. package/dist/commonjs/v3/errors.js.map +1 -1
  20. package/dist/commonjs/v3/index.d.ts +2 -1
  21. package/dist/commonjs/v3/index.js +1 -0
  22. package/dist/commonjs/v3/index.js.map +1 -1
  23. package/dist/commonjs/v3/inputStreams/index.d.ts +3 -0
  24. package/dist/commonjs/v3/inputStreams/index.js +9 -0
  25. package/dist/commonjs/v3/inputStreams/index.js.map +1 -1
  26. package/dist/commonjs/v3/inputStreams/manager.d.ts +14 -0
  27. package/dist/commonjs/v3/inputStreams/manager.js +116 -4
  28. package/dist/commonjs/v3/inputStreams/manager.js.map +1 -1
  29. package/dist/commonjs/v3/inputStreams/noopManager.d.ts +3 -0
  30. package/dist/commonjs/v3/inputStreams/noopManager.js +3 -0
  31. package/dist/commonjs/v3/inputStreams/noopManager.js.map +1 -1
  32. package/dist/commonjs/v3/inputStreams/types.d.ts +19 -0
  33. package/dist/commonjs/v3/locals/manager.js.map +1 -1
  34. package/dist/commonjs/v3/locals/types.d.ts +18 -7
  35. package/dist/commonjs/v3/realtime-streams-api.d.ts +3 -0
  36. package/dist/commonjs/v3/realtime-streams-api.js +8 -1
  37. package/dist/commonjs/v3/realtime-streams-api.js.map +1 -1
  38. package/dist/commonjs/v3/realtimeStreams/index.d.ts +3 -0
  39. package/dist/commonjs/v3/realtimeStreams/index.js +11 -1
  40. package/dist/commonjs/v3/realtimeStreams/index.js.map +1 -1
  41. package/dist/commonjs/v3/realtimeStreams/manager.d.ts +11 -0
  42. package/dist/commonjs/v3/realtimeStreams/manager.js +58 -2
  43. package/dist/commonjs/v3/realtimeStreams/manager.js.map +1 -1
  44. package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +1 -0
  45. package/dist/commonjs/v3/realtimeStreams/manager.test.js +92 -0
  46. package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +1 -0
  47. package/dist/commonjs/v3/realtimeStreams/noopManager.js +1 -1
  48. package/dist/commonjs/v3/realtimeStreams/noopManager.js.map +1 -1
  49. package/dist/commonjs/v3/realtimeStreams/sessionStreamInstance.d.ts +41 -0
  50. package/dist/commonjs/v3/realtimeStreams/sessionStreamInstance.js +77 -0
  51. package/dist/commonjs/v3/realtimeStreams/sessionStreamInstance.js.map +1 -0
  52. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +45 -0
  53. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +83 -0
  54. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -0
  55. package/dist/commonjs/v3/realtimeStreams/streamInstance.d.ts +14 -2
  56. package/dist/commonjs/v3/realtimeStreams/streamInstance.js +5 -2
  57. package/dist/commonjs/v3/realtimeStreams/streamInstance.js.map +1 -1
  58. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.d.ts +2 -2
  59. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js +2 -1
  60. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js.map +1 -1
  61. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.d.ts +23 -2
  62. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js +57 -4
  63. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js.map +1 -1
  64. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +1 -0
  65. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +68 -0
  66. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +1 -0
  67. package/dist/commonjs/v3/realtimeStreams/types.d.ts +42 -3
  68. package/dist/commonjs/v3/resource-catalog/catalog.d.ts +4 -1
  69. package/dist/commonjs/v3/resource-catalog/index.d.ts +4 -1
  70. package/dist/commonjs/v3/resource-catalog/index.js +9 -0
  71. package/dist/commonjs/v3/resource-catalog/index.js.map +1 -1
  72. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.d.ts +4 -1
  73. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js +9 -0
  74. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
  75. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.d.ts +18 -1
  76. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js +74 -5
  77. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
  78. package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +2 -0
  79. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +14 -0
  80. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +1 -0
  81. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +7 -0
  82. package/dist/commonjs/v3/schemas/api.d.ts +333 -0
  83. package/dist/commonjs/v3/schemas/api.js +82 -9
  84. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  85. package/dist/commonjs/v3/schemas/build.d.ts +240 -0
  86. package/dist/commonjs/v3/schemas/build.js +3 -0
  87. package/dist/commonjs/v3/schemas/build.js.map +1 -1
  88. package/dist/commonjs/v3/schemas/checkpoints.d.ts +7 -0
  89. package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +1 -0
  90. package/dist/commonjs/v3/schemas/idempotencyKey.test.js +143 -0
  91. package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +1 -0
  92. package/dist/commonjs/v3/schemas/messages.d.ts +160 -0
  93. package/dist/commonjs/v3/schemas/resources.d.ts +40 -0
  94. package/dist/commonjs/v3/schemas/resources.js +5 -1
  95. package/dist/commonjs/v3/schemas/resources.js.map +1 -1
  96. package/dist/commonjs/v3/schemas/runEngine.d.ts +12 -0
  97. package/dist/commonjs/v3/schemas/runEngine.js +3 -1
  98. package/dist/commonjs/v3/schemas/runEngine.js.map +1 -1
  99. package/dist/commonjs/v3/schemas/schemas.d.ts +59 -0
  100. package/dist/commonjs/v3/schemas/schemas.js +21 -1
  101. package/dist/commonjs/v3/schemas/schemas.js.map +1 -1
  102. package/dist/commonjs/v3/semanticInternalAttributes.d.ts +1 -0
  103. package/dist/commonjs/v3/semanticInternalAttributes.js +1 -0
  104. package/dist/commonjs/v3/semanticInternalAttributes.js.map +1 -1
  105. package/dist/commonjs/v3/session-streams-api.d.ts +5 -0
  106. package/dist/commonjs/v3/session-streams-api.js +25 -0
  107. package/dist/commonjs/v3/session-streams-api.js.map +1 -0
  108. package/dist/commonjs/v3/sessionStreams/chatSnapshot.d.ts +53 -0
  109. package/dist/commonjs/v3/sessionStreams/chatSnapshot.js +43 -0
  110. package/dist/commonjs/v3/sessionStreams/chatSnapshot.js.map +1 -0
  111. package/dist/commonjs/v3/sessionStreams/index.d.ts +24 -0
  112. package/dist/commonjs/v3/sessionStreams/index.js +64 -0
  113. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -0
  114. package/dist/commonjs/v3/sessionStreams/manager.d.ts +54 -0
  115. package/dist/commonjs/v3/sessionStreams/manager.js +511 -0
  116. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -0
  117. package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +1 -0
  118. package/dist/commonjs/v3/sessionStreams/manager.test.js +123 -0
  119. package/dist/commonjs/v3/sessionStreams/manager.test.js.map +1 -0
  120. package/dist/commonjs/v3/sessionStreams/noopManager.d.ts +20 -0
  121. package/dist/commonjs/v3/sessionStreams/noopManager.js +35 -0
  122. package/dist/commonjs/v3/sessionStreams/noopManager.js.map +1 -0
  123. package/dist/commonjs/v3/sessionStreams/types.d.ts +65 -0
  124. package/dist/commonjs/v3/sessionStreams/types.js +7 -0
  125. package/dist/commonjs/v3/sessionStreams/types.js.map +1 -0
  126. package/dist/commonjs/v3/sessionStreams/wireProtocol.d.ts +65 -0
  127. package/dist/commonjs/v3/sessionStreams/wireProtocol.js +72 -0
  128. package/dist/commonjs/v3/sessionStreams/wireProtocol.js.map +1 -0
  129. package/dist/commonjs/v3/taskContext/index.d.ts +4 -0
  130. package/dist/commonjs/v3/taskContext/index.js +18 -0
  131. package/dist/commonjs/v3/taskContext/index.js.map +1 -1
  132. package/dist/commonjs/v3/taskContext/index.test.d.ts +1 -0
  133. package/dist/commonjs/v3/taskContext/index.test.js +73 -0
  134. package/dist/commonjs/v3/taskContext/index.test.js.map +1 -0
  135. package/dist/commonjs/v3/taskContext/otelProcessors.js +11 -0
  136. package/dist/commonjs/v3/taskContext/otelProcessors.js.map +1 -1
  137. package/dist/commonjs/v3/test/index.d.ts +5 -0
  138. package/dist/commonjs/v3/test/index.js +14 -0
  139. package/dist/commonjs/v3/test/index.js.map +1 -0
  140. package/dist/commonjs/v3/test/mock-task-context.d.ts +123 -0
  141. package/dist/commonjs/v3/test/mock-task-context.js +193 -0
  142. package/dist/commonjs/v3/test/mock-task-context.js.map +1 -0
  143. package/dist/commonjs/v3/test/test-input-stream-manager.d.ts +46 -0
  144. package/dist/commonjs/v3/test/test-input-stream-manager.js +192 -0
  145. package/dist/commonjs/v3/test/test-input-stream-manager.js.map +1 -0
  146. package/dist/commonjs/v3/test/test-realtime-streams-manager.d.ts +40 -0
  147. package/dist/commonjs/v3/test/test-realtime-streams-manager.js +140 -0
  148. package/dist/commonjs/v3/test/test-realtime-streams-manager.js.map +1 -0
  149. package/dist/commonjs/v3/test/test-run-metadata-manager.d.ts +31 -0
  150. package/dist/commonjs/v3/test/test-run-metadata-manager.js +86 -0
  151. package/dist/commonjs/v3/test/test-run-metadata-manager.js.map +1 -0
  152. package/dist/commonjs/v3/test/test-session-stream-manager.d.ts +60 -0
  153. package/dist/commonjs/v3/test/test-session-stream-manager.js +247 -0
  154. package/dist/commonjs/v3/test/test-session-stream-manager.js.map +1 -0
  155. package/dist/commonjs/v3/types/tasks.d.ts +35 -0
  156. package/dist/commonjs/v3/utils/gitBranch.d.ts +2 -0
  157. package/dist/commonjs/v3/utils/gitBranch.js +46 -0
  158. package/dist/commonjs/v3/utils/gitBranch.js.map +1 -0
  159. package/dist/commonjs/v3/utils/globals.d.ts +2 -0
  160. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  161. package/dist/commonjs/v3/utils/reconnectBackoff.d.ts +20 -0
  162. package/dist/commonjs/v3/utils/reconnectBackoff.js +29 -0
  163. package/dist/commonjs/v3/utils/reconnectBackoff.js.map +1 -0
  164. package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +1 -0
  165. package/dist/commonjs/v3/utils/reconnectBackoff.test.js +76 -0
  166. package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +1 -0
  167. package/dist/commonjs/v3/workers/index.d.ts +2 -1
  168. package/dist/commonjs/v3/workers/index.js +4 -1
  169. package/dist/commonjs/v3/workers/index.js.map +1 -1
  170. package/dist/commonjs/v3/workers/taskExecutor.js +1 -0
  171. package/dist/commonjs/v3/workers/taskExecutor.js.map +1 -1
  172. package/dist/commonjs/version.js +1 -1
  173. package/dist/esm/v3/apiClient/errors.d.ts +5 -0
  174. package/dist/esm/v3/apiClient/errors.js +11 -0
  175. package/dist/esm/v3/apiClient/errors.js.map +1 -1
  176. package/dist/esm/v3/apiClient/index.d.ts +208 -1
  177. package/dist/esm/v3/apiClient/index.js +205 -1
  178. package/dist/esm/v3/apiClient/index.js.map +1 -1
  179. package/dist/esm/v3/apiClient/runStream.d.ts +44 -0
  180. package/dist/esm/v3/apiClient/runStream.js +157 -23
  181. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  182. package/dist/esm/v3/apiClient/runStream.test.d.ts +1 -0
  183. package/dist/esm/v3/apiClient/runStream.test.js +509 -0
  184. package/dist/esm/v3/apiClient/runStream.test.js.map +1 -0
  185. package/dist/esm/v3/apiClient/types.d.ts +2 -0
  186. package/dist/esm/v3/auth/environment.d.ts +62 -0
  187. package/dist/esm/v3/auth/environment.js +19 -0
  188. package/dist/esm/v3/auth/environment.js.map +1 -0
  189. package/dist/esm/v3/errors.d.ts +7 -0
  190. package/dist/esm/v3/errors.js +19 -1
  191. package/dist/esm/v3/errors.js.map +1 -1
  192. package/dist/esm/v3/index.d.ts +2 -1
  193. package/dist/esm/v3/index.js +1 -0
  194. package/dist/esm/v3/index.js.map +1 -1
  195. package/dist/esm/v3/inputStreams/index.d.ts +3 -0
  196. package/dist/esm/v3/inputStreams/index.js +9 -0
  197. package/dist/esm/v3/inputStreams/index.js.map +1 -1
  198. package/dist/esm/v3/inputStreams/manager.d.ts +14 -0
  199. package/dist/esm/v3/inputStreams/manager.js +116 -4
  200. package/dist/esm/v3/inputStreams/manager.js.map +1 -1
  201. package/dist/esm/v3/inputStreams/noopManager.d.ts +3 -0
  202. package/dist/esm/v3/inputStreams/noopManager.js +3 -0
  203. package/dist/esm/v3/inputStreams/noopManager.js.map +1 -1
  204. package/dist/esm/v3/inputStreams/types.d.ts +19 -0
  205. package/dist/esm/v3/locals/manager.js.map +1 -1
  206. package/dist/esm/v3/locals/types.d.ts +18 -7
  207. package/dist/esm/v3/realtime-streams-api.d.ts +3 -0
  208. package/dist/esm/v3/realtime-streams-api.js +2 -0
  209. package/dist/esm/v3/realtime-streams-api.js.map +1 -1
  210. package/dist/esm/v3/realtimeStreams/index.d.ts +3 -0
  211. package/dist/esm/v3/realtimeStreams/index.js +5 -0
  212. package/dist/esm/v3/realtimeStreams/index.js.map +1 -1
  213. package/dist/esm/v3/realtimeStreams/manager.d.ts +11 -0
  214. package/dist/esm/v3/realtimeStreams/manager.js +58 -2
  215. package/dist/esm/v3/realtimeStreams/manager.js.map +1 -1
  216. package/dist/esm/v3/realtimeStreams/manager.test.d.ts +1 -0
  217. package/dist/esm/v3/realtimeStreams/manager.test.js +90 -0
  218. package/dist/esm/v3/realtimeStreams/manager.test.js.map +1 -0
  219. package/dist/esm/v3/realtimeStreams/noopManager.js +1 -1
  220. package/dist/esm/v3/realtimeStreams/noopManager.js.map +1 -1
  221. package/dist/esm/v3/realtimeStreams/sessionStreamInstance.d.ts +41 -0
  222. package/dist/esm/v3/realtimeStreams/sessionStreamInstance.js +73 -0
  223. package/dist/esm/v3/realtimeStreams/sessionStreamInstance.js.map +1 -0
  224. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +45 -0
  225. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +77 -0
  226. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -0
  227. package/dist/esm/v3/realtimeStreams/streamInstance.d.ts +14 -2
  228. package/dist/esm/v3/realtimeStreams/streamInstance.js +5 -2
  229. package/dist/esm/v3/realtimeStreams/streamInstance.js.map +1 -1
  230. package/dist/esm/v3/realtimeStreams/streamsWriterV1.d.ts +2 -2
  231. package/dist/esm/v3/realtimeStreams/streamsWriterV1.js +2 -1
  232. package/dist/esm/v3/realtimeStreams/streamsWriterV1.js.map +1 -1
  233. package/dist/esm/v3/realtimeStreams/streamsWriterV2.d.ts +23 -2
  234. package/dist/esm/v3/realtimeStreams/streamsWriterV2.js +56 -4
  235. package/dist/esm/v3/realtimeStreams/streamsWriterV2.js.map +1 -1
  236. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +1 -0
  237. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +66 -0
  238. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +1 -0
  239. package/dist/esm/v3/realtimeStreams/types.d.ts +42 -3
  240. package/dist/esm/v3/resource-catalog/catalog.d.ts +4 -1
  241. package/dist/esm/v3/resource-catalog/index.d.ts +4 -1
  242. package/dist/esm/v3/resource-catalog/index.js +9 -0
  243. package/dist/esm/v3/resource-catalog/index.js.map +1 -1
  244. package/dist/esm/v3/resource-catalog/noopResourceCatalog.d.ts +4 -1
  245. package/dist/esm/v3/resource-catalog/noopResourceCatalog.js +9 -0
  246. package/dist/esm/v3/resource-catalog/noopResourceCatalog.js.map +1 -1
  247. package/dist/esm/v3/resource-catalog/standardResourceCatalog.d.ts +18 -1
  248. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js +73 -4
  249. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js.map +1 -1
  250. package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +2 -0
  251. package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +14 -0
  252. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +1 -0
  253. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +7 -0
  254. package/dist/esm/v3/schemas/api.d.ts +333 -0
  255. package/dist/esm/v3/schemas/api.js +80 -7
  256. package/dist/esm/v3/schemas/api.js.map +1 -1
  257. package/dist/esm/v3/schemas/build.d.ts +240 -0
  258. package/dist/esm/v3/schemas/build.js +4 -1
  259. package/dist/esm/v3/schemas/build.js.map +1 -1
  260. package/dist/esm/v3/schemas/checkpoints.d.ts +7 -0
  261. package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +1 -0
  262. package/dist/esm/v3/schemas/idempotencyKey.test.js +141 -0
  263. package/dist/esm/v3/schemas/idempotencyKey.test.js.map +1 -0
  264. package/dist/esm/v3/schemas/messages.d.ts +160 -0
  265. package/dist/esm/v3/schemas/resources.d.ts +40 -0
  266. package/dist/esm/v3/schemas/resources.js +4 -0
  267. package/dist/esm/v3/schemas/resources.js.map +1 -1
  268. package/dist/esm/v3/schemas/runEngine.d.ts +12 -0
  269. package/dist/esm/v3/schemas/runEngine.js +2 -0
  270. package/dist/esm/v3/schemas/runEngine.js.map +1 -1
  271. package/dist/esm/v3/schemas/schemas.d.ts +59 -0
  272. package/dist/esm/v3/schemas/schemas.js +20 -0
  273. package/dist/esm/v3/schemas/schemas.js.map +1 -1
  274. package/dist/esm/v3/semanticInternalAttributes.d.ts +1 -0
  275. package/dist/esm/v3/semanticInternalAttributes.js +1 -0
  276. package/dist/esm/v3/semanticInternalAttributes.js.map +1 -1
  277. package/dist/esm/v3/session-streams-api.d.ts +5 -0
  278. package/dist/esm/v3/session-streams-api.js +8 -0
  279. package/dist/esm/v3/session-streams-api.js.map +1 -0
  280. package/dist/esm/v3/sessionStreams/chatSnapshot.d.ts +53 -0
  281. package/dist/esm/v3/sessionStreams/chatSnapshot.js +39 -0
  282. package/dist/esm/v3/sessionStreams/chatSnapshot.js.map +1 -0
  283. package/dist/esm/v3/sessionStreams/index.d.ts +24 -0
  284. package/dist/esm/v3/sessionStreams/index.js +60 -0
  285. package/dist/esm/v3/sessionStreams/index.js.map +1 -0
  286. package/dist/esm/v3/sessionStreams/manager.d.ts +54 -0
  287. package/dist/esm/v3/sessionStreams/manager.js +507 -0
  288. package/dist/esm/v3/sessionStreams/manager.js.map +1 -0
  289. package/dist/esm/v3/sessionStreams/manager.test.d.ts +1 -0
  290. package/dist/esm/v3/sessionStreams/manager.test.js +121 -0
  291. package/dist/esm/v3/sessionStreams/manager.test.js.map +1 -0
  292. package/dist/esm/v3/sessionStreams/noopManager.d.ts +20 -0
  293. package/dist/esm/v3/sessionStreams/noopManager.js +31 -0
  294. package/dist/esm/v3/sessionStreams/noopManager.js.map +1 -0
  295. package/dist/esm/v3/sessionStreams/types.d.ts +65 -0
  296. package/dist/esm/v3/sessionStreams/types.js +8 -0
  297. package/dist/esm/v3/sessionStreams/types.js.map +1 -0
  298. package/dist/esm/v3/sessionStreams/wireProtocol.d.ts +65 -0
  299. package/dist/esm/v3/sessionStreams/wireProtocol.js +66 -0
  300. package/dist/esm/v3/sessionStreams/wireProtocol.js.map +1 -0
  301. package/dist/esm/v3/taskContext/index.d.ts +4 -0
  302. package/dist/esm/v3/taskContext/index.js +18 -0
  303. package/dist/esm/v3/taskContext/index.js.map +1 -1
  304. package/dist/esm/v3/taskContext/index.test.d.ts +1 -0
  305. package/dist/esm/v3/taskContext/index.test.js +71 -0
  306. package/dist/esm/v3/taskContext/index.test.js.map +1 -0
  307. package/dist/esm/v3/taskContext/otelProcessors.js +11 -0
  308. package/dist/esm/v3/taskContext/otelProcessors.js.map +1 -1
  309. package/dist/esm/v3/test/index.d.ts +5 -0
  310. package/dist/esm/v3/test/index.js +6 -0
  311. package/dist/esm/v3/test/index.js.map +1 -0
  312. package/dist/esm/v3/test/mock-task-context.d.ts +123 -0
  313. package/dist/esm/v3/test/mock-task-context.js +190 -0
  314. package/dist/esm/v3/test/mock-task-context.js.map +1 -0
  315. package/dist/esm/v3/test/test-input-stream-manager.d.ts +46 -0
  316. package/dist/esm/v3/test/test-input-stream-manager.js +188 -0
  317. package/dist/esm/v3/test/test-input-stream-manager.js.map +1 -0
  318. package/dist/esm/v3/test/test-realtime-streams-manager.d.ts +40 -0
  319. package/dist/esm/v3/test/test-realtime-streams-manager.js +136 -0
  320. package/dist/esm/v3/test/test-realtime-streams-manager.js.map +1 -0
  321. package/dist/esm/v3/test/test-run-metadata-manager.d.ts +31 -0
  322. package/dist/esm/v3/test/test-run-metadata-manager.js +82 -0
  323. package/dist/esm/v3/test/test-run-metadata-manager.js.map +1 -0
  324. package/dist/esm/v3/test/test-session-stream-manager.d.ts +60 -0
  325. package/dist/esm/v3/test/test-session-stream-manager.js +243 -0
  326. package/dist/esm/v3/test/test-session-stream-manager.js.map +1 -0
  327. package/dist/esm/v3/types/tasks.d.ts +35 -0
  328. package/dist/esm/v3/utils/gitBranch.d.ts +2 -0
  329. package/dist/esm/v3/utils/gitBranch.js +42 -0
  330. package/dist/esm/v3/utils/gitBranch.js.map +1 -0
  331. package/dist/esm/v3/utils/globals.d.ts +2 -0
  332. package/dist/esm/v3/utils/globals.js.map +1 -1
  333. package/dist/esm/v3/utils/reconnectBackoff.d.ts +20 -0
  334. package/dist/esm/v3/utils/reconnectBackoff.js +25 -0
  335. package/dist/esm/v3/utils/reconnectBackoff.js.map +1 -0
  336. package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +1 -0
  337. package/dist/esm/v3/utils/reconnectBackoff.test.js +74 -0
  338. package/dist/esm/v3/utils/reconnectBackoff.test.js.map +1 -0
  339. package/dist/esm/v3/workers/index.d.ts +2 -1
  340. package/dist/esm/v3/workers/index.js +2 -1
  341. package/dist/esm/v3/workers/index.js.map +1 -1
  342. package/dist/esm/v3/workers/taskExecutor.js +2 -1
  343. package/dist/esm/v3/workers/taskExecutor.js.map +1 -1
  344. package/dist/esm/version.js +1 -1
  345. package/package.json +46 -1
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const manager_js_1 = require("./manager.js");
5
+ // Single-shot mock that mimics S2's long-poll: delivers `records` once via
6
+ // `onPart` on the first subscribe call, then keeps the returned async
7
+ // iterable OPEN until the abort signal fires. Real S2 keeps the SSE
8
+ // connection alive on a long-poll; the manager's `runTail` finally /
9
+ // reconnect path only fires when the connection actually closes. Returning
10
+ // an empty stream synchronously triggers a tight reconnect loop, so the
11
+ // mock parks indefinitely instead.
12
+ function singleShotApiClient(records) {
13
+ let delivered = false;
14
+ return {
15
+ async subscribeToSessionStream(_sessionIdOrExternalId, _io, options) {
16
+ if (!delivered) {
17
+ delivered = true;
18
+ for (const record of records) {
19
+ options?.onPart?.(record);
20
+ }
21
+ }
22
+ const signal = options?.signal;
23
+ return (async function* () {
24
+ if (signal?.aborted)
25
+ return;
26
+ await new Promise((resolve) => {
27
+ if (!signal) {
28
+ // No signal — block the stream forever; tests must
29
+ // explicitly call `disconnectStream` / `disconnect` to
30
+ // unblock.
31
+ return;
32
+ }
33
+ signal.addEventListener("abort", () => resolve(), { once: true });
34
+ });
35
+ })();
36
+ },
37
+ };
38
+ }
39
+ (0, vitest_1.describe)("StandardSessionStreamManager — minTimestamp filter", () => {
40
+ const sessionId = "session-1";
41
+ const io = "in";
42
+ (0, vitest_1.it)("dispatches records when no filter is set", async () => {
43
+ const records = [
44
+ { id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
45
+ { id: "1", chunk: { kind: "message", payload: { id: "u2" } }, timestamp: 2000 },
46
+ ];
47
+ const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
48
+ const first = await manager.once(sessionId, io);
49
+ (0, vitest_1.expect)(first).toEqual({ ok: true, output: { kind: "message", payload: { id: "u1" } } });
50
+ const second = await manager.once(sessionId, io);
51
+ (0, vitest_1.expect)(second).toEqual({ ok: true, output: { kind: "message", payload: { id: "u2" } } });
52
+ manager.disconnectStream(sessionId, io); // stop reconnect loop
53
+ manager.disconnect();
54
+ });
55
+ (0, vitest_1.it)("drops records whose timestamp is <= minTimestamp", async () => {
56
+ const records = [
57
+ { id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
58
+ { id: "1", chunk: { kind: "message", payload: { id: "u2" } }, timestamp: 2000 },
59
+ { id: "2", chunk: { kind: "message", payload: { id: "u3" } }, timestamp: 3000 },
60
+ ];
61
+ const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
62
+ // Cutoff at 2000 (inclusive: `<=` is dropped). Only u3 should pass.
63
+ manager.setMinTimestamp(sessionId, io, 2000);
64
+ const passed = await manager.once(sessionId, io, { timeoutMs: 200 });
65
+ (0, vitest_1.expect)(passed).toEqual({ ok: true, output: { kind: "message", payload: { id: "u3" } } });
66
+ manager.disconnectStream(sessionId, io);
67
+ manager.disconnect();
68
+ });
69
+ (0, vitest_1.it)("clears the filter when set to undefined", async () => {
70
+ const records = [
71
+ { id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
72
+ ];
73
+ const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
74
+ manager.setMinTimestamp(sessionId, io, 5000);
75
+ manager.setMinTimestamp(sessionId, io, undefined);
76
+ const passed = await manager.once(sessionId, io, { timeoutMs: 200 });
77
+ (0, vitest_1.expect)(passed).toEqual({ ok: true, output: { kind: "message", payload: { id: "u1" } } });
78
+ manager.disconnectStream(sessionId, io);
79
+ manager.disconnect();
80
+ });
81
+ (0, vitest_1.it)("filter is per-(sessionId, io) and doesn't bleed across streams", async () => {
82
+ const inApi = singleShotApiClient([
83
+ { id: "0", chunk: { kind: "in-record" }, timestamp: 1000 },
84
+ ]);
85
+ const manager = new manager_js_1.StandardSessionStreamManager(inApi, "http://localhost");
86
+ manager.setMinTimestamp(sessionId, "in", 5000);
87
+ // The "out" stream uses the same singleShotApiClient instance — its
88
+ // single-shot delivers the same fixture, but the filter doesn't apply
89
+ // to "out" so the record passes.
90
+ const outResult = await manager.once(sessionId, "out", { timeoutMs: 200 });
91
+ (0, vitest_1.expect)(outResult).toEqual({ ok: true, output: { kind: "in-record" } });
92
+ // The "in" stream is filtered (minTimestamp=5000, record ts=1000): the
93
+ // once() call should idle-timeout instead of resolving with the record.
94
+ // But the singleShot instance has already delivered to the "out" tail,
95
+ // so the "in" tail will get nothing on first connect anyway. Use a
96
+ // separate manager+api to keep the assertion crisp.
97
+ const inApi2 = singleShotApiClient([
98
+ { id: "0", chunk: { kind: "in-record-2" }, timestamp: 1000 },
99
+ ]);
100
+ const manager2 = new manager_js_1.StandardSessionStreamManager(inApi2, "http://localhost");
101
+ manager2.setMinTimestamp(sessionId, "in", 5000);
102
+ const inResult = await manager2.once(sessionId, "in", { timeoutMs: 100 });
103
+ (0, vitest_1.expect)(inResult.ok).toBe(false); // filter-dropped → idle timeout
104
+ manager.disconnectStream(sessionId, "in");
105
+ manager.disconnectStream(sessionId, "out");
106
+ manager.disconnect();
107
+ manager2.disconnectStream(sessionId, "in");
108
+ manager2.disconnect();
109
+ });
110
+ (0, vitest_1.it)("reset() clears all per-stream timestamp filters", async () => {
111
+ const records = [
112
+ { id: "0", chunk: { kind: "message", payload: { id: "u1" } }, timestamp: 1000 },
113
+ ];
114
+ const manager = new manager_js_1.StandardSessionStreamManager(singleShotApiClient(records), "http://localhost");
115
+ manager.setMinTimestamp(sessionId, io, 5000);
116
+ manager.reset();
117
+ const passed = await manager.once(sessionId, io, { timeoutMs: 200 });
118
+ (0, vitest_1.expect)(passed).toEqual({ ok: true, output: { kind: "message", payload: { id: "u1" } } });
119
+ manager.disconnectStream(sessionId, io);
120
+ manager.disconnect();
121
+ });
122
+ });
123
+ //# sourceMappingURL=manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/manager.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,6CAA4D;AAI5D,2EAA2E;AAC3E,sEAAsE;AACtE,oEAAoE;AACpE,qEAAqE;AACrE,2EAA2E;AAC3E,wEAAwE;AACxE,mCAAmC;AACnC,SAAS,mBAAmB,CAC1B,OAAiE;IAEjE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO;QACL,KAAK,CAAC,wBAAwB,CAC5B,sBAA8B,EAC9B,GAAiB,EACjB,OAA6E;YAE7E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,GAAG,IAAI,CAAC;gBACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,OAAO,EAAE,MAAM,EAAE,CAAC,MAA0B,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;YAC/B,OAAO,CAAC,KAAK,SAAS,CAAC;gBACrB,IAAI,MAAM,EAAE,OAAO;oBAAE,OAAO;gBAC5B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,mDAAmD;wBACnD,uDAAuD;wBACvD,WAAW;wBACX,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,EAA2E,CAAC;QAChF,CAAC;KACsB,CAAC;AAC5B,CAAC;AAED,IAAA,iBAAQ,EAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,MAAM,SAAS,GAAG,WAAW,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAa,CAAC;IAEzB,IAAA,WAAE,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAC/E,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAChF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,yCAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEnG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAExF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACjD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEzF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB;QAC/D,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAC/E,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAC/E,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAChF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,yCAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEnG,oEAAoE;QACpE,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEzF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAChF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,yCAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEnG,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEzF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,KAAK,GAAG,mBAAmB,CAAC;YAChC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC3D,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,yCAA4B,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAE5E,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/C,oEAAoE;QACpE,sEAAsE;QACtE,iCAAiC;QACjC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3E,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAEvE,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,mEAAmE;QACnE,oDAAoD;QACpD,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACjC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC7D,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,yCAA4B,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC9E,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1E,IAAA,eAAM,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC;QAEjE,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3C,QAAQ,CAAC,UAAU,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAChF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,yCAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEnG,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEzF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { InputStreamOnceOptions } from "../realtimeStreams/types.js";
2
+ import { InputStreamOncePromise } from "../inputStreams/types.js";
3
+ import { SessionChannelIO, SessionStreamManager } from "./types.js";
4
+ export declare class NoopSessionStreamManager implements SessionStreamManager {
5
+ on(_sessionId: string, _io: SessionChannelIO, _handler: (data: unknown) => void | Promise<void>): {
6
+ off: () => void;
7
+ };
8
+ once(_sessionId: string, _io: SessionChannelIO, _options?: InputStreamOnceOptions): InputStreamOncePromise<unknown>;
9
+ peek(_sessionId: string, _io: SessionChannelIO): unknown | undefined;
10
+ lastSeqNum(_sessionId: string, _io: SessionChannelIO): number | undefined;
11
+ setLastSeqNum(_sessionId: string, _io: SessionChannelIO, _seqNum: number): void;
12
+ lastDispatchedSeqNum(_sessionId: string, _io: SessionChannelIO): number | undefined;
13
+ setLastDispatchedSeqNum(_sessionId: string, _io: SessionChannelIO, _seqNum: number): void;
14
+ setMinTimestamp(_sessionId: string, _io: SessionChannelIO, _minTimestamp: number | undefined): void;
15
+ shiftBuffer(_sessionId: string, _io: SessionChannelIO): boolean;
16
+ disconnectStream(_sessionId: string, _io: SessionChannelIO): void;
17
+ clearHandlers(): void;
18
+ reset(): void;
19
+ disconnect(): void;
20
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoopSessionStreamManager = void 0;
4
+ const types_js_1 = require("../inputStreams/types.js");
5
+ class NoopSessionStreamManager {
6
+ on(_sessionId, _io, _handler) {
7
+ return { off: () => { } };
8
+ }
9
+ once(_sessionId, _io, _options) {
10
+ return new types_js_1.InputStreamOncePromise(() => {
11
+ // Never resolves in noop mode.
12
+ });
13
+ }
14
+ peek(_sessionId, _io) {
15
+ return undefined;
16
+ }
17
+ lastSeqNum(_sessionId, _io) {
18
+ return undefined;
19
+ }
20
+ setLastSeqNum(_sessionId, _io, _seqNum) { }
21
+ lastDispatchedSeqNum(_sessionId, _io) {
22
+ return undefined;
23
+ }
24
+ setLastDispatchedSeqNum(_sessionId, _io, _seqNum) { }
25
+ setMinTimestamp(_sessionId, _io, _minTimestamp) { }
26
+ shiftBuffer(_sessionId, _io) {
27
+ return false;
28
+ }
29
+ disconnectStream(_sessionId, _io) { }
30
+ clearHandlers() { }
31
+ reset() { }
32
+ disconnect() { }
33
+ }
34
+ exports.NoopSessionStreamManager = NoopSessionStreamManager;
35
+ //# sourceMappingURL=noopManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noopManager.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/noopManager.ts"],"names":[],"mappings":";;;AACA,uDAAkE;AAGlE,MAAa,wBAAwB;IACnC,EAAE,CACA,UAAkB,EAClB,GAAqB,EACrB,QAAiD;QAEjD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CACF,UAAkB,EAClB,GAAqB,EACrB,QAAiC;QAEjC,OAAO,IAAI,iCAAsB,CAAC,GAAG,EAAE;YACrC,+BAA+B;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAkB,EAAE,GAAqB;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,UAAkB,EAAE,GAAqB;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,GAAqB,EAAE,OAAe,IAAS,CAAC;IAElF,oBAAoB,CAAC,UAAkB,EAAE,GAAqB;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uBAAuB,CACrB,UAAkB,EAClB,GAAqB,EACrB,OAAe,IACR,CAAC;IAEV,eAAe,CACb,UAAkB,EAClB,GAAqB,EACrB,aAAiC,IAC1B,CAAC;IAEV,WAAW,CAAC,UAAkB,EAAE,GAAqB;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,UAAkB,EAAE,GAAqB,IAAS,CAAC;IAEpE,aAAa,KAAU,CAAC;IAExB,KAAK,KAAU,CAAC;IAEhB,UAAU,KAAU,CAAC;CACtB;AAxDD,4DAwDC"}
@@ -0,0 +1,65 @@
1
+ import { InputStreamOnceOptions } from "../realtimeStreams/types.js";
2
+ import { InputStreamOncePromise, InputStreamOnceResult, InputStreamTimeoutError } from "../inputStreams/types.js";
3
+ /**
4
+ * Re-export the run-scoped input stream once-promise machinery so callers
5
+ * depending on sessionStreams don't also need to import from inputStreams.
6
+ * Both APIs return the same shape.
7
+ */
8
+ export { InputStreamOncePromise, InputStreamTimeoutError };
9
+ export type { InputStreamOnceResult };
10
+ export type SessionChannelIO = "out" | "in";
11
+ /**
12
+ * Manager for Session channel reads: a session-scoped parallel to
13
+ * {@link InputStreamManager} keyed on `(sessionId, io)` instead of
14
+ * `(runId, streamId)`. Used by {@link SessionChannel} to implement
15
+ * `.on` / `.once` / `.peek` / `.wait` / `.waitWithIdleTimeout`.
16
+ */
17
+ export interface SessionStreamManager {
18
+ /** Register a handler that fires every time data arrives on the given channel. */
19
+ on(sessionId: string, io: SessionChannelIO, handler: (data: unknown) => void | Promise<void>): {
20
+ off: () => void;
21
+ };
22
+ /** Wait for the next record on the given channel (buffered or live). */
23
+ once(sessionId: string, io: SessionChannelIO, options?: InputStreamOnceOptions): InputStreamOncePromise<unknown>;
24
+ /** Non-blocking peek at the head of the channel buffer. */
25
+ peek(sessionId: string, io: SessionChannelIO): unknown | undefined;
26
+ /** Last S2 sequence number seen on the given channel. */
27
+ lastSeqNum(sessionId: string, io: SessionChannelIO): number | undefined;
28
+ /** Advance the last-seen sequence number (prevents SSE replay after `.wait` resume). */
29
+ setLastSeqNum(sessionId: string, io: SessionChannelIO, seqNum: number): void;
30
+ /**
31
+ * Highest sequence number that has been *consumed* on the channel —
32
+ * delivered to a `once()` waiter or shifted off the buffer into one.
33
+ * Distinct from {@link lastSeqNum}, which advances on every received
34
+ * record regardless of whether anything consumed it. Used by
35
+ * `chat.agent` to persist the `.in` resume cursor on each
36
+ * `turn-complete` control record so the next worker boot can resume
37
+ * the channel from this point without replaying processed messages.
38
+ */
39
+ lastDispatchedSeqNum(sessionId: string, io: SessionChannelIO): number | undefined;
40
+ /**
41
+ * Seed the committed-consume cursor at worker boot — e.g. from the
42
+ * `session-in-event-id` header on the latest `turn-complete` on
43
+ * `.out`. Monotonic: only ever advances forward, never backwards.
44
+ */
45
+ setLastDispatchedSeqNum(sessionId: string, io: SessionChannelIO, seqNum: number): void;
46
+ /**
47
+ * Set a per-stream lower-bound SSE timestamp. Records whose timestamp
48
+ * is `<= minTimestamp` are dropped before dispatch. Used by chat.agent
49
+ * on OOM-retry boot to skip session.in records belonging to turns
50
+ * that already completed on the prior attempt.
51
+ *
52
+ * Pass `undefined` to clear the filter.
53
+ */
54
+ setMinTimestamp(sessionId: string, io: SessionChannelIO, minTimestamp: number | undefined): void;
55
+ /** Remove and discard the first buffered record. Returns true if one was removed. */
56
+ shiftBuffer(sessionId: string, io: SessionChannelIO): boolean;
57
+ /** Abort the SSE tail and clear the buffer. Called before `.wait` suspends. */
58
+ disconnectStream(sessionId: string, io: SessionChannelIO): void;
59
+ /** Clear all `.on` handlers; abort tails without pending once-waiters. */
60
+ clearHandlers(): void;
61
+ /** Reset state between task executions. */
62
+ reset(): void;
63
+ /** Disconnect every tail. */
64
+ disconnect(): void;
65
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InputStreamTimeoutError = exports.InputStreamOncePromise = void 0;
4
+ const types_js_1 = require("../inputStreams/types.js");
5
+ Object.defineProperty(exports, "InputStreamOncePromise", { enumerable: true, get: function () { return types_js_1.InputStreamOncePromise; } });
6
+ Object.defineProperty(exports, "InputStreamTimeoutError", { enumerable: true, get: function () { return types_js_1.InputStreamTimeoutError; } });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/types.ts"],"names":[],"mappings":";;;AACA,uDAIkC;AAOzB,uGAVP,iCAAsB,OAUO;AAAE,wGAR/B,kCAAuB,OAQ+B"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Wire-format constants for records on `session.out` / `session.in`.
3
+ *
4
+ * Three kinds of records can appear on a Session stream:
5
+ *
6
+ * 1. **Data records** — JSON body shaped as `{data: <UIMessageChunk>, id:
7
+ * <partId>}`, no special headers. The substance of the conversation.
8
+ *
9
+ * 2. **Trigger control records** — empty body, `headers` carry `[
10
+ * ["trigger-control", <subtype>], ...]` plus any subtype-specific sibling
11
+ * headers (e.g. `public-access-token` on `turn-complete`). Routed to a
12
+ * consumer's `onControl` callback; never surfaced as data chunks.
13
+ *
14
+ * 3. **S2 command records** — opaque body, `headers` first entry has an
15
+ * empty name (only valid for S2-interpreted directives like `trim` and
16
+ * `fence`). Filtered out at the SSE parser; consumers never see them.
17
+ *
18
+ * See `docs/ai-chat/client-protocol.mdx#records-on-session-out` for the
19
+ * customer-facing contract.
20
+ */
21
+ /** Header name carrying the Trigger control subtype on control records. */
22
+ export declare const TRIGGER_CONTROL_HEADER: "trigger-control";
23
+ /** Header name carrying the refreshed `publicAccessToken` on `turn-complete`. */
24
+ export declare const PUBLIC_ACCESS_TOKEN_HEADER: "public-access-token";
25
+ /** Header name carrying the agent's last S2 event id on a handover bridge. */
26
+ export declare const SESSION_STATE_LAST_EVENT_ID_HEADER: "last-event-id";
27
+ /**
28
+ * Header on `turn-complete` records carrying the highest `session.in`
29
+ * seq_num the agent committed to processing during this turn. Read on
30
+ * the next worker boot to seed `.in`'s resume cursor — anything past
31
+ * this seq is new and gets delivered; anything at-or-before was already
32
+ * processed and is skipped. Decimal-string form of the seq_num.
33
+ *
34
+ * Omitted when no `.in` records have been consumed yet (first turn of a
35
+ * fresh chat triggered via the wire payload).
36
+ */
37
+ export declare const SESSION_IN_EVENT_ID_HEADER: "session-in-event-id";
38
+ export declare const TRIGGER_CONTROL_SUBTYPE: {
39
+ readonly TURN_COMPLETE: "turn-complete";
40
+ readonly UPGRADE_REQUIRED: "upgrade-required";
41
+ };
42
+ export type TriggerControlSubtype = (typeof TRIGGER_CONTROL_SUBTYPE)[keyof typeof TRIGGER_CONTROL_SUBTYPE];
43
+ /** Read a single header value by name. Returns the first match. */
44
+ export declare function headerValue(headers: ReadonlyArray<readonly [string, string]> | undefined, name: string): string | undefined;
45
+ /**
46
+ * Return the Trigger control subtype carried by a record's headers, if any.
47
+ * Returns `undefined` for data records and S2 command records.
48
+ */
49
+ export declare function controlSubtype(headers: ReadonlyArray<readonly [string, string]> | undefined): string | undefined;
50
+ /**
51
+ * Is this record an S2 command record? Detected via the empty-name first
52
+ * header, which S2 permits only for command records (trim/fence).
53
+ */
54
+ export declare function isS2CommandRecord(headers: ReadonlyArray<readonly [string, string]> | undefined): boolean;
55
+ /** Event payload delivered to a Session-stream `onControl` callback. */
56
+ export type ControlEvent = {
57
+ /** Subtype value from the `trigger-control` header (e.g. `turn-complete`). */
58
+ subtype: string;
59
+ /** All headers on the underlying record. Read additional metadata here. */
60
+ headers: ReadonlyArray<readonly [string, string]>;
61
+ /** S2 sequence number of the control record. */
62
+ seqNum: number;
63
+ /** S2 arrival timestamp of the control record (ms since epoch). */
64
+ timestamp: number;
65
+ };
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * Wire-format constants for records on `session.out` / `session.in`.
4
+ *
5
+ * Three kinds of records can appear on a Session stream:
6
+ *
7
+ * 1. **Data records** — JSON body shaped as `{data: <UIMessageChunk>, id:
8
+ * <partId>}`, no special headers. The substance of the conversation.
9
+ *
10
+ * 2. **Trigger control records** — empty body, `headers` carry `[
11
+ * ["trigger-control", <subtype>], ...]` plus any subtype-specific sibling
12
+ * headers (e.g. `public-access-token` on `turn-complete`). Routed to a
13
+ * consumer's `onControl` callback; never surfaced as data chunks.
14
+ *
15
+ * 3. **S2 command records** — opaque body, `headers` first entry has an
16
+ * empty name (only valid for S2-interpreted directives like `trim` and
17
+ * `fence`). Filtered out at the SSE parser; consumers never see them.
18
+ *
19
+ * See `docs/ai-chat/client-protocol.mdx#records-on-session-out` for the
20
+ * customer-facing contract.
21
+ */
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;
24
+ exports.headerValue = headerValue;
25
+ exports.controlSubtype = controlSubtype;
26
+ exports.isS2CommandRecord = isS2CommandRecord;
27
+ /** Header name carrying the Trigger control subtype on control records. */
28
+ exports.TRIGGER_CONTROL_HEADER = "trigger-control";
29
+ /** Header name carrying the refreshed `publicAccessToken` on `turn-complete`. */
30
+ exports.PUBLIC_ACCESS_TOKEN_HEADER = "public-access-token";
31
+ /** Header name carrying the agent's last S2 event id on a handover bridge. */
32
+ exports.SESSION_STATE_LAST_EVENT_ID_HEADER = "last-event-id";
33
+ /**
34
+ * Header on `turn-complete` records carrying the highest `session.in`
35
+ * seq_num the agent committed to processing during this turn. Read on
36
+ * the next worker boot to seed `.in`'s resume cursor — anything past
37
+ * this seq is new and gets delivered; anything at-or-before was already
38
+ * processed and is skipped. Decimal-string form of the seq_num.
39
+ *
40
+ * Omitted when no `.in` records have been consumed yet (first turn of a
41
+ * fresh chat triggered via the wire payload).
42
+ */
43
+ exports.SESSION_IN_EVENT_ID_HEADER = "session-in-event-id";
44
+ exports.TRIGGER_CONTROL_SUBTYPE = {
45
+ TURN_COMPLETE: "turn-complete",
46
+ UPGRADE_REQUIRED: "upgrade-required",
47
+ };
48
+ /** Read a single header value by name. Returns the first match. */
49
+ function headerValue(headers, name) {
50
+ if (!headers)
51
+ return undefined;
52
+ for (const entry of headers) {
53
+ if (entry?.[0] === name)
54
+ return entry[1];
55
+ }
56
+ return undefined;
57
+ }
58
+ /**
59
+ * Return the Trigger control subtype carried by a record's headers, if any.
60
+ * Returns `undefined` for data records and S2 command records.
61
+ */
62
+ function controlSubtype(headers) {
63
+ return headerValue(headers, exports.TRIGGER_CONTROL_HEADER);
64
+ }
65
+ /**
66
+ * Is this record an S2 command record? Detected via the empty-name first
67
+ * header, which S2 permits only for command records (trim/fence).
68
+ */
69
+ function isS2CommandRecord(headers) {
70
+ return headers?.[0]?.[0] === "";
71
+ }
72
+ //# sourceMappingURL=wireProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wireProtocol.js","sourceRoot":"","sources":["../../../../src/v3/sessionStreams/wireProtocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAgCH,kCASC;AAMD,wCAIC;AAMD,8CAIC;AA3DD,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,SAAgB,WAAW,CACzB,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,SAAgB,cAAc,CAC5B,OAA6D;IAE7D,OAAO,WAAW,CAAC,OAAO,EAAE,8BAAsB,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,OAA6D;IAE7D,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAClC,CAAC"}
@@ -5,6 +5,7 @@ export declare class TaskContextAPI {
5
5
  #private;
6
6
  private static _instance?;
7
7
  private _runDisabled;
8
+ private _conversationId?;
8
9
  private constructor();
9
10
  static getInstance(): TaskContextAPI;
10
11
  get isInsideTask(): boolean;
@@ -13,6 +14,9 @@ export declare class TaskContextAPI {
13
14
  get worker(): ServerBackgroundWorker | undefined;
14
15
  get isWarmStart(): boolean | undefined;
15
16
  get attributes(): Attributes;
17
+ get conversationAttributes(): Attributes;
18
+ get conversationId(): string | undefined;
19
+ setConversationId(conversationId: string | undefined): void;
16
20
  get resourceAttributes(): Attributes;
17
21
  get workerAttributes(): Attributes;
18
22
  get contextAttributes(): Attributes;
@@ -7,6 +7,7 @@ const API_NAME = "task-context";
7
7
  class TaskContextAPI {
8
8
  static _instance;
9
9
  _runDisabled = false;
10
+ _conversationId;
10
11
  constructor() { }
11
12
  static getInstance() {
12
13
  if (!this._instance) {
@@ -34,11 +35,23 @@ class TaskContextAPI {
34
35
  return {
35
36
  ...this.contextAttributes,
36
37
  ...this.workerAttributes,
38
+ ...this.conversationAttributes,
37
39
  [semanticInternalAttributes_js_1.SemanticInternalAttributes.WARM_START]: !!this.isWarmStart,
38
40
  };
39
41
  }
40
42
  return {};
41
43
  }
44
+ get conversationAttributes() {
45
+ if (!this._conversationId)
46
+ return {};
47
+ return { [semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]: this._conversationId };
48
+ }
49
+ get conversationId() {
50
+ return this._conversationId;
51
+ }
52
+ setConversationId(conversationId) {
53
+ this._conversationId = conversationId || undefined;
54
+ }
42
55
  get resourceAttributes() {
43
56
  if (this.ctx) {
44
57
  return {
@@ -89,6 +102,11 @@ class TaskContextAPI {
89
102
  }
90
103
  setGlobalTaskContext(taskContext) {
91
104
  this._runDisabled = false;
105
+ // Each run boot re-registers the global; clear any conversation id
106
+ // left over from a previous run on this warm-restarted process so
107
+ // attributes don't bleed across runs that don't call
108
+ // `setConversationId` themselves.
109
+ this._conversationId = undefined;
92
110
  return (0, globals_js_1.registerGlobal)(API_NAME, taskContext, true);
93
111
  }
94
112
  #getTaskContext() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/taskContext/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/taskContext/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const globals_js_1 = require("../utils/globals.js");
5
+ const semanticInternalAttributes_js_1 = require("../semanticInternalAttributes.js");
6
+ const index_js_1 = require("./index.js");
7
+ const FAKE_CTX = {
8
+ attempt: { id: "attempt_1", number: 1, startedAt: new Date(), status: "EXECUTING" },
9
+ run: {
10
+ id: "run_1",
11
+ payload: undefined,
12
+ payloadType: "application/json",
13
+ context: undefined,
14
+ createdAt: new Date(),
15
+ tags: [],
16
+ isTest: false,
17
+ isReplay: false,
18
+ startedAt: new Date(),
19
+ durationMs: 0,
20
+ costInCents: 0,
21
+ baseCostInCents: 0,
22
+ },
23
+ task: { id: "my-task", filePath: "src/trigger/task.ts", exportName: "myTask" },
24
+ queue: { id: "queue_1", name: "default" },
25
+ environment: { id: "env_1", slug: "dev", type: "DEVELOPMENT" },
26
+ organization: { id: "org_1", slug: "acme", name: "Acme" },
27
+ project: { id: "proj_1", ref: "proj_xyz", slug: "demo", name: "Demo" },
28
+ machine: {
29
+ name: "small-1x",
30
+ cpu: 0.5,
31
+ memory: 0.5,
32
+ centsPerMs: 0.0001,
33
+ },
34
+ };
35
+ const FAKE_WORKER = { id: "worker_1", version: "1.0.0", contentHash: "abc" };
36
+ (0, vitest_1.describe)("TaskContextAPI conversation id", () => {
37
+ (0, vitest_1.afterEach)(() => {
38
+ (0, globals_js_1.unregisterGlobal)("task-context");
39
+ index_js_1.TaskContextAPI.getInstance().setConversationId(undefined);
40
+ });
41
+ (0, vitest_1.it)("returns no conversation attribute when setConversationId was never called", () => {
42
+ const api = index_js_1.TaskContextAPI.getInstance();
43
+ api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
44
+ (0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBeUndefined();
45
+ });
46
+ (0, vitest_1.it)("includes gen_ai.conversation.id after setConversationId", () => {
47
+ const api = index_js_1.TaskContextAPI.getInstance();
48
+ api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
49
+ api.setConversationId("chat_123");
50
+ (0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBe("chat_123");
51
+ });
52
+ (0, vitest_1.it)("clears the conversation attribute when called with undefined", () => {
53
+ const api = index_js_1.TaskContextAPI.getInstance();
54
+ api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
55
+ api.setConversationId("chat_123");
56
+ api.setConversationId(undefined);
57
+ (0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBeUndefined();
58
+ (0, vitest_1.expect)(api.conversationId).toBeUndefined();
59
+ });
60
+ (0, vitest_1.it)("returns no attributes when there is no task context", () => {
61
+ const api = index_js_1.TaskContextAPI.getInstance();
62
+ api.setConversationId("chat_123");
63
+ (0, vitest_1.expect)(api.attributes).toEqual({});
64
+ });
65
+ (0, vitest_1.it)("clears conversation id when a new task context is registered (warm restart)", () => {
66
+ const api = index_js_1.TaskContextAPI.getInstance();
67
+ api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
68
+ api.setConversationId("chat_old");
69
+ api.setGlobalTaskContext({ ctx: FAKE_CTX, worker: FAKE_WORKER });
70
+ (0, vitest_1.expect)(api.attributes[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID]).toBeUndefined();
71
+ });
72
+ });
73
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/v3/taskContext/index.test.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,13 @@ class TaskContextSpanProcessor {
22
22
  if (!task_context_api_js_1.taskContext.isRunDisabled && task_context_api_js_1.taskContext.ctx.run.tags?.length) {
23
23
  span.setAttribute(semanticInternalAttributes_js_1.SemanticInternalAttributes.RUN_TAGS, task_context_api_js_1.taskContext.ctx.run.tags);
24
24
  }
25
+ // Stamp `gen_ai.conversation.id` (OTel GenAI semantic convention)
26
+ // directly on every span so it survives the OTLP ingest's `ctx.*`
27
+ // strip and lands in the stored attributes column without a schema
28
+ // migration.
29
+ if (task_context_api_js_1.taskContext.conversationId) {
30
+ span.setAttribute(semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID, task_context_api_js_1.taskContext.conversationId);
31
+ }
25
32
  }
26
33
  if (!isPartialSpan(span) && !skipPartialSpan(span)) {
27
34
  const partialSpan = createPartialSpan(this._tracer, span, parentContext);
@@ -137,6 +144,10 @@ class TaskContextMetricExporter {
137
144
  if (!task_context_api_js_1.taskContext.isRunDisabled && ctx.run.tags?.length) {
138
145
  contextAttrs[semanticInternalAttributes_js_1.SemanticInternalAttributes.RUN_TAGS] = ctx.run.tags;
139
146
  }
147
+ if (task_context_api_js_1.taskContext.conversationId) {
148
+ contextAttrs[semanticInternalAttributes_js_1.SemanticInternalAttributes.GEN_AI_CONVERSATION_ID] =
149
+ task_context_api_js_1.taskContext.conversationId;
150
+ }
140
151
  const modified = {
141
152
  resource: metrics.resource,
142
153
  scopeMetrics: metrics.scopeMetrics.map((scope) => ({