openai 7.13.0 → 7.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/client.d.mts +6 -1
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +6 -1
  5. package/client.d.ts.map +1 -1
  6. package/client.js +3 -0
  7. package/client.js.map +1 -1
  8. package/client.mjs +3 -0
  9. package/client.mjs.map +1 -1
  10. package/core/pagination.d.mts +19 -1
  11. package/core/pagination.d.mts.map +1 -1
  12. package/core/pagination.d.ts +19 -1
  13. package/core/pagination.d.ts.map +1 -1
  14. package/core/pagination.js +32 -1
  15. package/core/pagination.js.map +1 -1
  16. package/core/pagination.mjs +30 -0
  17. package/core/pagination.mjs.map +1 -1
  18. package/helpers/live.d.mts +2 -0
  19. package/helpers/live.d.mts.map +1 -0
  20. package/helpers/live.d.ts +2 -0
  21. package/helpers/live.d.ts.map +1 -0
  22. package/helpers/live.js +6 -0
  23. package/helpers/live.js.map +1 -0
  24. package/helpers/live.mjs +2 -0
  25. package/helpers/live.mjs.map +1 -0
  26. package/lib/agents/agent-session-stream.d.mts +41 -0
  27. package/lib/agents/agent-session-stream.d.mts.map +1 -0
  28. package/lib/agents/agent-session-stream.d.ts +41 -0
  29. package/lib/agents/agent-session-stream.d.ts.map +1 -0
  30. package/lib/agents/agent-session-stream.js +271 -0
  31. package/lib/agents/agent-session-stream.js.map +1 -0
  32. package/lib/agents/agent-session-stream.mjs +267 -0
  33. package/lib/agents/agent-session-stream.mjs.map +1 -0
  34. package/lib/agents/output-text.d.mts +4 -0
  35. package/lib/agents/output-text.d.mts.map +1 -0
  36. package/lib/agents/output-text.d.ts +4 -0
  37. package/lib/agents/output-text.d.ts.map +1 -0
  38. package/lib/agents/output-text.js +8 -0
  39. package/lib/agents/output-text.js.map +1 -0
  40. package/lib/agents/output-text.mjs +5 -0
  41. package/lib/agents/output-text.mjs.map +1 -0
  42. package/lib/agents/turn-state.d.mts +14 -0
  43. package/lib/agents/turn-state.d.mts.map +1 -0
  44. package/lib/agents/turn-state.d.ts +14 -0
  45. package/lib/agents/turn-state.d.ts.map +1 -0
  46. package/lib/agents/turn-state.js +62 -0
  47. package/lib/agents/turn-state.js.map +1 -0
  48. package/lib/agents/turn-state.mjs +58 -0
  49. package/lib/agents/turn-state.mjs.map +1 -0
  50. package/lib/live/transcript-grouper.d.mts +96 -0
  51. package/lib/live/transcript-grouper.d.mts.map +1 -0
  52. package/lib/live/transcript-grouper.d.ts +96 -0
  53. package/lib/live/transcript-grouper.d.ts.map +1 -0
  54. package/lib/live/transcript-grouper.js +223 -0
  55. package/lib/live/transcript-grouper.js.map +1 -0
  56. package/lib/live/transcript-grouper.mjs +219 -0
  57. package/lib/live/transcript-grouper.mjs.map +1 -0
  58. package/lib/live/transcript-grouping.d.mts +49 -0
  59. package/lib/live/transcript-grouping.d.mts.map +1 -0
  60. package/lib/live/transcript-grouping.d.ts +49 -0
  61. package/lib/live/transcript-grouping.d.ts.map +1 -0
  62. package/lib/live/transcript-grouping.js +287 -0
  63. package/lib/live/transcript-grouping.js.map +1 -0
  64. package/lib/live/transcript-grouping.mjs +283 -0
  65. package/lib/live/transcript-grouping.mjs.map +1 -0
  66. package/lib/live/webrtc.d.mts +13 -0
  67. package/lib/live/webrtc.d.mts.map +1 -0
  68. package/lib/live/webrtc.d.ts +13 -0
  69. package/lib/live/webrtc.d.ts.map +1 -0
  70. package/lib/live/webrtc.js +16 -0
  71. package/lib/live/webrtc.js.map +1 -0
  72. package/lib/live/webrtc.mjs +10 -0
  73. package/lib/live/webrtc.mjs.map +1 -0
  74. package/lib/realtime/webrtc.d.mts +13 -0
  75. package/lib/realtime/webrtc.d.mts.map +1 -0
  76. package/lib/realtime/webrtc.d.ts +13 -0
  77. package/lib/realtime/webrtc.d.ts.map +1 -0
  78. package/lib/realtime/webrtc.js +16 -0
  79. package/lib/realtime/webrtc.js.map +1 -0
  80. package/lib/realtime/webrtc.mjs +10 -0
  81. package/lib/realtime/webrtc.mjs.map +1 -0
  82. package/lib/webrtc/connection.d.mts +40 -0
  83. package/lib/webrtc/connection.d.mts.map +1 -0
  84. package/lib/webrtc/connection.d.ts +40 -0
  85. package/lib/webrtc/connection.d.ts.map +1 -0
  86. package/lib/webrtc/connection.js +228 -0
  87. package/lib/webrtc/connection.js.map +1 -0
  88. package/lib/webrtc/connection.mjs +224 -0
  89. package/lib/webrtc/connection.mjs.map +1 -0
  90. package/lib/webrtc/data-channel.d.mts +32 -0
  91. package/lib/webrtc/data-channel.d.mts.map +1 -0
  92. package/lib/webrtc/data-channel.d.ts +32 -0
  93. package/lib/webrtc/data-channel.d.ts.map +1 -0
  94. package/lib/webrtc/data-channel.js +125 -0
  95. package/lib/webrtc/data-channel.js.map +1 -0
  96. package/lib/webrtc/data-channel.mjs +121 -0
  97. package/lib/webrtc/data-channel.mjs.map +1 -0
  98. package/lib/webrtc/errors.d.mts +19 -0
  99. package/lib/webrtc/errors.d.mts.map +1 -0
  100. package/lib/webrtc/errors.d.ts +19 -0
  101. package/lib/webrtc/errors.d.ts.map +1 -0
  102. package/lib/webrtc/errors.js +18 -0
  103. package/lib/webrtc/errors.js.map +1 -0
  104. package/lib/webrtc/errors.mjs +14 -0
  105. package/lib/webrtc/errors.mjs.map +1 -0
  106. package/lib/webrtc/subscriptions.d.mts +13 -0
  107. package/lib/webrtc/subscriptions.d.mts.map +1 -0
  108. package/lib/webrtc/subscriptions.d.ts +13 -0
  109. package/lib/webrtc/subscriptions.d.ts.map +1 -0
  110. package/lib/webrtc/subscriptions.js +62 -0
  111. package/lib/webrtc/subscriptions.js.map +1 -0
  112. package/lib/webrtc/subscriptions.mjs +58 -0
  113. package/lib/webrtc/subscriptions.mjs.map +1 -0
  114. package/lib/webrtc/types.d.mts +99 -0
  115. package/lib/webrtc/types.d.mts.map +1 -0
  116. package/lib/webrtc/types.d.ts +99 -0
  117. package/lib/webrtc/types.d.ts.map +1 -0
  118. package/lib/webrtc/types.js +3 -0
  119. package/lib/webrtc/types.js.map +1 -0
  120. package/lib/webrtc/types.mjs +2 -0
  121. package/lib/webrtc/types.mjs.map +1 -0
  122. package/live/webrtc.d.mts +3 -0
  123. package/live/webrtc.d.mts.map +1 -0
  124. package/live/webrtc.d.ts +3 -0
  125. package/live/webrtc.d.ts.map +1 -0
  126. package/live/webrtc.js +8 -0
  127. package/live/webrtc.js.map +1 -0
  128. package/live/webrtc.mjs +2 -0
  129. package/live/webrtc.mjs.map +1 -0
  130. package/package.json +11 -1
  131. package/realtime/webrtc.d.mts +3 -0
  132. package/realtime/webrtc.d.mts.map +1 -0
  133. package/realtime/webrtc.d.ts +3 -0
  134. package/realtime/webrtc.d.ts.map +1 -0
  135. package/realtime/webrtc.js +8 -0
  136. package/realtime/webrtc.js.map +1 -0
  137. package/realtime/webrtc.mjs +2 -0
  138. package/realtime/webrtc.mjs.map +1 -0
  139. package/resources/beta/agents/agents.d.mts +3678 -0
  140. package/resources/beta/agents/agents.d.mts.map +1 -0
  141. package/resources/beta/agents/agents.d.ts +3678 -0
  142. package/resources/beta/agents/agents.d.ts.map +1 -0
  143. package/resources/beta/agents/agents.js +118 -0
  144. package/resources/beta/agents/agents.js.map +1 -0
  145. package/resources/beta/agents/agents.mjs +113 -0
  146. package/resources/beta/agents/agents.mjs.map +1 -0
  147. package/resources/beta/agents/environments/environments.d.mts +65 -0
  148. package/resources/beta/agents/environments/environments.d.mts.map +1 -0
  149. package/resources/beta/agents/environments/environments.d.ts +65 -0
  150. package/resources/beta/agents/environments/environments.d.ts.map +1 -0
  151. package/resources/beta/agents/environments/environments.js +43 -0
  152. package/resources/beta/agents/environments/environments.js.map +1 -0
  153. package/resources/beta/agents/environments/environments.mjs +38 -0
  154. package/resources/beta/agents/environments/environments.mjs.map +1 -0
  155. package/resources/beta/agents/environments/files.d.mts +111 -0
  156. package/resources/beta/agents/environments/files.d.mts.map +1 -0
  157. package/resources/beta/agents/environments/files.d.ts +111 -0
  158. package/resources/beta/agents/environments/files.d.ts.map +1 -0
  159. package/resources/beta/agents/environments/files.js +61 -0
  160. package/resources/beta/agents/environments/files.js.map +1 -0
  161. package/resources/beta/agents/environments/files.mjs +57 -0
  162. package/resources/beta/agents/environments/files.mjs.map +1 -0
  163. package/resources/beta/agents/environments/index.d.mts +4 -0
  164. package/resources/beta/agents/environments/index.d.mts.map +1 -0
  165. package/resources/beta/agents/environments/index.d.ts +4 -0
  166. package/resources/beta/agents/environments/index.d.ts.map +1 -0
  167. package/resources/beta/agents/environments/index.js +11 -0
  168. package/resources/beta/agents/environments/index.js.map +1 -0
  169. package/resources/beta/agents/environments/index.mjs +5 -0
  170. package/resources/beta/agents/environments/index.mjs.map +1 -0
  171. package/resources/beta/agents/environments/templates.d.mts +415 -0
  172. package/resources/beta/agents/environments/templates.d.mts.map +1 -0
  173. package/resources/beta/agents/environments/templates.d.ts +415 -0
  174. package/resources/beta/agents/environments/templates.d.ts.map +1 -0
  175. package/resources/beta/agents/environments/templates.js +112 -0
  176. package/resources/beta/agents/environments/templates.js.map +1 -0
  177. package/resources/beta/agents/environments/templates.mjs +108 -0
  178. package/resources/beta/agents/environments/templates.mjs.map +1 -0
  179. package/resources/beta/agents/environments.d.mts +2 -0
  180. package/resources/beta/agents/environments.d.mts.map +1 -0
  181. package/resources/beta/agents/environments.d.ts +2 -0
  182. package/resources/beta/agents/environments.d.ts.map +1 -0
  183. package/resources/beta/agents/environments.js +6 -0
  184. package/resources/beta/agents/environments.js.map +1 -0
  185. package/resources/beta/agents/environments.mjs +3 -0
  186. package/resources/beta/agents/environments.mjs.map +1 -0
  187. package/resources/beta/agents/index.d.mts +5 -0
  188. package/resources/beta/agents/index.d.mts.map +1 -0
  189. package/resources/beta/agents/index.d.ts +5 -0
  190. package/resources/beta/agents/index.d.ts.map +1 -0
  191. package/resources/beta/agents/index.js +13 -0
  192. package/resources/beta/agents/index.js.map +1 -0
  193. package/resources/beta/agents/index.mjs +6 -0
  194. package/resources/beta/agents/index.mjs.map +1 -0
  195. package/resources/beta/agents/sessions/artifacts.d.mts +158 -0
  196. package/resources/beta/agents/sessions/artifacts.d.mts.map +1 -0
  197. package/resources/beta/agents/sessions/artifacts.d.ts +158 -0
  198. package/resources/beta/agents/sessions/artifacts.d.ts.map +1 -0
  199. package/resources/beta/agents/sessions/artifacts.js +106 -0
  200. package/resources/beta/agents/sessions/artifacts.js.map +1 -0
  201. package/resources/beta/agents/sessions/artifacts.mjs +102 -0
  202. package/resources/beta/agents/sessions/artifacts.mjs.map +1 -0
  203. package/resources/beta/agents/sessions/events.d.mts +61 -0
  204. package/resources/beta/agents/sessions/events.d.mts.map +1 -0
  205. package/resources/beta/agents/sessions/events.d.ts +61 -0
  206. package/resources/beta/agents/sessions/events.d.ts.map +1 -0
  207. package/resources/beta/agents/sessions/events.js +72 -0
  208. package/resources/beta/agents/sessions/events.js.map +1 -0
  209. package/resources/beta/agents/sessions/events.mjs +68 -0
  210. package/resources/beta/agents/sessions/events.mjs.map +1 -0
  211. package/resources/beta/agents/sessions/index.d.mts +7 -0
  212. package/resources/beta/agents/sessions/index.d.mts.map +1 -0
  213. package/resources/beta/agents/sessions/index.d.ts +7 -0
  214. package/resources/beta/agents/sessions/index.d.ts.map +1 -0
  215. package/resources/beta/agents/sessions/index.js +17 -0
  216. package/resources/beta/agents/sessions/index.js.map +1 -0
  217. package/resources/beta/agents/sessions/index.mjs +8 -0
  218. package/resources/beta/agents/sessions/index.mjs.map +1 -0
  219. package/resources/beta/agents/sessions/items.d.mts +37 -0
  220. package/resources/beta/agents/sessions/items.d.mts.map +1 -0
  221. package/resources/beta/agents/sessions/items.d.ts +37 -0
  222. package/resources/beta/agents/sessions/items.d.ts.map +1 -0
  223. package/resources/beta/agents/sessions/items.js +35 -0
  224. package/resources/beta/agents/sessions/items.js.map +1 -0
  225. package/resources/beta/agents/sessions/items.mjs +31 -0
  226. package/resources/beta/agents/sessions/items.mjs.map +1 -0
  227. package/resources/beta/agents/sessions/sessions.d.mts +220 -0
  228. package/resources/beta/agents/sessions/sessions.d.mts.map +1 -0
  229. package/resources/beta/agents/sessions/sessions.d.ts +220 -0
  230. package/resources/beta/agents/sessions/sessions.d.ts.map +1 -0
  231. package/resources/beta/agents/sessions/sessions.js +124 -0
  232. package/resources/beta/agents/sessions/sessions.js.map +1 -0
  233. package/resources/beta/agents/sessions/sessions.mjs +119 -0
  234. package/resources/beta/agents/sessions/sessions.mjs.map +1 -0
  235. package/resources/beta/agents/sessions/subagents/index.d.mts +4 -0
  236. package/resources/beta/agents/sessions/subagents/index.d.mts.map +1 -0
  237. package/resources/beta/agents/sessions/subagents/index.d.ts +4 -0
  238. package/resources/beta/agents/sessions/subagents/index.d.ts.map +1 -0
  239. package/resources/beta/agents/sessions/subagents/index.js +11 -0
  240. package/resources/beta/agents/sessions/subagents/index.js.map +1 -0
  241. package/resources/beta/agents/sessions/subagents/index.mjs +5 -0
  242. package/resources/beta/agents/sessions/subagents/index.mjs.map +1 -0
  243. package/resources/beta/agents/sessions/subagents/items.d.mts +41 -0
  244. package/resources/beta/agents/sessions/subagents/items.d.mts.map +1 -0
  245. package/resources/beta/agents/sessions/subagents/items.d.ts +41 -0
  246. package/resources/beta/agents/sessions/subagents/items.d.ts.map +1 -0
  247. package/resources/beta/agents/sessions/subagents/items.js +36 -0
  248. package/resources/beta/agents/sessions/subagents/items.js.map +1 -0
  249. package/resources/beta/agents/sessions/subagents/items.mjs +32 -0
  250. package/resources/beta/agents/sessions/subagents/items.mjs.map +1 -0
  251. package/resources/beta/agents/sessions/subagents/subagents.d.mts +65 -0
  252. package/resources/beta/agents/sessions/subagents/subagents.d.mts.map +1 -0
  253. package/resources/beta/agents/sessions/subagents/subagents.d.ts +65 -0
  254. package/resources/beta/agents/sessions/subagents/subagents.d.ts.map +1 -0
  255. package/resources/beta/agents/sessions/subagents/subagents.js +67 -0
  256. package/resources/beta/agents/sessions/subagents/subagents.js.map +1 -0
  257. package/resources/beta/agents/sessions/subagents/subagents.mjs +62 -0
  258. package/resources/beta/agents/sessions/subagents/subagents.mjs.map +1 -0
  259. package/resources/beta/agents/sessions/subagents/turns/index.d.mts +3 -0
  260. package/resources/beta/agents/sessions/subagents/turns/index.d.mts.map +1 -0
  261. package/resources/beta/agents/sessions/subagents/turns/index.d.ts +3 -0
  262. package/resources/beta/agents/sessions/subagents/turns/index.d.ts.map +1 -0
  263. package/resources/beta/agents/sessions/subagents/turns/index.js +9 -0
  264. package/resources/beta/agents/sessions/subagents/turns/index.js.map +1 -0
  265. package/resources/beta/agents/sessions/subagents/turns/index.mjs +4 -0
  266. package/resources/beta/agents/sessions/subagents/turns/index.mjs.map +1 -0
  267. package/resources/beta/agents/sessions/subagents/turns/items.d.mts +45 -0
  268. package/resources/beta/agents/sessions/subagents/turns/items.d.mts.map +1 -0
  269. package/resources/beta/agents/sessions/subagents/turns/items.d.ts +45 -0
  270. package/resources/beta/agents/sessions/subagents/turns/items.d.ts.map +1 -0
  271. package/resources/beta/agents/sessions/subagents/turns/items.js +36 -0
  272. package/resources/beta/agents/sessions/subagents/turns/items.js.map +1 -0
  273. package/resources/beta/agents/sessions/subagents/turns/items.mjs +32 -0
  274. package/resources/beta/agents/sessions/subagents/turns/items.mjs.map +1 -0
  275. package/resources/beta/agents/sessions/subagents/turns/turns.d.mts +73 -0
  276. package/resources/beta/agents/sessions/subagents/turns/turns.d.mts.map +1 -0
  277. package/resources/beta/agents/sessions/subagents/turns/turns.d.ts +73 -0
  278. package/resources/beta/agents/sessions/subagents/turns/turns.d.ts.map +1 -0
  279. package/resources/beta/agents/sessions/subagents/turns/turns.js +68 -0
  280. package/resources/beta/agents/sessions/subagents/turns/turns.js.map +1 -0
  281. package/resources/beta/agents/sessions/subagents/turns/turns.mjs +63 -0
  282. package/resources/beta/agents/sessions/subagents/turns/turns.mjs.map +1 -0
  283. package/resources/beta/agents/sessions/subagents/turns.d.mts +2 -0
  284. package/resources/beta/agents/sessions/subagents/turns.d.mts.map +1 -0
  285. package/resources/beta/agents/sessions/subagents/turns.d.ts +2 -0
  286. package/resources/beta/agents/sessions/subagents/turns.d.ts.map +1 -0
  287. package/resources/beta/agents/sessions/subagents/turns.js +6 -0
  288. package/resources/beta/agents/sessions/subagents/turns.js.map +1 -0
  289. package/resources/beta/agents/sessions/subagents/turns.mjs +3 -0
  290. package/resources/beta/agents/sessions/subagents/turns.mjs.map +1 -0
  291. package/resources/beta/agents/sessions/subagents.d.mts +2 -0
  292. package/resources/beta/agents/sessions/subagents.d.mts.map +1 -0
  293. package/resources/beta/agents/sessions/subagents.d.ts +2 -0
  294. package/resources/beta/agents/sessions/subagents.d.ts.map +1 -0
  295. package/resources/beta/agents/sessions/subagents.js +6 -0
  296. package/resources/beta/agents/sessions/subagents.js.map +1 -0
  297. package/resources/beta/agents/sessions/subagents.mjs +3 -0
  298. package/resources/beta/agents/sessions/subagents.mjs.map +1 -0
  299. package/resources/beta/agents/sessions/turns.d.mts +116 -0
  300. package/resources/beta/agents/sessions/turns.d.mts.map +1 -0
  301. package/resources/beta/agents/sessions/turns.d.ts +116 -0
  302. package/resources/beta/agents/sessions/turns.d.ts.map +1 -0
  303. package/resources/beta/agents/sessions/turns.js +57 -0
  304. package/resources/beta/agents/sessions/turns.js.map +1 -0
  305. package/resources/beta/agents/sessions/turns.mjs +53 -0
  306. package/resources/beta/agents/sessions/turns.mjs.map +1 -0
  307. package/resources/beta/agents/sessions.d.mts +2 -0
  308. package/resources/beta/agents/sessions.d.mts.map +1 -0
  309. package/resources/beta/agents/sessions.d.ts +2 -0
  310. package/resources/beta/agents/sessions.d.ts.map +1 -0
  311. package/resources/beta/agents/sessions.js +6 -0
  312. package/resources/beta/agents/sessions.js.map +1 -0
  313. package/resources/beta/agents/sessions.mjs +3 -0
  314. package/resources/beta/agents/sessions.mjs.map +1 -0
  315. package/resources/beta/agents/vaults/credentials.d.mts +526 -0
  316. package/resources/beta/agents/vaults/credentials.d.mts.map +1 -0
  317. package/resources/beta/agents/vaults/credentials.d.ts +526 -0
  318. package/resources/beta/agents/vaults/credentials.d.ts.map +1 -0
  319. package/resources/beta/agents/vaults/credentials.js +132 -0
  320. package/resources/beta/agents/vaults/credentials.js.map +1 -0
  321. package/resources/beta/agents/vaults/credentials.mjs +128 -0
  322. package/resources/beta/agents/vaults/credentials.mjs.map +1 -0
  323. package/resources/beta/agents/vaults/index.d.mts +3 -0
  324. package/resources/beta/agents/vaults/index.d.mts.map +1 -0
  325. package/resources/beta/agents/vaults/index.d.ts +3 -0
  326. package/resources/beta/agents/vaults/index.d.ts.map +1 -0
  327. package/resources/beta/agents/vaults/index.js +9 -0
  328. package/resources/beta/agents/vaults/index.js.map +1 -0
  329. package/resources/beta/agents/vaults/index.mjs +4 -0
  330. package/resources/beta/agents/vaults/index.mjs.map +1 -0
  331. package/resources/beta/agents/vaults/vaults.d.mts +145 -0
  332. package/resources/beta/agents/vaults/vaults.d.mts.map +1 -0
  333. package/resources/beta/agents/vaults/vaults.d.ts +145 -0
  334. package/resources/beta/agents/vaults/vaults.d.ts.map +1 -0
  335. package/resources/beta/agents/vaults/vaults.js +93 -0
  336. package/resources/beta/agents/vaults/vaults.js.map +1 -0
  337. package/resources/beta/agents/vaults/vaults.mjs +88 -0
  338. package/resources/beta/agents/vaults/vaults.mjs.map +1 -0
  339. package/resources/beta/agents/vaults.d.mts +2 -0
  340. package/resources/beta/agents/vaults.d.mts.map +1 -0
  341. package/resources/beta/agents/vaults.d.ts +2 -0
  342. package/resources/beta/agents/vaults.d.ts.map +1 -0
  343. package/resources/beta/agents/vaults.js +6 -0
  344. package/resources/beta/agents/vaults.js.map +1 -0
  345. package/resources/beta/agents/vaults.mjs +3 -0
  346. package/resources/beta/agents/vaults.mjs.map +1 -0
  347. package/resources/beta/agents.d.mts +2 -0
  348. package/resources/beta/agents.d.mts.map +1 -0
  349. package/resources/beta/agents.d.ts +2 -0
  350. package/resources/beta/agents.d.ts.map +1 -0
  351. package/resources/beta/agents.js +6 -0
  352. package/resources/beta/agents.js.map +1 -0
  353. package/resources/beta/agents.mjs +3 -0
  354. package/resources/beta/agents.mjs.map +1 -0
  355. package/resources/beta/beta.d.mts +4 -1
  356. package/resources/beta/beta.d.mts.map +1 -1
  357. package/resources/beta/beta.d.ts +4 -1
  358. package/resources/beta/beta.d.ts.map +1 -1
  359. package/resources/beta/beta.js +4 -0
  360. package/resources/beta/beta.js.map +1 -1
  361. package/resources/beta/beta.mjs +4 -0
  362. package/resources/beta/beta.mjs.map +1 -1
  363. package/resources/beta/index.d.mts +1 -0
  364. package/resources/beta/index.d.mts.map +1 -1
  365. package/resources/beta/index.d.ts +1 -0
  366. package/resources/beta/index.d.ts.map +1 -1
  367. package/resources/beta/index.js +11 -9
  368. package/resources/beta/index.js.map +1 -1
  369. package/resources/beta/index.mjs +1 -0
  370. package/resources/beta/index.mjs.map +1 -1
  371. package/resources/beta/responses/responses.d.mts +48 -0
  372. package/resources/beta/responses/responses.d.mts.map +1 -1
  373. package/resources/beta/responses/responses.d.ts +48 -0
  374. package/resources/beta/responses/responses.d.ts.map +1 -1
  375. package/resources/beta/responses/responses.js.map +1 -1
  376. package/resources/beta/responses/responses.mjs.map +1 -1
  377. package/resources/conversations/items.d.mts +16 -0
  378. package/resources/conversations/items.d.mts.map +1 -1
  379. package/resources/conversations/items.d.ts +16 -0
  380. package/resources/conversations/items.d.ts.map +1 -1
  381. package/resources/index.d.mts +1 -0
  382. package/resources/index.d.mts.map +1 -1
  383. package/resources/index.d.ts +1 -0
  384. package/resources/index.d.ts.map +1 -1
  385. package/resources/index.js +3 -1
  386. package/resources/index.js.map +1 -1
  387. package/resources/index.mjs +1 -0
  388. package/resources/index.mjs.map +1 -1
  389. package/resources/live/forks/forks.d.mts +110 -0
  390. package/resources/live/forks/forks.d.mts.map +1 -0
  391. package/resources/live/forks/forks.d.ts +110 -0
  392. package/resources/live/forks/forks.d.ts.map +1 -0
  393. package/resources/live/forks/forks.js +9 -0
  394. package/resources/live/forks/forks.js.map +1 -0
  395. package/resources/live/forks/forks.mjs +5 -0
  396. package/resources/live/forks/forks.mjs.map +1 -0
  397. package/resources/live/forks/index.d.mts +4 -0
  398. package/resources/live/forks/index.d.mts.map +1 -0
  399. package/resources/live/forks/index.d.ts +4 -0
  400. package/resources/live/forks/index.d.ts.map +1 -0
  401. package/resources/live/forks/index.js +7 -0
  402. package/resources/live/forks/index.js.map +1 -0
  403. package/resources/live/forks/index.mjs +3 -0
  404. package/resources/live/forks/index.mjs.map +1 -0
  405. package/resources/live/forks/internal-base.d.mts +73 -0
  406. package/resources/live/forks/internal-base.d.mts.map +1 -0
  407. package/resources/live/forks/internal-base.d.ts +73 -0
  408. package/resources/live/forks/internal-base.d.ts.map +1 -0
  409. package/resources/live/forks/internal-base.js +49 -0
  410. package/resources/live/forks/internal-base.js.map +1 -0
  411. package/resources/live/forks/internal-base.mjs +43 -0
  412. package/resources/live/forks/internal-base.mjs.map +1 -0
  413. package/resources/live/forks/ws-base.d.mts +109 -0
  414. package/resources/live/forks/ws-base.d.mts.map +1 -0
  415. package/resources/live/forks/ws-base.d.ts +109 -0
  416. package/resources/live/forks/ws-base.d.ts.map +1 -0
  417. package/resources/live/forks/ws-base.js +476 -0
  418. package/resources/live/forks/ws-base.js.map +1 -0
  419. package/resources/live/forks/ws-base.mjs +472 -0
  420. package/resources/live/forks/ws-base.mjs.map +1 -0
  421. package/resources/live/forks/ws.d.mts +13 -0
  422. package/resources/live/forks/ws.d.mts.map +1 -0
  423. package/resources/live/forks/ws.d.ts +13 -0
  424. package/resources/live/forks/ws.d.ts.map +1 -0
  425. package/resources/live/forks/ws.js +34 -0
  426. package/resources/live/forks/ws.js.map +1 -0
  427. package/resources/live/forks/ws.mjs +29 -0
  428. package/resources/live/forks/ws.mjs.map +1 -0
  429. package/resources/live/forks.d.mts +2 -0
  430. package/resources/live/forks.d.mts.map +1 -0
  431. package/resources/live/forks.d.ts +2 -0
  432. package/resources/live/forks.d.ts.map +1 -0
  433. package/resources/live/forks.js +6 -0
  434. package/resources/live/forks.js.map +1 -0
  435. package/resources/live/forks.mjs +3 -0
  436. package/resources/live/forks.mjs.map +1 -0
  437. package/resources/live/index.d.mts +7 -0
  438. package/resources/live/index.d.mts.map +1 -0
  439. package/resources/live/index.d.ts +7 -0
  440. package/resources/live/index.d.ts.map +1 -0
  441. package/resources/live/index.js +13 -0
  442. package/resources/live/index.js.map +1 -0
  443. package/resources/live/index.mjs +6 -0
  444. package/resources/live/index.mjs.map +1 -0
  445. package/resources/live/internal-base.d.mts +71 -0
  446. package/resources/live/internal-base.d.mts.map +1 -0
  447. package/resources/live/internal-base.d.ts +71 -0
  448. package/resources/live/internal-base.d.ts.map +1 -0
  449. package/resources/live/internal-base.js +48 -0
  450. package/resources/live/internal-base.js.map +1 -0
  451. package/resources/live/internal-base.mjs +42 -0
  452. package/resources/live/internal-base.mjs.map +1 -0
  453. package/resources/live/live.d.mts +1864 -0
  454. package/resources/live/live.d.mts.map +1 -0
  455. package/resources/live/live.d.ts +1864 -0
  456. package/resources/live/live.d.ts.map +1 -0
  457. package/resources/live/live.js +40 -0
  458. package/resources/live/live.js.map +1 -0
  459. package/resources/live/live.mjs +35 -0
  460. package/resources/live/live.mjs.map +1 -0
  461. package/resources/live/sessions.d.mts +260 -0
  462. package/resources/live/sessions.d.mts.map +1 -0
  463. package/resources/live/sessions.d.ts +260 -0
  464. package/resources/live/sessions.d.ts.map +1 -0
  465. package/resources/live/sessions.js +124 -0
  466. package/resources/live/sessions.js.map +1 -0
  467. package/resources/live/sessions.mjs +120 -0
  468. package/resources/live/sessions.mjs.map +1 -0
  469. package/resources/live/sideband/index.d.mts +4 -0
  470. package/resources/live/sideband/index.d.mts.map +1 -0
  471. package/resources/live/sideband/index.d.ts +4 -0
  472. package/resources/live/sideband/index.d.ts.map +1 -0
  473. package/resources/live/sideband/index.js +7 -0
  474. package/resources/live/sideband/index.js.map +1 -0
  475. package/resources/live/sideband/index.mjs +3 -0
  476. package/resources/live/sideband/index.mjs.map +1 -0
  477. package/resources/live/sideband/internal-base.d.mts +73 -0
  478. package/resources/live/sideband/internal-base.d.mts.map +1 -0
  479. package/resources/live/sideband/internal-base.d.ts +73 -0
  480. package/resources/live/sideband/internal-base.d.ts.map +1 -0
  481. package/resources/live/sideband/internal-base.js +49 -0
  482. package/resources/live/sideband/internal-base.js.map +1 -0
  483. package/resources/live/sideband/internal-base.mjs +43 -0
  484. package/resources/live/sideband/internal-base.mjs.map +1 -0
  485. package/resources/live/sideband/sideband.d.mts +25 -0
  486. package/resources/live/sideband/sideband.d.mts.map +1 -0
  487. package/resources/live/sideband/sideband.d.ts +25 -0
  488. package/resources/live/sideband/sideband.d.ts.map +1 -0
  489. package/resources/live/sideband/sideband.js +9 -0
  490. package/resources/live/sideband/sideband.js.map +1 -0
  491. package/resources/live/sideband/sideband.mjs +5 -0
  492. package/resources/live/sideband/sideband.mjs.map +1 -0
  493. package/resources/live/sideband/ws-base.d.mts +114 -0
  494. package/resources/live/sideband/ws-base.d.mts.map +1 -0
  495. package/resources/live/sideband/ws-base.d.ts +114 -0
  496. package/resources/live/sideband/ws-base.d.ts.map +1 -0
  497. package/resources/live/sideband/ws-base.js +476 -0
  498. package/resources/live/sideband/ws-base.js.map +1 -0
  499. package/resources/live/sideband/ws-base.mjs +472 -0
  500. package/resources/live/sideband/ws-base.mjs.map +1 -0
  501. package/resources/live/sideband/ws.d.mts +13 -0
  502. package/resources/live/sideband/ws.d.mts.map +1 -0
  503. package/resources/live/sideband/ws.d.ts +13 -0
  504. package/resources/live/sideband/ws.d.ts.map +1 -0
  505. package/resources/live/sideband/ws.js +34 -0
  506. package/resources/live/sideband/ws.js.map +1 -0
  507. package/resources/live/sideband/ws.mjs +29 -0
  508. package/resources/live/sideband/ws.mjs.map +1 -0
  509. package/resources/live/sideband.d.mts +2 -0
  510. package/resources/live/sideband.d.mts.map +1 -0
  511. package/resources/live/sideband.d.ts +2 -0
  512. package/resources/live/sideband.d.ts.map +1 -0
  513. package/resources/live/sideband.js +6 -0
  514. package/resources/live/sideband.js.map +1 -0
  515. package/resources/live/sideband.mjs +3 -0
  516. package/resources/live/sideband.mjs.map +1 -0
  517. package/resources/live/ws-base.d.mts +106 -0
  518. package/resources/live/ws-base.d.mts.map +1 -0
  519. package/resources/live/ws-base.d.ts +106 -0
  520. package/resources/live/ws-base.d.ts.map +1 -0
  521. package/resources/live/ws-base.js +476 -0
  522. package/resources/live/ws-base.js.map +1 -0
  523. package/resources/live/ws-base.mjs +472 -0
  524. package/resources/live/ws-base.mjs.map +1 -0
  525. package/resources/live/ws.d.mts +13 -0
  526. package/resources/live/ws.d.mts.map +1 -0
  527. package/resources/live/ws.d.ts +13 -0
  528. package/resources/live/ws.d.ts.map +1 -0
  529. package/resources/live/ws.js +34 -0
  530. package/resources/live/ws.js.map +1 -0
  531. package/resources/live/ws.mjs +29 -0
  532. package/resources/live/ws.mjs.map +1 -0
  533. package/resources/live.d.mts +2 -0
  534. package/resources/live.d.mts.map +1 -0
  535. package/resources/live.d.ts +2 -0
  536. package/resources/live.d.ts.map +1 -0
  537. package/resources/live.js +6 -0
  538. package/resources/live.js.map +1 -0
  539. package/resources/live.mjs +3 -0
  540. package/resources/live.mjs.map +1 -0
  541. package/resources/responses/responses.d.mts +48 -0
  542. package/resources/responses/responses.d.mts.map +1 -1
  543. package/resources/responses/responses.d.ts +48 -0
  544. package/resources/responses/responses.d.ts.map +1 -1
  545. package/resources/responses/responses.js.map +1 -1
  546. package/resources/responses/responses.mjs.map +1 -1
  547. package/resources/webhooks/webhooks.d.mts +72 -5
  548. package/resources/webhooks/webhooks.d.mts.map +1 -1
  549. package/resources/webhooks/webhooks.d.ts +72 -5
  550. package/resources/webhooks/webhooks.d.ts.map +1 -1
  551. package/src/client.ts +10 -0
  552. package/src/core/pagination.ts +63 -1
  553. package/src/helpers/live.ts +8 -0
  554. package/src/lib/agents/agent-session-stream.ts +326 -0
  555. package/src/lib/agents/output-text.ts +6 -0
  556. package/src/lib/agents/turn-state.ts +61 -0
  557. package/src/lib/live/transcript-grouper.ts +303 -0
  558. package/src/lib/live/transcript-grouping.ts +362 -0
  559. package/src/lib/live/webrtc.ts +23 -0
  560. package/src/lib/realtime/webrtc.ts +20 -0
  561. package/src/lib/webrtc/connection.ts +309 -0
  562. package/src/lib/webrtc/data-channel.ts +144 -0
  563. package/src/lib/webrtc/errors.ts +38 -0
  564. package/src/lib/webrtc/subscriptions.ts +62 -0
  565. package/src/lib/webrtc/types.ts +109 -0
  566. package/src/live/webrtc.ts +10 -0
  567. package/src/realtime/webrtc.ts +10 -0
  568. package/src/resources/beta/agents/agents.ts +4621 -0
  569. package/src/resources/beta/agents/environments/environments.ts +111 -0
  570. package/src/resources/beta/agents/environments/files.ts +164 -0
  571. package/src/resources/beta/agents/environments/index.ts +19 -0
  572. package/src/resources/beta/agents/environments/templates.ts +537 -0
  573. package/src/resources/beta/agents/environments.ts +3 -0
  574. package/src/resources/beta/agents/index.ts +127 -0
  575. package/src/resources/beta/agents/sessions/artifacts.ts +239 -0
  576. package/src/resources/beta/agents/sessions/events.ts +91 -0
  577. package/src/resources/beta/agents/sessions/index.ts +24 -0
  578. package/src/resources/beta/agents/sessions/items.ts +59 -0
  579. package/src/resources/beta/agents/sessions/sessions.ts +350 -0
  580. package/src/resources/beta/agents/sessions/subagents/index.ts +5 -0
  581. package/src/resources/beta/agents/sessions/subagents/items.ts +65 -0
  582. package/src/resources/beta/agents/sessions/subagents/subagents.ts +113 -0
  583. package/src/resources/beta/agents/sessions/subagents/turns/index.ts +4 -0
  584. package/src/resources/beta/agents/sessions/subagents/turns/items.ts +70 -0
  585. package/src/resources/beta/agents/sessions/subagents/turns/turns.ts +111 -0
  586. package/src/resources/beta/agents/sessions/subagents/turns.ts +3 -0
  587. package/src/resources/beta/agents/sessions/subagents.ts +3 -0
  588. package/src/resources/beta/agents/sessions/turns.ts +159 -0
  589. package/src/resources/beta/agents/sessions.ts +3 -0
  590. package/src/resources/beta/agents/vaults/credentials.ts +687 -0
  591. package/src/resources/beta/agents/vaults/index.ts +29 -0
  592. package/src/resources/beta/agents/vaults/vaults.ts +237 -0
  593. package/src/resources/beta/agents/vaults.ts +3 -0
  594. package/src/resources/beta/agents.ts +3 -0
  595. package/src/resources/beta/beta.ts +207 -0
  596. package/src/resources/beta/index.ts +106 -0
  597. package/src/resources/beta/responses/responses.ts +60 -0
  598. package/src/resources/conversations/items.ts +20 -0
  599. package/src/resources/index.ts +1 -0
  600. package/src/resources/live/api.md +87 -0
  601. package/src/resources/live/forks/forks.ts +169 -0
  602. package/src/resources/live/forks/index.ts +5 -0
  603. package/src/resources/live/forks/internal-base.ts +107 -0
  604. package/src/resources/live/forks/ws-base.ts +611 -0
  605. package/src/resources/live/forks/ws.ts +46 -0
  606. package/src/resources/live/forks.ts +3 -0
  607. package/src/resources/live/index.ts +20 -0
  608. package/src/resources/live/internal-base.ts +104 -0
  609. package/src/resources/live/live.ts +2296 -0
  610. package/src/resources/live/sessions.ts +343 -0
  611. package/src/resources/live/sideband/index.ts +10 -0
  612. package/src/resources/live/sideband/internal-base.ts +107 -0
  613. package/src/resources/live/sideband/sideband.ts +58 -0
  614. package/src/resources/live/sideband/ws-base.ts +621 -0
  615. package/src/resources/live/sideband/ws.ts +46 -0
  616. package/src/resources/live/sideband.ts +3 -0
  617. package/src/resources/live/ws-base.ts +607 -0
  618. package/src/resources/live/ws.ts +42 -0
  619. package/src/resources/live.ts +3 -0
  620. package/src/resources/responses/responses.ts +60 -0
  621. package/src/resources/webhooks/api.md +1 -0
  622. package/src/resources/webhooks/webhooks.ts +82 -3
  623. package/src/version.ts +1 -1
  624. package/version.d.mts +1 -1
  625. package/version.d.ts +1 -1
  626. package/version.js +1 -1
  627. package/version.mjs +1 -1
@@ -0,0 +1,14 @@
1
+ import type { AgentSessionEvent, AgentFunctionCallItem } from "../../resources/beta/agents/agents.mjs";
2
+ /** Tracks one helper invocation's coordinator turn and duplicate deliveries.
3
+ * @internal
4
+ */
5
+ export declare class TurnState {
6
+ #private;
7
+ /** Records a delivery unless its event ID is in the bounded recent window. */
8
+ accept(event: AgentSessionEvent): boolean;
9
+ /** Checks session termination after updating the selected turn state. */
10
+ terminal(event: AgentSessionEvent): boolean;
11
+ /** Returns each tool call once for the full invocation, including subagent turns. */
12
+ call(event: AgentSessionEvent): AgentFunctionCallItem | undefined;
13
+ }
14
+ //# sourceMappingURL=turn-state.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-state.d.mts","sourceRoot":"","sources":["../../src/lib/agents/turn-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,+CAA2C;AAEnG;;GAEG;AACH,qBAAa,SAAS;;IAMpB,8EAA8E;IAC9E,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IA8BzC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IAI3C,qFAAqF;IACrF,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,SAAS;CAYlE"}
@@ -0,0 +1,14 @@
1
+ import type { AgentSessionEvent, AgentFunctionCallItem } from "../../resources/beta/agents/agents.js";
2
+ /** Tracks one helper invocation's coordinator turn and duplicate deliveries.
3
+ * @internal
4
+ */
5
+ export declare class TurnState {
6
+ #private;
7
+ /** Records a delivery unless its event ID is in the bounded recent window. */
8
+ accept(event: AgentSessionEvent): boolean;
9
+ /** Checks session termination after updating the selected turn state. */
10
+ terminal(event: AgentSessionEvent): boolean;
11
+ /** Returns each tool call once for the full invocation, including subagent turns. */
12
+ call(event: AgentSessionEvent): AgentFunctionCallItem | undefined;
13
+ }
14
+ //# sourceMappingURL=turn-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-state.d.ts","sourceRoot":"","sources":["../../src/lib/agents/turn-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,8CAA2C;AAEnG;;GAEG;AACH,qBAAa,SAAS;;IAMpB,8EAA8E;IAC9E,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IA8BzC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IAI3C,qFAAqF;IACrF,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,SAAS;CAYlE"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var _TurnState_turnID, _TurnState_turnEnded, _TurnState_eventIDs, _TurnState_calls;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TurnState = void 0;
5
+ const tslib_1 = require("../../internal/tslib.js");
6
+ /** Tracks one helper invocation's coordinator turn and duplicate deliveries.
7
+ * @internal
8
+ */
9
+ class TurnState {
10
+ constructor() {
11
+ _TurnState_turnID.set(this, void 0);
12
+ _TurnState_turnEnded.set(this, false);
13
+ _TurnState_eventIDs.set(this, new Set());
14
+ _TurnState_calls.set(this, new Set());
15
+ }
16
+ /** Records a delivery unless its event ID is in the bounded recent window. */
17
+ accept(event) {
18
+ if (tslib_1.__classPrivateFieldGet(this, _TurnState_eventIDs, "f").has(event.event_id)) {
19
+ return false;
20
+ }
21
+ if (tslib_1.__classPrivateFieldGet(this, _TurnState_eventIDs, "f").size === 1024) {
22
+ const oldest = tslib_1.__classPrivateFieldGet(this, _TurnState_eventIDs, "f").values().next();
23
+ if (!oldest.done) {
24
+ tslib_1.__classPrivateFieldGet(this, _TurnState_eventIDs, "f").delete(oldest.value);
25
+ }
26
+ }
27
+ tslib_1.__classPrivateFieldGet(this, _TurnState_eventIDs, "f").add(event.event_id);
28
+ if (event.type === 'agent.session.turn.created' &&
29
+ event.turn.subagent_id === null &&
30
+ tslib_1.__classPrivateFieldGet(this, _TurnState_turnID, "f") === undefined) {
31
+ tslib_1.__classPrivateFieldSet(this, _TurnState_turnID, event.turn_id, "f");
32
+ }
33
+ if ((event.type === 'agent.session.turn.completed' ||
34
+ event.type === 'agent.session.turn.failed' ||
35
+ event.type === 'agent.session.turn.cancelled') &&
36
+ tslib_1.__classPrivateFieldGet(this, _TurnState_turnID, "f") !== undefined &&
37
+ event.turn_id === tslib_1.__classPrivateFieldGet(this, _TurnState_turnID, "f")) {
38
+ tslib_1.__classPrivateFieldSet(this, _TurnState_turnEnded, true, "f");
39
+ }
40
+ return true;
41
+ }
42
+ /** Checks session termination after updating the selected turn state. */
43
+ terminal(event) {
44
+ return event.type === 'agent.session.failed' || (event.type === 'agent.session.idle' && tslib_1.__classPrivateFieldGet(this, _TurnState_turnEnded, "f"));
45
+ }
46
+ /** Returns each tool call once for the full invocation, including subagent turns. */
47
+ call(event) {
48
+ if (event.type !== 'agent.session.turn.item.added' || event.item.type !== 'function_call') {
49
+ return;
50
+ }
51
+ const call = event.item;
52
+ const key = JSON.stringify([call.turn_id, call.call_id]);
53
+ if (tslib_1.__classPrivateFieldGet(this, _TurnState_calls, "f").has(key)) {
54
+ return;
55
+ }
56
+ tslib_1.__classPrivateFieldGet(this, _TurnState_calls, "f").add(key);
57
+ return call;
58
+ }
59
+ }
60
+ exports.TurnState = TurnState;
61
+ _TurnState_turnID = new WeakMap(), _TurnState_turnEnded = new WeakMap(), _TurnState_eventIDs = new WeakMap(), _TurnState_calls = new WeakMap();
62
+ //# sourceMappingURL=turn-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-state.js","sourceRoot":"","sources":["../../src/lib/agents/turn-state.ts"],"names":[],"mappings":";;;;;AAEA;;GAEG;AACH,MAAa,SAAS;IAAtB;QACE,oCAA4B;QAC5B,+BAAa,KAAK,EAAC;QACnB,8BAAY,IAAI,GAAG,EAAU,EAAC;QAC9B,2BAAS,IAAI,GAAG,EAAU,EAAC;IAmD7B,CAAC;IAjDC,8EAA8E;IAC9E,MAAM,CAAC,KAAwB;QAC7B,IAAI,+BAAA,IAAI,2BAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,+BAAA,IAAI,2BAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,+BAAA,IAAI,2BAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,+BAAA,IAAI,2BAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,+BAAA,IAAI,2BAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnC,IACE,KAAK,CAAC,IAAI,KAAK,4BAA4B;YAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI;YAC/B,+BAAA,IAAI,yBAAQ,KAAK,SAAS,EAC1B,CAAC;YACD,+BAAA,IAAI,qBAAW,KAAK,CAAC,OAAO,MAAA,CAAC;QAC/B,CAAC;QACD,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,8BAA8B;YAC5C,KAAK,CAAC,IAAI,KAAK,2BAA2B;YAC1C,KAAK,CAAC,IAAI,KAAK,8BAA8B,CAAC;YAChD,+BAAA,IAAI,yBAAQ,KAAK,SAAS;YAC1B,KAAK,CAAC,OAAO,KAAK,+BAAA,IAAI,yBAAQ,EAC9B,CAAC;YACD,+BAAA,IAAI,wBAAc,IAAI,MAAA,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,QAAQ,CAAC,KAAwB;QAC/B,OAAO,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,+BAAA,IAAI,4BAAW,CAAC,CAAC;IAC3G,CAAC;IAED,qFAAqF;IACrF,IAAI,CAAC,KAAwB;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1F,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,IAAI,+BAAA,IAAI,wBAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,+BAAA,IAAI,wBAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAvDD,8BAuDC"}
@@ -0,0 +1,58 @@
1
+ var _TurnState_turnID, _TurnState_turnEnded, _TurnState_eventIDs, _TurnState_calls;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "../../internal/tslib.mjs";
3
+ /** Tracks one helper invocation's coordinator turn and duplicate deliveries.
4
+ * @internal
5
+ */
6
+ export class TurnState {
7
+ constructor() {
8
+ _TurnState_turnID.set(this, void 0);
9
+ _TurnState_turnEnded.set(this, false);
10
+ _TurnState_eventIDs.set(this, new Set());
11
+ _TurnState_calls.set(this, new Set());
12
+ }
13
+ /** Records a delivery unless its event ID is in the bounded recent window. */
14
+ accept(event) {
15
+ if (__classPrivateFieldGet(this, _TurnState_eventIDs, "f").has(event.event_id)) {
16
+ return false;
17
+ }
18
+ if (__classPrivateFieldGet(this, _TurnState_eventIDs, "f").size === 1024) {
19
+ const oldest = __classPrivateFieldGet(this, _TurnState_eventIDs, "f").values().next();
20
+ if (!oldest.done) {
21
+ __classPrivateFieldGet(this, _TurnState_eventIDs, "f").delete(oldest.value);
22
+ }
23
+ }
24
+ __classPrivateFieldGet(this, _TurnState_eventIDs, "f").add(event.event_id);
25
+ if (event.type === 'agent.session.turn.created' &&
26
+ event.turn.subagent_id === null &&
27
+ __classPrivateFieldGet(this, _TurnState_turnID, "f") === undefined) {
28
+ __classPrivateFieldSet(this, _TurnState_turnID, event.turn_id, "f");
29
+ }
30
+ if ((event.type === 'agent.session.turn.completed' ||
31
+ event.type === 'agent.session.turn.failed' ||
32
+ event.type === 'agent.session.turn.cancelled') &&
33
+ __classPrivateFieldGet(this, _TurnState_turnID, "f") !== undefined &&
34
+ event.turn_id === __classPrivateFieldGet(this, _TurnState_turnID, "f")) {
35
+ __classPrivateFieldSet(this, _TurnState_turnEnded, true, "f");
36
+ }
37
+ return true;
38
+ }
39
+ /** Checks session termination after updating the selected turn state. */
40
+ terminal(event) {
41
+ return event.type === 'agent.session.failed' || (event.type === 'agent.session.idle' && __classPrivateFieldGet(this, _TurnState_turnEnded, "f"));
42
+ }
43
+ /** Returns each tool call once for the full invocation, including subagent turns. */
44
+ call(event) {
45
+ if (event.type !== 'agent.session.turn.item.added' || event.item.type !== 'function_call') {
46
+ return;
47
+ }
48
+ const call = event.item;
49
+ const key = JSON.stringify([call.turn_id, call.call_id]);
50
+ if (__classPrivateFieldGet(this, _TurnState_calls, "f").has(key)) {
51
+ return;
52
+ }
53
+ __classPrivateFieldGet(this, _TurnState_calls, "f").add(key);
54
+ return call;
55
+ }
56
+ }
57
+ _TurnState_turnID = new WeakMap(), _TurnState_turnEnded = new WeakMap(), _TurnState_eventIDs = new WeakMap(), _TurnState_calls = new WeakMap();
58
+ //# sourceMappingURL=turn-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-state.mjs","sourceRoot":"","sources":["../../src/lib/agents/turn-state.ts"],"names":[],"mappings":";;AAEA;;GAEG;AACH,MAAM,OAAO,SAAS;IAAtB;QACE,oCAA4B;QAC5B,+BAAa,KAAK,EAAC;QACnB,8BAAY,IAAI,GAAG,EAAU,EAAC;QAC9B,2BAAS,IAAI,GAAG,EAAU,EAAC;IAmD7B,CAAC;IAjDC,8EAA8E;IAC9E,MAAM,CAAC,KAAwB;QAC7B,IAAI,uBAAA,IAAI,2BAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,uBAAA,IAAI,2BAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,uBAAA,IAAI,2BAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,uBAAA,IAAI,2BAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,uBAAA,IAAI,2BAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnC,IACE,KAAK,CAAC,IAAI,KAAK,4BAA4B;YAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI;YAC/B,uBAAA,IAAI,yBAAQ,KAAK,SAAS,EAC1B,CAAC;YACD,uBAAA,IAAI,qBAAW,KAAK,CAAC,OAAO,MAAA,CAAC;QAC/B,CAAC;QACD,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,8BAA8B;YAC5C,KAAK,CAAC,IAAI,KAAK,2BAA2B;YAC1C,KAAK,CAAC,IAAI,KAAK,8BAA8B,CAAC;YAChD,uBAAA,IAAI,yBAAQ,KAAK,SAAS;YAC1B,KAAK,CAAC,OAAO,KAAK,uBAAA,IAAI,yBAAQ,EAC9B,CAAC;YACD,uBAAA,IAAI,wBAAc,IAAI,MAAA,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,QAAQ,CAAC,KAAwB;QAC/B,OAAO,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,uBAAA,IAAI,4BAAW,CAAC,CAAC;IAC3G,CAAC;IAED,qFAAqF;IACrF,IAAI,CAAC,KAAwB;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1F,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,IAAI,uBAAA,IAAI,wBAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,uBAAA,IAAI,wBAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,96 @@
1
+ import { EventEmitter } from "../../core/EventEmitter.mjs";
2
+ import type { ServerEvent } from "../../resources/live/live.mjs";
3
+ /** Options for the speaker-based transcript grouping policy. */
4
+ export interface TranscriptGrouperOptions {
5
+ /** Minimum source-time gap before promoting buffered assistant text. Default: 500 ms. */
6
+ minTurnSeparationMs?: number;
7
+ /** Assistant transcript inactivity before closing a segment. Default: 2000 ms; not an audio/VAD signal. */
8
+ assistantSilenceMs?: number;
9
+ /** Acknowledgments shorter than this may be suppressed as backchannels. Default: 1000 ms; zero disables suppression. */
10
+ backchannelMaxDurationMs?: number;
11
+ /** Isolation window used to distinguish backchannels from assistant replies. Default: 2000 ms. */
12
+ backchannelIsolationMs?: number;
13
+ /** Extra phrases eligible for backchannel suppression, in addition to the built-in acknowledgments.
14
+ * Normalized like transcript text (case, hyphens, whitespace, and surrounding punctuation).
15
+ * Copied when the grouper is created; the same timing thresholds apply.
16
+ */
17
+ additionalAcknowledgments?: readonly string[];
18
+ }
19
+ /** An immutable SDK projection of spoken text, not a server conversation item. */
20
+ export interface TranscriptSegment {
21
+ /** Stable ID local to this SDK projection; not a server turn or item ID. */
22
+ readonly id: string;
23
+ /** ID of the preceding emitted segment, or null for the first segment. */
24
+ readonly previousId: string | null;
25
+ /** Speaker whose transcript text was grouped. */
26
+ readonly speaker: 'user' | 'assistant';
27
+ /** Complete append-only text; replace the displayed text on each update. */
28
+ readonly text: string;
29
+ /** Start of the first contributing public transcript interval, in session milliseconds. */
30
+ readonly startMs: number;
31
+ /** Latest end of the contributing public transcript intervals; never a playback completion time. */
32
+ readonly endMs: number;
33
+ }
34
+ /** Why a display segment was finalized; none of these proves audible speech completed. */
35
+ export type TranscriptSegmentCloseReason = 'speaker_change' | 'inactivity' | 'timestamp_reset' | 'session_closed' | 'manual';
36
+ /** A final segment snapshot and the reason it will receive no further updates. */
37
+ export interface TranscriptSegmentClosedEvent {
38
+ /** The final immutable segment, including all previously emitted text. */
39
+ readonly segment: TranscriptSegment;
40
+ /** The local grouping decision that finalized the segment. */
41
+ readonly reason: TranscriptSegmentCloseReason;
42
+ }
43
+ /** Events emitted by a TranscriptGrouper. */
44
+ export type TranscriptGrouperEvents = {
45
+ /** First and subsequent complete snapshots of an emitted segment. */
46
+ 'segment.updated': (segment: TranscriptSegment) => void;
47
+ /** Exactly one final snapshot per emitted segment; closed segments are never reopened. */
48
+ 'segment.closed': (event: TranscriptSegmentClosedEvent) => void;
49
+ };
50
+ /**
51
+ * Groups public Live transcript events using speaker and
52
+ * backchannel heuristics. Raw events remain available on your transport.
53
+ *
54
+ * Only session.input_transcript.delta, session.output_transcript.delta and session.closed are
55
+ * consumed. No audio, engine frames, server turn events or internal end markers
56
+ * are required. Ambiguous speaker changes settle for at most 50 ms. When source
57
+ * time stops arriving, a monotonic local clock supplies a best-effort inactivity
58
+ * fallback. Delayed delivery can therefore change grouping; this is not VAD,
59
+ * playback tracking, or a lossless transcript (some backchannels are suppressed).
60
+ *
61
+ * Create one instance per session. Call close() on transport loss or teardown;
62
+ * the grouper never owns or closes your transport and does not reconnect it.
63
+ */
64
+ export declare class TranscriptGrouper extends EventEmitter<TranscriptGrouperEvents> {
65
+ private readonly grouping;
66
+ private readonly seenIds;
67
+ private pending;
68
+ private timer;
69
+ private anchor;
70
+ private lastStartMs;
71
+ private closed;
72
+ private dispatching;
73
+ private readonly updates;
74
+ /** Create a grouper with speaker-based defaults. Invalid timing options throw OpenAIError. */
75
+ constructor(options?: TranscriptGrouperOptions);
76
+ /**
77
+ * Consume one public Live event. Duplicate transcript event IDs and unrelated
78
+ * event types are ignored. Empty text does not count as speech activity.
79
+ * Malformed transcript fields or use after close() throw OpenAIError.
80
+ */
81
+ push(event: ServerEvent): void;
82
+ /**
83
+ * Flush buffered text according to the grouping policy, finalize all emitted
84
+ * segments, and cancel timers. Idempotent; further push() calls fail. Does not
85
+ * close the transport. Invoke before discarding the grouper at session teardown.
86
+ */
87
+ close(): void;
88
+ private finish;
89
+ private commit;
90
+ private flushPending;
91
+ private sourceNow;
92
+ private clearTimer;
93
+ private schedule;
94
+ private dispatch;
95
+ }
96
+ //# sourceMappingURL=transcript-grouper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-grouper.d.mts","sourceRoot":"","sources":["../../src/lib/live/transcript-grouper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oCAAgC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,sCAAkC;AAI7D,gEAAgE;AAChE,MAAM,WAAW,wBAAwB;IACvC,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2GAA2G;IAC3G,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wHAAwH;IACxH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oGAAoG;IACpG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,0FAA0F;AAC1F,MAAM,MAAM,4BAA4B,GACpC,gBAAgB,GAChB,YAAY,GACZ,iBAAiB,GACjB,gBAAgB,GAChB,QAAQ,CAAC;AAEb,kFAAkF;AAClF,MAAM,WAAW,4BAA4B;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C;AAED,6CAA6C;AAE7C,MAAM,MAAM,uBAAuB,GAAG;IACpC,qEAAqE;IACrE,iBAAiB,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACxD,0FAA0F;IAC1F,gBAAgB,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI,CAAC;CACjE,CAAC;AA2CF;;;;;;;;;;;;;GAaG;AAEH,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,uBAAuB,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,MAAM,CAAuD;IACrE,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAEhD,8FAA8F;gBAClF,OAAO,GAAE,wBAA6B;IAMlD;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAuC9B;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,MAAM;IAyBd,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,QAAQ;CAmBjB"}
@@ -0,0 +1,96 @@
1
+ import { EventEmitter } from "../../core/EventEmitter.js";
2
+ import type { ServerEvent } from "../../resources/live/live.js";
3
+ /** Options for the speaker-based transcript grouping policy. */
4
+ export interface TranscriptGrouperOptions {
5
+ /** Minimum source-time gap before promoting buffered assistant text. Default: 500 ms. */
6
+ minTurnSeparationMs?: number;
7
+ /** Assistant transcript inactivity before closing a segment. Default: 2000 ms; not an audio/VAD signal. */
8
+ assistantSilenceMs?: number;
9
+ /** Acknowledgments shorter than this may be suppressed as backchannels. Default: 1000 ms; zero disables suppression. */
10
+ backchannelMaxDurationMs?: number;
11
+ /** Isolation window used to distinguish backchannels from assistant replies. Default: 2000 ms. */
12
+ backchannelIsolationMs?: number;
13
+ /** Extra phrases eligible for backchannel suppression, in addition to the built-in acknowledgments.
14
+ * Normalized like transcript text (case, hyphens, whitespace, and surrounding punctuation).
15
+ * Copied when the grouper is created; the same timing thresholds apply.
16
+ */
17
+ additionalAcknowledgments?: readonly string[];
18
+ }
19
+ /** An immutable SDK projection of spoken text, not a server conversation item. */
20
+ export interface TranscriptSegment {
21
+ /** Stable ID local to this SDK projection; not a server turn or item ID. */
22
+ readonly id: string;
23
+ /** ID of the preceding emitted segment, or null for the first segment. */
24
+ readonly previousId: string | null;
25
+ /** Speaker whose transcript text was grouped. */
26
+ readonly speaker: 'user' | 'assistant';
27
+ /** Complete append-only text; replace the displayed text on each update. */
28
+ readonly text: string;
29
+ /** Start of the first contributing public transcript interval, in session milliseconds. */
30
+ readonly startMs: number;
31
+ /** Latest end of the contributing public transcript intervals; never a playback completion time. */
32
+ readonly endMs: number;
33
+ }
34
+ /** Why a display segment was finalized; none of these proves audible speech completed. */
35
+ export type TranscriptSegmentCloseReason = 'speaker_change' | 'inactivity' | 'timestamp_reset' | 'session_closed' | 'manual';
36
+ /** A final segment snapshot and the reason it will receive no further updates. */
37
+ export interface TranscriptSegmentClosedEvent {
38
+ /** The final immutable segment, including all previously emitted text. */
39
+ readonly segment: TranscriptSegment;
40
+ /** The local grouping decision that finalized the segment. */
41
+ readonly reason: TranscriptSegmentCloseReason;
42
+ }
43
+ /** Events emitted by a TranscriptGrouper. */
44
+ export type TranscriptGrouperEvents = {
45
+ /** First and subsequent complete snapshots of an emitted segment. */
46
+ 'segment.updated': (segment: TranscriptSegment) => void;
47
+ /** Exactly one final snapshot per emitted segment; closed segments are never reopened. */
48
+ 'segment.closed': (event: TranscriptSegmentClosedEvent) => void;
49
+ };
50
+ /**
51
+ * Groups public Live transcript events using speaker and
52
+ * backchannel heuristics. Raw events remain available on your transport.
53
+ *
54
+ * Only session.input_transcript.delta, session.output_transcript.delta and session.closed are
55
+ * consumed. No audio, engine frames, server turn events or internal end markers
56
+ * are required. Ambiguous speaker changes settle for at most 50 ms. When source
57
+ * time stops arriving, a monotonic local clock supplies a best-effort inactivity
58
+ * fallback. Delayed delivery can therefore change grouping; this is not VAD,
59
+ * playback tracking, or a lossless transcript (some backchannels are suppressed).
60
+ *
61
+ * Create one instance per session. Call close() on transport loss or teardown;
62
+ * the grouper never owns or closes your transport and does not reconnect it.
63
+ */
64
+ export declare class TranscriptGrouper extends EventEmitter<TranscriptGrouperEvents> {
65
+ private readonly grouping;
66
+ private readonly seenIds;
67
+ private pending;
68
+ private timer;
69
+ private anchor;
70
+ private lastStartMs;
71
+ private closed;
72
+ private dispatching;
73
+ private readonly updates;
74
+ /** Create a grouper with speaker-based defaults. Invalid timing options throw OpenAIError. */
75
+ constructor(options?: TranscriptGrouperOptions);
76
+ /**
77
+ * Consume one public Live event. Duplicate transcript event IDs and unrelated
78
+ * event types are ignored. Empty text does not count as speech activity.
79
+ * Malformed transcript fields or use after close() throw OpenAIError.
80
+ */
81
+ push(event: ServerEvent): void;
82
+ /**
83
+ * Flush buffered text according to the grouping policy, finalize all emitted
84
+ * segments, and cancel timers. Idempotent; further push() calls fail. Does not
85
+ * close the transport. Invoke before discarding the grouper at session teardown.
86
+ */
87
+ close(): void;
88
+ private finish;
89
+ private commit;
90
+ private flushPending;
91
+ private sourceNow;
92
+ private clearTimer;
93
+ private schedule;
94
+ private dispatch;
95
+ }
96
+ //# sourceMappingURL=transcript-grouper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-grouper.d.ts","sourceRoot":"","sources":["../../src/lib/live/transcript-grouper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mCAAgC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,qCAAkC;AAI7D,gEAAgE;AAChE,MAAM,WAAW,wBAAwB;IACvC,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2GAA2G;IAC3G,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wHAAwH;IACxH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oGAAoG;IACpG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,0FAA0F;AAC1F,MAAM,MAAM,4BAA4B,GACpC,gBAAgB,GAChB,YAAY,GACZ,iBAAiB,GACjB,gBAAgB,GAChB,QAAQ,CAAC;AAEb,kFAAkF;AAClF,MAAM,WAAW,4BAA4B;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C;AAED,6CAA6C;AAE7C,MAAM,MAAM,uBAAuB,GAAG;IACpC,qEAAqE;IACrE,iBAAiB,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACxD,0FAA0F;IAC1F,gBAAgB,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI,CAAC;CACjE,CAAC;AA2CF;;;;;;;;;;;;;GAaG;AAEH,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,uBAAuB,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,MAAM,CAAuD;IACrE,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAEhD,8FAA8F;gBAClF,OAAO,GAAE,wBAA6B;IAMlD;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAuC9B;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,MAAM;IAyBd,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,QAAQ;CAmBjB"}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TranscriptGrouper = void 0;
4
+ const EventEmitter_1 = require("../../core/EventEmitter.js");
5
+ const error_1 = require("../../core/error.js");
6
+ const transcript_grouping_1 = require("./transcript-grouping.js");
7
+ const SETTLE_MS = 50;
8
+ const MAX_TIMEOUT_MS = 2147483647;
9
+ let nextGrouperId = 0;
10
+ function normalizeTranscript(event) {
11
+ const { event_id: id, delta: text, start_ms: startMs, end_ms: endMs } = event;
12
+ const speaker = event.type === 'session.input_transcript.delta' ? 'user' : 'assistant';
13
+ if (typeof id !== 'string' ||
14
+ !id ||
15
+ typeof text !== 'string' ||
16
+ !Number.isSafeInteger(startMs) ||
17
+ startMs < 0 ||
18
+ !Number.isSafeInteger(endMs) ||
19
+ endMs < startMs) {
20
+ throw new error_1.OpenAIError('Invalid Live transcript delta: expected an event ID, text, and a nonnegative timed interval');
21
+ }
22
+ return { id, speaker, text, startMs, endMs, receivedAt: performance.now() };
23
+ }
24
+ function optionsWithDefaults(options) {
25
+ const resolved = {
26
+ minTurnSeparationMs: options.minTurnSeparationMs ?? 500,
27
+ assistantSilenceMs: options.assistantSilenceMs ?? 2000,
28
+ backchannelMaxDurationMs: options.backchannelMaxDurationMs ?? 1000,
29
+ backchannelIsolationMs: options.backchannelIsolationMs ?? 2000,
30
+ };
31
+ for (const [name, value] of Object.entries(resolved)) {
32
+ if (!Number.isFinite(value) || value < 0 || value > MAX_TIMEOUT_MS) {
33
+ throw new error_1.OpenAIError(`${name} must be a finite number between 0 and ${MAX_TIMEOUT_MS}`);
34
+ }
35
+ }
36
+ return { ...resolved, additionalAcknowledgments: options.additionalAcknowledgments ?? [] };
37
+ }
38
+ /**
39
+ * Groups public Live transcript events using speaker and
40
+ * backchannel heuristics. Raw events remain available on your transport.
41
+ *
42
+ * Only session.input_transcript.delta, session.output_transcript.delta and session.closed are
43
+ * consumed. No audio, engine frames, server turn events or internal end markers
44
+ * are required. Ambiguous speaker changes settle for at most 50 ms. When source
45
+ * time stops arriving, a monotonic local clock supplies a best-effort inactivity
46
+ * fallback. Delayed delivery can therefore change grouping; this is not VAD,
47
+ * playback tracking, or a lossless transcript (some backchannels are suppressed).
48
+ *
49
+ * Create one instance per session. Call close() on transport loss or teardown;
50
+ * the grouper never owns or closes your transport and does not reconnect it.
51
+ */
52
+ // oxlint-disable-next-line unicorn/prefer-event-target -- This is the SDK's browser-compatible typed emitter, not node:events.
53
+ class TranscriptGrouper extends EventEmitter_1.EventEmitter {
54
+ /** Create a grouper with speaker-based defaults. Invalid timing options throw OpenAIError. */
55
+ constructor(options = {}) {
56
+ super();
57
+ this.seenIds = new Set();
58
+ this.pending = [];
59
+ this.closed = false;
60
+ this.dispatching = false;
61
+ this.updates = [];
62
+ this.grouping = new transcript_grouping_1.TranscriptGrouping(optionsWithDefaults(options), `segment_${nextGrouperId}`);
63
+ nextGrouperId += 1;
64
+ }
65
+ /**
66
+ * Consume one public Live event. Duplicate transcript event IDs and unrelated
67
+ * event types are ignored. Empty text does not count as speech activity.
68
+ * Malformed transcript fields or use after close() throw OpenAIError.
69
+ */
70
+ push(event) {
71
+ if (this.closed) {
72
+ throw new error_1.OpenAIError('Cannot push events after closing the transcript grouper');
73
+ }
74
+ if (event.type === 'session.closed') {
75
+ this.finish('session_closed');
76
+ return;
77
+ }
78
+ if (event.type !== 'session.input_transcript.delta' && event.type !== 'session.output_transcript.delta') {
79
+ return;
80
+ }
81
+ const fragment = normalizeTranscript(event);
82
+ const { id, startMs, endMs, speaker } = fragment;
83
+ if (this.seenIds.has(id)) {
84
+ return;
85
+ }
86
+ this.seenIds.add(id);
87
+ if (!fragment.text) {
88
+ return;
89
+ }
90
+ const updates = [];
91
+ const [pending] = this.pending;
92
+ if (pending && pending.startMs === startMs && pending.endMs === endMs) {
93
+ this.pending.push(fragment);
94
+ if (this.pending.some((part) => part.speaker !== speaker)) {
95
+ updates.push(...this.flushPending());
96
+ }
97
+ }
98
+ else {
99
+ updates.push(...this.flushPending());
100
+ if (this.grouping.speaker === speaker) {
101
+ updates.push(...this.commit([fragment]));
102
+ }
103
+ else {
104
+ this.pending.push(fragment);
105
+ }
106
+ }
107
+ this.schedule();
108
+ this.dispatch(updates);
109
+ }
110
+ /**
111
+ * Flush buffered text according to the grouping policy, finalize all emitted
112
+ * segments, and cancel timers. Idempotent; further push() calls fail. Does not
113
+ * close the transport. Invoke before discarding the grouper at session teardown.
114
+ */
115
+ close() {
116
+ this.finish('manual');
117
+ }
118
+ finish(reason) {
119
+ if (this.closed) {
120
+ return;
121
+ }
122
+ this.closed = true;
123
+ this.clearTimer();
124
+ const updates = this.flushPending();
125
+ updates.push(...this.grouping.close(this.sourceNow(), reason));
126
+ this.seenIds.clear();
127
+ this.dispatch(updates);
128
+ }
129
+ commit(fragments) {
130
+ const [first] = fragments;
131
+ if (!first) {
132
+ return [];
133
+ }
134
+ const updates = [];
135
+ if (this.lastStartMs !== undefined && first.startMs < this.lastStartMs) {
136
+ updates.push(...this.grouping.close(this.sourceNow(), 'timestamp_reset'));
137
+ this.anchor = undefined;
138
+ }
139
+ this.lastStartMs = first.startMs;
140
+ // Overlapping intervals can end before earlier ones. Preserve the source
141
+ // high-water mark while restarting local inactivity on newly received text.
142
+ this.anchor = {
143
+ sourceMs: Math.max(this.anchor?.sourceMs ?? 0, first.endMs),
144
+ receivedAt: first.receivedAt,
145
+ };
146
+ for (const part of fragments) {
147
+ this.anchor.sourceMs = Math.max(this.anchor.sourceMs, part.endMs);
148
+ this.anchor.receivedAt = Math.max(this.anchor.receivedAt, part.receivedAt);
149
+ }
150
+ updates.push(...this.grouping.process(fragments));
151
+ return updates;
152
+ }
153
+ flushPending() {
154
+ const { pending } = this;
155
+ this.pending = [];
156
+ return this.commit(pending);
157
+ }
158
+ sourceNow() {
159
+ return this.anchor ? this.anchor.sourceMs + Math.max(0, performance.now() - this.anchor.receivedAt) : 0;
160
+ }
161
+ clearTimer() {
162
+ if (this.timer !== undefined) {
163
+ clearTimeout(this.timer);
164
+ }
165
+ this.timer = undefined;
166
+ }
167
+ schedule() {
168
+ this.clearTimer();
169
+ if (this.closed) {
170
+ return;
171
+ }
172
+ const [pending] = this.pending;
173
+ const deadline = this.grouping.deadline();
174
+ // Settle newly arrived text before applying an older inactivity deadline.
175
+ let delay;
176
+ if (pending) {
177
+ delay = pending.receivedAt + SETTLE_MS - performance.now();
178
+ }
179
+ else if (deadline !== undefined) {
180
+ delay = deadline - this.sourceNow();
181
+ }
182
+ if (delay === undefined) {
183
+ return;
184
+ }
185
+ this.timer = setTimeout(() => {
186
+ this.timer = undefined;
187
+ const updates = this.flushPending();
188
+ updates.push(...this.grouping.advance(this.sourceNow()));
189
+ this.schedule();
190
+ this.dispatch(updates);
191
+ }, Math.min(MAX_TIMEOUT_MS, Math.max(0, Math.ceil(delay))));
192
+ const timer = this.timer;
193
+ if (typeof timer === 'object' &&
194
+ timer !== null &&
195
+ 'unref' in timer &&
196
+ typeof timer.unref === 'function') {
197
+ timer.unref();
198
+ }
199
+ }
200
+ dispatch(updates) {
201
+ this.updates.push(...updates);
202
+ if (this.dispatching) {
203
+ return;
204
+ }
205
+ this.dispatching = true;
206
+ try {
207
+ while (this.updates.length) {
208
+ const update = this.updates.shift();
209
+ if (update?.type === 'updated') {
210
+ this._emit('segment.updated', update.segment);
211
+ }
212
+ else if (update) {
213
+ this._emit('segment.closed', { segment: update.segment, reason: update.reason });
214
+ }
215
+ }
216
+ }
217
+ finally {
218
+ this.dispatching = false;
219
+ }
220
+ }
221
+ }
222
+ exports.TranscriptGrouper = TranscriptGrouper;
223
+ //# sourceMappingURL=transcript-grouper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-grouper.js","sourceRoot":"","sources":["../../src/lib/live/transcript-grouper.ts"],"names":[],"mappings":"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"}